AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Anwendungsweite User-Message senden
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendungsweite User-Message senden

Ein Thema von Meta777 · begonnen am 24. Mai 2007 · letzter Beitrag vom 28. Mai 2007
Antwort Antwort
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Anwendungsweite User-Message senden

  Alt 24. Mai 2007, 22:32
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.
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
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Anwendungsweite User-Message senden

  Alt 25. Mai 2007, 13:01
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
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Anwendungsweite User-Message senden

  Alt 25. Mai 2007, 13:43
Delphi-Quellcode:
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;
Ich habe IsWindowVisible und IsWindowEnabled mal auskommentiert; kommt nur auf deine Situation an, ob das benötigt wird oder nicht.
Andreas
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: Anwendungsweite User-Message senden

  Alt 25. Mai 2007, 14:57
vielen dank...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Anwendungsweite User-Message senden

  Alt 25. Mai 2007, 15:25
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Anwendungsweite User-Message senden

  Alt 25. Mai 2007, 16:35
Hi,

Wie wärs mit einer verschachtelten for-Schleife?
Man kann davon ausgehen das alle "components" der application Formulare sind..normalerweise jedenfalls...

=>

Delphi-Quellcode:
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,...,...);
Jedenfalls so ungefähr...

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: Anwendungsweite User-Message senden

  Alt 28. Mai 2007, 11:21
@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...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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