AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Botschaft bei Aktivieren eines Fensters

Ein Thema von oki · begonnen am 5. Mär 2009 · letzter Beitrag vom 5. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#1

Botschaft bei Aktivieren eines Fensters

  Alt 5. Mär 2009, 14:59
Hi Leute,

ich möchte in meinem MainForm oder über Application mitbekommen, wann ein Fenster meiner Anwendung den Focus erhält. Das gestaltet sich momentan erstaunlich schwer. ich estelle zur Laufzeit dynamisch mehrere Fenster. jetzt möchte ich, dass beim Aktivieren eines der Fenster mein MainForm automatisch mitbekommt, welches Fenster gerade deaktiviert und welches aktiviert wurde.
Erst dachte ich, ich mache es einfach über OnMessage von Application. Aber da tauchen die Botschaften nicht auf.
Als Botschaftsmeldungen habe ich wm_SetFocus und wm_KillFocus abgefangen und einen Brakepoint gesetzt. Da passiert abr nichts wenn ich zwischen den Fenstern hinundher schalte. Ich habe den Eindruck, dass das über Broadcast läuft und somit nicht in der Botschaftswarteschlange landet.

Kennt einer eine Möglichkeit, wie man das lösen kann?

Gruß Oki
42
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Botschaft bei Aktivieren eines Fensters

  Alt 5. Mär 2009, 15:01
Wenn das alle deine Formulare sind häng doch dein Mainform an das OnActivate-Event des entsprechenden Formulares.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Botschaft bei Aktivieren eines Fensters

  Alt 5. Mär 2009, 15:02
Es gibt das Ereignis OnActivate, das genau das machen sollte.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Botschaft bei Aktivieren eines Fensters

  Alt 5. Mär 2009, 15:06
@Bernhard: Das wollte ich vermeiden!

@jaenicke: Jo, in Application? oder in meinem MainForm? Die bekommen dann mit, dass andere Fenster meiner Anwendung aktiviert und deaktiviert werden?

Gruß Oki
42
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#5

Re: Botschaft bei Aktivieren eines Fensters

  Alt 5. Mär 2009, 15:31
... jedes Fenster könnte in seinem OnActivate() / OnDeactivate() eine UserMessage an das MainForm senden
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Botschaft bei Aktivieren eines Fensters

  Alt 5. Mär 2009, 15:34
Zitat von oki:
@jaenicke: Jo, in Application? oder in meinem MainForm? Die bekommen dann mit, dass andere Fenster meiner Anwendung aktiviert und deaktiviert werden?
Ich meinte das wie Bernhard, aber du könntest einfach ein gemeinsames Elternformular erstellen, von dem du alle anderen Formulare ableitest. Dafür musst du ja jeweils nur die eine Zeile mit dem class(TForm) entsprechend ändern.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Botschaft bei Aktivieren eines Fensters

  Alt 5. Mär 2009, 15:37
ich würde beim dynamichen erstellen der Forms einfach denen ein OnActive-Eventhandler zuweisen. In diesem kannst du dann anhand des Senders unterscheiden von welchem Fenster es ausgelöst wurde.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Botschaft bei Aktivieren eines Fensters

  Alt 5. Mär 2009, 15:39
So würde ich es ja eigentlich auch machen, aber:
Zitat von oki:
@Bernhard: Das wollte ich vermeiden!
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Botschaft bei Aktivieren eines Fensters

  Alt 5. Mär 2009, 15:40
Hi taaktaak,

Das wollte ich wie gesagt vermeiden. Ich hatte die Hoffnung, dass das mit einer Botschaft über die Warteschlange läuft. Eigentlich erstelle ich die Fenster zur Laufzeit anhand ihres Klassennamens.
Zum Glück sind das aber alles Nachfahren eines von mir erstellten Basisformulars. Somit werde ich eine eigene Botschaft in Activate und Deaktivate aufnehmen. Wollte das Rad nur nicht zweimal erfinden.

Dank an alle,

gruß oki


Ahh, roter Kasten.
@ jaenicke: Das entspricht wohl meinem jetzigen Weg.

@ SirThornberry: Da hätte ich auch gleich drauf kommen können.

Dank und Gruß
42
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Botschaft bei Aktivieren eines Fensters

  Alt 5. Mär 2009, 15:43
Zitat von oki:
@ SirThornberry: Da hätte ich auch gleich drauf kommen können.
Ich dachte das wäre klar, wenn das Formular dynamisch erstellt wird. Dann ist ja alles klar.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:34 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