![]() |
Anwendungsweite User-Message senden
hallööööööchen DPlers,.-
ich raff grad nicht wie ich eine WM_USER-Message von einer Compo der ganzen Anwendung senden kann - quasi nen Broadcast aber eben nur in der eigenen App. :wall: Ich habs mit PostMessage(Application.Handle) versucht was die Nachricht aber nur für Application.OnMessage bereitstellt und nicht an die untergeordneten Formulare die ich erreichen will... PostThreadMessage() führt zum gleichen Ergebniss... Und ne Windowsbotschaft registrieren um sie für Broadcast nutzen zu können will ich auch nicht - ist ja nicht sinn und zweck des Broadcast().... Vielen Dank für alle Hinweise Gottes Segen |
Re: Anwendungsweite User-Message senden
Nachtrag: Ich habs nun mit SendMessage(Application.Components[].Handle,,) versucht. Allerdings beinhaltet Components[] nur die Forms die Application als Owner haben - was eher selten der Fall ist...
Wenn jmd. also noch ne Idee hat bitte posten :stupid: |
Re: Anwendungsweite User-Message senden
Delphi-Quellcode:
Ich habe IsWindowVisible und IsWindowEnabled mal auskommentiert; kommt nur auf deine Situation an, ob das benötigt wird oder nicht.
var
I: Integer; begin for I := 0 to Screen.CustomFormCount - 1 do with Screen.CustomForms[I] do if HandleAllocated { and IsWindowVisible(Handle) and IsWindowEnabled(Handle) } then PostMessage(Handle, WM_MY_USER, 0, 0); end; |
Re: Anwendungsweite User-Message senden
vielen dank... :thumb:
|
Re: Anwendungsweite User-Message senden
so geht die Message aber auch nur an alle Forms. Die gleiche Message an alle Fenster einer Anwendung zu schicken erscheint mir jedoch auch nicht sehr sinnvoll bei einer userdefined-message da nicht alle Fenster diese Message unterstüzen bzw. ich nicht glaube das du alle verwendeten Fensterklassen nachgerüstet hast damit diese die Message bearbeiten.
Und wenn nur an alle eigenen Formulare die Message geschickt werden soll wäre es doch sinnvoller die eigenen Formulare von einer eigenen Formularkalsse abzuleiten (anstelle von TForm) und diese eigene Fensterbasisklasse mit einer entsprechenden Methode zu versehen. |
Re: Anwendungsweite User-Message senden
Hi,
Wie wärs mit einer verschachtelten for-Schleife? Man kann davon ausgehen das alle "components" der application Formulare sind..normalerweise jedenfalls... =>
Delphi-Quellcode:
Jedenfalls so ungefähr...
for i:= 0 to Applications.Component.Count-1 do
for j:= 0 to TForm(Apllication.Components[i]).Components.Count-1 do // kann sein das es auch Controls.Count heißt SendMessage((TForm(Apllication.Components[i]).Components[j] as TWincontrol).Handle,...,...); Gruß Neutral General |
Re: Anwendungsweite User-Message senden
@SirThornberry:
Die Formulare haben alle eine Komponente die die WindowProc subclassed. Deswegen haut das auch super hin. @Neutral General: Das hatte ich auch schon versucht siehe obrigen post. Das problem ist nur das in Application.Components nur die Formulare vorhanden sind die Application als Owner dem Constructor übergeben haben... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:10 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