Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi SpeedButton und Handles (https://www.delphipraxis.net/14512-speedbutton-und-handles.html)

F.W. 10. Jan 2004 17:49


SpeedButton und Handles
 
Ich habe angefangen ein kleines Spaßprogramm zu proggen, nachdem Start wird der Mauszeiger Schritt für Schritt zu einem Knopf geführt. Dann soll dieser gedrückt werden, es geht dabei um zwei Sachen:

1. Der Anwender muss sehen können das der Button gedrückt wird
2. das Führen mache ich per Timer, es wird über WindowFromPoint(Mouse.CursorPos) = Button.Handle überprüft ob der Cursor da ist

Erst habe ich einen Button genommen, Problem 1: Ich weiß nicht, wie ich den Button "drücken" soll, das es der Anwender sieht, also habe ich einen SpeedButton genommen 2. Problem: Der SpeedButton hat's mir auf die Art schon :kotz: ganz schön gegeben: Jetzt kann ich das XPDesign in die Tonne hauen! Dann habe ich das M...Ding eingebaut, für Down umprogrammiert :evil: , jetzt merke ich das das Ding kein Handle besitzt :wall:

Gibt's an einem SpeedButton irgendwein Handle, welches mit der oben genannten Methode funkzionieren würde?

Danke schonmal! :angle:

Niko 10. Jan 2004 18:06

Re: SpeedButton und Handles
 
Zuerst die schlechte Nachricht:
Da der SpeedButton von TGraphicControl abgeleitet ist, besitzt er kein eigenes Handle.
Und dann die gute :wink: :
Dein Problem 1 sollte sich auch mit einem normalen Button und der Nachricht BM_SETSTATE, mit der du das Klicken simulieren kannst, lösen lassen.

toms 10. Jan 2004 18:39

Re: SpeedButton und Handles
 
Delphi-Quellcode:
Dein Problem 1 sollte sich auch mit einem normalen Button und der Nachricht BM_SETSTATE, mit der du das Klicken simulieren kannst, lösen lassen.
Das sieht dass etwa so aus:

Delphi-Quellcode:
procedure TForm1.Button2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const
{$j+}bPushed : Boolean = True;{$j-}
begin
  if FindVCLWindow(Mouse.CursorPos) = TButton(Sender) then
  begin
    Button2.Perform(BM_SETSTATE,Ord(bPushed),0);
    bPushed := not bPushed;
  end;
end;

F.W. 10. Jan 2004 19:39

Re: SpeedButton und Handles
 
Super! Danke! Damit hat sich doch auch mein anderes Problem gelöst! Denn wenn ich TButton nehmen kann, kann ich ja, weil er's besitzt auch mit Handles arbeiten! :thuimb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 Uhr.

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