26. april 2003 - 11:47
Der er
4 kommentarer og
1 løsning
duble klik
Hej
Jeg har et komponent hvor der ikke er en ondubleklik funktion men kun en almindelig onclik, så kan man ikke lave sådan at man skal dubleklik før det virker??
26. april 2003 - 12:32
#1
Ofte kan man lave et nyt component der bygger på det gamle hvor der er tilføjet en dblClickEvent.
F.eks. har TShape ikke en DblClikEvent men den tilføjes på følgende måde
Du laver en unit med følgende indhold:
//******************************************************
unit newShape;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TMyShape = class(TShape)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
Property OnDblClick;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TMyShape]);
end;
end.
//******************************************************
Denne unit gemmer du og registrerer som et nyt component.
Når det er installeret har du et component der hedder TMyShape som findes under Samples, Det fungerer fuldstændigt som TShape bortset fra den nye event
//Erik
26. april 2003 - 14:19
#3
Du kan sikkert også indsætte linien
Property OnDblClick;
det rigtige sted i dit components kode.
Du kan sikkert finde andre steder hvor der står "property" og prøve at sætte den ind der.
Derefter må du geninstallere komponentet.
Disse to måder er absolut de mest regulære.
En mere hjemmestrikket metode er:
Indsæt f.eks. en TButton som heller ikke har en dblClick property
Desuden en TTimer.
enabled = false
interval = 500 (eller der omkring. Det er dobbeltkliktiden)
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=false;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not Timer1.Enabled then //hvis timeren kører har du klikket hurtigt 2 gange
begin
Timer1.Enabled := true;
exit;
end;
//herefter indsæt din kode f.eks.
ShowMessage('Du har dobbeltklikket');
end;