ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Дочерний компонент от ListBox (Delphi)
  #1  
Старый 07.12.2009, 11:27
Si{R}ius
Участник форума
Регистрация: 13.11.2008
Сообщений: 131
Провел на форуме:
776255

Репутация: 52
Arrow Дочерний компонент от ListBox (Delphi)

Для курсака нужно сообразить такую штуку. Нужно добавить новые поля, свойства и методы (или изменить старые).

Кто может подбросить идеи на этот счет?
Как можно усовершенствовать ListBox?
 
Ответить с цитированием

  #2  
Старый 07.12.2009, 13:20
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

по этой теме могу посоветовать глянуть 5005 статей по Delphi
и там есть статейка "Прозрачный TListBox" и "Расширение компонента ListBox"
И там создается новый объект наследник TListBox с измененными свойствами.
Расширение компонента ListBox - довольно просто и хорошо всё описано.
 
Ответить с цитированием

  #3  
Старый 25.12.2009, 23:45
Si{R}ius
Участник форума
Регистрация: 13.11.2008
Сообщений: 131
Провел на форуме:
776255

Репутация: 52
По умолчанию

Пытаюсь поместить в компонент код, меняющий цвет текста:

Код:
 procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
   Rect: TRect; State: TOwnerDrawState);
 begin
   with Control as TListBox do
   begin
     Canvas.FillRect(Rect);
     Canvas.Font.Color := TColor(clGreen);
     Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]);
   end;
 end;
В компоненте у меня он выглядит так:

Код:
unit MyListBox;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TMyListBox = class(TListBox)
  private
   { Private declarations }
    FColorText:boolean;
    FCanvas: TControlCanvas;
    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
       Rect: TRect; State: TOwnerDrawState);

  protected
  { Protected declarations }
  procedure setColorText(value:boolean);

  public
  { Public declarations }
  constructor  Create (AOwner:TComponent); override;

  published
  { Published declarations }
  property ColorText: boolean read FColorText write setColorText default false;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TMyListBox]);
end;

constructor  TMyListBox.Create (AOwner:TComponent);
begin
 Inherited Create(AOwner);
  FColorText:=false;
  FCanvas:=TControlCanvas.Create;
  FCanvas.Control:=Self;
end;

 procedure TMyListBox.setColorText (value:boolean);
 begin
   with FCanvas.Control as TListBox do
   begin
     Canvas.FillRect(Rect);
     Canvas.Font.Color := TColor(clGreen);
     Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]);
   end;
 end;
end.
Работать это дело не хочет, судя по всему, нужно применить где-то ListBox1DrawItem, а как это сделать, ума не приложу..Хелпаните, кто с таким сталкивался.
 
Ответить с цитированием

  #4  
Старый 26.12.2009, 13:22
Si{R}ius
Участник форума
Регистрация: 13.11.2008
Сообщений: 131
Провел на форуме:
776255

Репутация: 52
По умолчанию

Где в этом коде можно объявить процедуру DrawItem?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент для работы с HTTPS Chrome~ С/С++, C#, Delphi, .NET, Asm 13 04.10.2009 11:12
Компонент чужого окна Mirovan С/С++, C#, Delphi, .NET, Asm 2 26.06.2009 15:34
Массив стрктур, Listbox и другое C++ fire64 С/С++, C#, Delphi, .NET, Asm 4 13.06.2009 18:56
Microsoft опубликовала патч, который сильно усложнил использование ActiveX компонент D1mOn Мировые новости 9 03.04.2006 23:11



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ