Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi auf button ereignisse reagieren? (https://www.delphipraxis.net/86569-auf-button-ereignisse-reagieren.html)

Rastaman 15. Feb 2007 19:43


auf button ereignisse reagieren?
 
Nabend.

Wie ich das in Erinnerung habe, kann man ja einfach einen Button aufs Formular klatschen und dann schreiben

Delphi-Quellcode:
Button1.OnClick := ...
und diese Prozedur wird ausgeführt wenn der Button geklickt wird,
auch wenn sich das Parent des Buttons geändert hat, ich also z.B

Delphi-Quellcode:
Button1.ParentWindow := GetDesktopWindow;
benutzt habe.
Nun meine Frage: Wie klappt sowas Non VCL?
Die Buttons senden keine Nachrichten mehr an mein Hauptfenster und WM_NOTIFY klappt nur für Common Controls (Progressbar, Treeview etc) aber nicht für die Standardcontrols wie Button oder Edit. Hat jemand ne Ahnung was ich meine und / oder wie das geht? :)

Danke schonmal

morp2 16. Feb 2007 14:57

Re: auf button ereignisse reagieren?
 
Was für einen Sinn soll es haben das ParentWindow zu ändern?

Rastaman 16. Feb 2007 15:58

Re: auf button ereignisse reagieren?
 
Da, in der Ferne reitet ein Cowboy ...

==> Soll doch egal sein. Ich möchts halt gerne wissen, weil ichs auch brauche für n Prog.

IngoD7 16. Feb 2007 16:08

Re: auf button ereignisse reagieren?
 
Zitat:

Zitat von Rastaman
Hat jemand ne Ahnung was ich meine[...]?

Nein, aber da du Nachfragen zum Verständnis mit einem in der Ferne reitenden Cowboy beantwortest, wird dein Problem möglicherweise auch nur Wayne interessieren. :stupid:

Christian Seehase 16. Feb 2007 16:56

Re: auf button ereignisse reagieren?
 
Moin Rastaman,

dass solltest Du mit der API-Funktion MSDN-Library durchsuchenSetParent hinbekommen.

Rastaman 16. Feb 2007 19:02

Re: auf button ereignisse reagieren?
 
Zitat:

Zitat von IngoD7
Zitat:

Zitat von Rastaman
Hat jemand ne Ahnung was ich meine[...]?

Nein, aber da du Nachfragen zum Verständnis mit einem in der Ferne reitenden Cowboy beantwortest, wird dein Problem möglicherweise auch nur Wayne interessieren. :stupid:

Wo bitte war das eine Verständnisfrage?

Zitat:

Zitat von Christian Seehase
Moin Rastaman,

dass solltest Du mit der API-Funktion MSDN-Library durchsuchenSetParent hinbekommen.

Jo ist mir bewusst.
Das Problem ist aber, dass der Button der jetz auf dem Desktop statt auf meinem Anwendungsfenster ist jetzt nicht mehr reagiert. Sprich es wird kein WM_COMMAND mehr an mein Fenster gesendet wenn er geklickt wird. Also kann ich auch nicht überprüfen ob er geklickt wird (oder doch? :stupid: ) non VCL!

IngoD7 16. Feb 2007 20:49

Re: auf button ereignisse reagieren?
 
Zitat:

Zitat von Rastaman
Zitat:

Zitat von IngoD7
Zitat:

Zitat von Rastaman
Hat jemand ne Ahnung was ich meine[...]?

Nein, aber da du Nachfragen zum Verständnis mit einem in der Ferne reitenden Cowboy beantwortest, wird dein Problem möglicherweise auch nur Wayne interessieren. :stupid:

Wo bitte war das eine Verständnisfrage?

Ich verstehe viele Problembeschreibungen besser, wenn ich weiß, was der Fragesteller bezweckt und was Anlass (bzw. grundlegende Idee) seiner Bemühungen ist. Je besser man die Frage verstehen kann, umso effektiver kann man recherchieren und antworten.

Ich z.B. verstehe deine Bemerkung "non VCL" nicht.

Ich kann jedenfalls aus einer "normalen" Anwendung (Form1, hübsch sichtbar, mit Buttons und so) einen der Buttons auf den Desktop legen. Dieser ruft bei Klick immer noch seine in der Anwendung befindliche OnClick-Routine auf. Aber sowas meintest du wohl nicht, oder?

Christian Seehase 16. Feb 2007 21:24

Re: auf button ereignisse reagieren?
 
Moin Ingo,

Zitat:

Zitat von IngoD7
Ich z.B. verstehe deine Bemerkung "non VCL" nicht.

damit ist gemeint, dass die Formulare nicht aus VCL-Komponenten "zusammengeklickt", sondern "auf die gute alte Art" erstellt werden, mit Dialogresourcen, CreateWindow(Ex), eigener MessageLoop usw.
Kein TApplication-Objekt, keine TForms, keine TButton usw.

IngoD7 17. Feb 2007 10:17

Re: auf button ereignisse reagieren?
 
Moin Christian,

Zitat:

Zitat von Christian Seehase
[...]Kein TApplication-Objekt, keine TForms, keine TButton usw.

danke. Hatte ich eigentlich auch so verstanden.

Ich hatte mich nur irritieren lassen hierdurch:

Zitat:

Zitat von Rastaman
[...]
Delphi-Quellcode:
Button1.ParentWindow := GetDesktopWindow;
[...] Wie klappt sowas Non VCL?

Zitat:

Zitat von morp2
Was für einen Sinn soll es haben das ParentWindow zu ändern?

Zitat:

Zitat von Rastaman
==> Soll doch egal sein. Ich möchts halt gerne wissen, weil ichs auch brauche für n Prog.

Mir ist jetzt klar, dass im Eingangsposting die Eigenschaft ParentWindows lediglich zur (Beispiel-)Erklärung auf VCL-Basis diente. Wenn aber dann expliziet danach (nach)gefragt wird (so wie von morp2), dann hätte ich eine Antwort erwartet, die nochmal klar ausdrückt, dass das ja gar nicht verwendet wird, weil nonVCL und weil wenn kein TButton, dann eben auch kein TButton.ParentWindow.

Stattdessen kam eine Antwort, die ich dann so interpretiert hatte, dass er doch irgendwie ein TButton hat, diesen auch benutzt und bearbeitet (ParentWindow) und lediglich nicht sagen will, wofür das ganze gut sein soll.
Sowas kommt von blöden Antworten. :angel2:

Nun denn, mein (VCL-)Lösungsansatz hat sich damit verflüchtigt.
Der Vollständigkeit halber für die Interessierten hier kurz erwähnt:
Um einen VCL-Button auf den Desktop zu legen und seine Clicks weiter zu empfangen, muss man nämlich (mindestens) solches tun:
Delphi-Quellcode:
Button.Parent:=nil;
Button.ParentWindow:=GetDesktopWindow;
Button.ControlStyle:=Button.ControlStyle+[csClickEvents];
Klinke mich damit hier aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 Uhr.

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