Fórum listbox runtime com varios eventos em unit #269094
17/02/2005
0
Nesta unit crio um listbox e adiciono vários eventos...so que nao estou conseguindo.
Quero adicionar os eventos onDrawItem/onDragOver/onDragDrop/onclick...nao estou falando para me ensinar como fazer dragdrop
quero apenas fazer funcionar ele chamar meu metodo....
MinhaUnit.pas
============================================================
procedure CriaListbox(form1: TForm);
begin
listbox:= TListBox.Create(Form1);
Parent := Form1;
listbox.onDrawItem:= desenhaItem;
listbox.onClick := clicou;
listbox.onDragDrop := dragdrop;
end;
procedure desenhaItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
Pinta item do listbox
end;
procedure dragdrop
..
.
.
.
procedure clicou
.....
.
.
.
Delphi_open
Curtir tópico
+ 0Posts
17/02/2005
Massuda
procedure desenhaItem(...); begin ... end; procedure dragdrop(...); begin ... end; procedure clicou(...); begin ... end;
Para contornar esse problema/limitação, você poderia criar uma classe derivada de TListBox que implementa o seu tratamento desses eventos... mas, ao inves de implementar os tratadores desses eventos, você pode dar um override nos métodos que geram esse evento. Por exemplo
type TMeuListBox = class(TListBox) protected procedure Click; override; procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override; end;
Tem um problema apenas: omiti o tratamento de drag&drop porque não tenho certeza se a procedure DragDrop (que gera OnDragDrop) é virtual. Verifico e depois completo isto se for necessário.
Gostei + 0
17/02/2005
Massuda
type TMeuListBox = class(TListBox) protected procedure Click; override; procedure DragDrop(Source: TObject; X, Y: Integer); override; procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override; end; ... procedure TMeuListBox.Click; begin inherited; // seu código aqui end; procedure TMeuListBox.DragDrop(Source: TObject; X, Y: Integer); begin inherited; // seu código aqui end; procedure TMeuListBox.DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); begin inherited; // seu código aqui end;
Gostei + 0
28/03/2005
Diogoalles
li este tópico de voces e estou tentando anexar uma ideia no que preciso, se puderem deem uma olhada no topico abaixo e se tiverem qq sugestão agradeço
[url]http://forum.clubedelphi.net/viewtopic.php?t=60550[/url]
abraço
Diogo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)