Avatar billede fun22 Nybegynder
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??
Avatar billede eht Nybegynder
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
Avatar billede fun22 Nybegynder
26. april 2003 - 12:46 #2
Det kan jeg ikke på til at virke. Er der ikke en mere simpel måde?
Avatar billede eht Nybegynder
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;
Avatar billede fun22 Nybegynder
11. maj 2003 - 11:30 #4
glem det. Det er ikke nødvendigt mere
Avatar billede eht Nybegynder
11. maj 2003 - 13:18 #5
selv tak!!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester