Для курсака нужно сообразить такую штуку. Нужно добавить новые поля, свойства и методы (или изменить старые). Кто может подбросить идеи на этот счет? Как можно усовершенствовать ListBox?
по этой теме могу посоветовать глянуть 5005 статей по Delphi и там есть статейка "Прозрачный TListBox" и "Расширение компонента ListBox" И там создается новый объект наследник TListBox с измененными свойствами. Расширение компонента ListBox - довольно просто и хорошо всё описано.
Пытаюсь поместить в компонент код, меняющий цвет текста: Code: 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; В компоненте у меня он выглядит так: Code: 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, а как это сделать, ума не приложу..Хелпаните, кто с таким сталкивался.