Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Дочерний компонент от ListBox (Delphi) |

07.12.2009, 11:27
|
|
Участник форума
Регистрация: 13.11.2008
Сообщений: 131
Провел на форуме: 776255
Репутация:
52
|
|
Дочерний компонент от ListBox (Delphi)
Для курсака нужно сообразить такую штуку. Нужно добавить новые поля, свойства и методы (или изменить старые).
Кто может подбросить идеи на этот счет?
Как можно усовершенствовать ListBox?
|
|
|

07.12.2009, 13:20
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
по этой теме могу посоветовать глянуть 5005 статей по Delphi
и там есть статейка "Прозрачный TListBox" и "Расширение компонента ListBox"
И там создается новый объект наследник TListBox с измененными свойствами.
Расширение компонента ListBox - довольно просто и хорошо всё описано.
|
|
|

25.12.2009, 23:45
|
|
Участник форума
Регистрация: 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, а как это сделать, ума не приложу..Хелпаните, кто с таким сталкивался.
|
|
|

26.12.2009, 13:22
|
|
Участник форума
Регистрация: 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)
|
|
|
|