Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Onclick event bei schnellen klicken (https://www.delphipraxis.net/184077-onclick-event-bei-schnellen-klicken.html)

Bladefire 24. Feb 2015 09:51

Onclick event bei schnellen klicken
 
Hallo,

bei einen klick auf ein image soll sich das image ändern. Allerdings lösen desöftern zwei schnelle klicke hinterander das ereignis nicht aus.

Ich dachte, dass es womöglich am doublebuffer lägen könnte.
Tat es nicht.

Ich dachte, dass es womöglich daran liegt, das nur, dass on dblclick ereignis ausgelöst wird. Darum habe ich vom dblclck ereignis Zweimal das Onclick ereignis direkt(verurteilt mich nicht) aufgerufen.

Code:
procedure TForm1.img_placeholderDblClick(Sender: TObject);
begin
    img_placeholderClick(sender);
    img_placeholderClick(sender);
end;
Es half nicht.

Woran könnte es liegen?

Sir Rufo 24. Feb 2015 09:56

AW: Onclick event bei schnellen klicken
 
Klappt doch ganz hervorragend
Delphi-Quellcode:
procedure TForm1.Label1Click( Sender: TObject );
begin
  TuWas( 'Click' );
end;

procedure TForm1.Label1DblClick( Sender: TObject );
begin
  TuWas( 'DblClick' );
end;

procedure TForm1.TuWas( const AStr: string );
begin
  ListBox1.ItemIndex := ListBox1.Items.Add( AStr );
end;
Eventuell möchtest du aber auch einen ganz anderen Event benutzen :)
Delphi-Quellcode:
procedure TForm1.Label1MouseUp( Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer );
var
  LMouseOverControl: Boolean;
begin
  LMouseOverControl := (Sender as TControl).ClientRect.Contains( TPoint.Create( X, Y ) );
  TuWas( Format( 'MouseUp (%s)', [BoolToStr( LMouseOverControl )] ) );

  // Maus befindet sich beim loslassen noch auf dem Control ...
  if LMouseOverControl and ( Button = mbLeft )
  then // dann
    begin
      // Jetzt die "Klick"-Aktion auslösen
    end;
end;

BadenPower 24. Feb 2015 10:05

AW: Onclick event bei schnellen klicken
 
Zitat:

Zitat von Bladefire (Beitrag 1291232)
bei einen klick auf ein image soll sich das image ändern. Allerdings lösen desöftern zwei schnelle klicke hinterander das ereignis nicht aus.

...

Woran könnte es liegen?

Die Frage ist, ob das Image mitbekommt, dass es angeklickt wurde, wärend es sich "ändert".

Wenn es bei der "Änderung" zum Beispiel neu erstellt wird und Du in diesem Moment darauf klickst, dann ist dort in dem Moment aber gerade kein Objekt welches reagieren könnte.

Der schöne Günther 24. Feb 2015 10:09

AW: Onclick event bei schnellen klicken
 
Windows legt doch in der "Warteschlange" für das Programm ein "Mausklick an Koordinate X|Y zum Zeitpunkt abc" ab. Wenn das Programm dann wieder reagiert arbeitet es diese Warteschlange weiter ab. Daher sollte doch eigentlich nichts verloren gehen, oder?

Sir Rufo 24. Feb 2015 10:12

AW: Onclick event bei schnellen klicken
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1291237)
Windows legt doch in der "Warteschlange" für das Programm ein "Mausklick an Koordinate X|Y zum Zeitpunkt abc" ab. Wenn das Programm dann wieder reagiert arbeitet es diese Warteschlange weiter ab. Daher sollte doch eigentlich nichts verloren gehen, oder?

:thumb: so isses

BadenPower 24. Feb 2015 10:29

AW: Onclick event bei schnellen klicken
 
Zitat:

Zitat von Sir Rufo (Beitrag 1291238)
Zitat:

Zitat von Der schöne Günther (Beitrag 1291237)
Windows legt doch in der "Warteschlange" für das Programm ein "Mausklick an Koordinate X|Y zum Zeitpunkt abc" ab. Wenn das Programm dann wieder reagiert arbeitet es diese Warteschlange weiter ab. Daher sollte doch eigentlich nichts verloren gehen, oder?

:thumb: so isses

Da braucht doch aber nur irgendwo ProcessMessages oder HandleMessage auftauchen und schon ist der erneute Klick verschluckt.

Der schöne Günther 24. Feb 2015 10:31

AW: Onclick event bei schnellen klicken
 
Aber wer sollte das tun? Und warum?

Bladefire 24. Feb 2015 11:19

AW: Onclick event bei schnellen klicken
 
Danke für eure Antworten.

Ich benutze Turbo delphi.

Hier ein link zur Datei (sollte sich jemand traun):
https://www.dropbox.com/s/5rwhjyhevtnrtqs/test.rar?dl=0

Ich weis einfach nicht woran das liegt :(

Bjoerk 24. Feb 2015 12:26

AW: Onclick event bei schnellen klicken
 
Was möchtest du damit ausrechnen? :gruebel:

Delphi-Quellcode:
gesuchtefarbe[i] := Trunc(Random()*5+1);

himitsu 24. Feb 2015 12:27

AW: Onclick event bei schnellen klicken
 
Er wird nicht "verschluckt", sondern wird früher ausgeführt ... Mitten innerhalb eines anderen Ausführungspfades.
Das kommt besonders geil, wenn man globale Variablen benutzt.

0 + 1 = 1
Aber klickt hier mal doppelt :stupid:
Delphi-Quellcode:
...
private
  FCount: Integer;
end;

procedure TFormWendat.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  FCount := 0;
  for i := 1 to 50 do begin
    Application.ProcessMessages;
    Sleep(100);
  end;
  FCount := FCount + 1;
  Button1.Caption := IntToStr(FCount);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz