listbox create

Delphi

17/02/2005

MinhaUnit.pas
===============================================
procedure CriaListbox(form1: TForm);
begin
listbox:= TListBox.Create(Form1);
Parent := Form1;

listbox.onDrawItem:= desenhaItem;


end;

procedure desenhaItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
Pinta item do listbox

end;

ele dá pau porque nao to passando os parametros em
listbox.onDrawItem:= desenhaItem(......);
so que como irei passar estes parametros.....lembrando que isto e uma unit.....nao form


Delphi_open

Delphi_open

Curtidas 0

Respostas

Beppe

Beppe

17/02/2005

O ´pau´ é que um evento exige um método(que por definição está implementado em uma classe).

Está um pouco incompleto o código que passou, mas eu dei uma ´incrementada´:

var
  listbox: TListBox;

procedure desenhaItem(Sender: TObject; Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
// pode remover esta linha
TForm(Sender).Caption := Control.ClassName;
end;

procedure CriaListbox(form1: TForm);
var
  OnDraw: TMethod;
begin
listbox:= TListBox.Create(Form1);
listbox.Parent := Form1;
listbox.Style := lbOwnerDrawFixed;

// pode remover estas 2 linhas
listbox.Items.Add(´um´);
listbox.Items.Add(´dois´);

OnDraw.Code := @desenhaItem;
OnDraw.Data := form1;
listbox.onDrawItem:= TDrawItemEvent(ondraw);


end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  CriaListbox(Self);
end;


Perceba o primeiro parâmetro da rotina desenhaItem. Ele receberá o valor de OnDraw.Data.

[]´s


GOSTEI 0
POSTAR