AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Formular in DLL - Rücksprung in Hauptanwendung
Thema durchsuchen
Ansicht
Themen-Optionen

Formular in DLL - Rücksprung in Hauptanwendung

Ein Thema von Uli65 · begonnen am 2. Sep 2025 · letzter Beitrag vom 3. Sep 2025
Antwort Antwort
Uli65

Registriert seit: 28. Jun 2013
2 Beiträge
 
#1

Formular in DLL - Rücksprung in Hauptanwendung

  Alt Gestern, 15:20
Hallo,

ich habe folgendes Szenario:
Delphi-Anwendung, aus welcher aus der Main-Form heraus ein modales Fenster (Fenster1) aus der Exe aufrufen wird. In diesem modalen Fenster wiederum wird mittels Button zus. ein weiteres modales Fenster aus einer dyn. DLL aufgerufen (Fenster2), welchem der Application.Handle der Anwendung mitgegeben wird.
Der Aufruf aller Fenster funktioniert einwandfrei, jedoch beim Schließen von Fenster2 springt der Fokus nicht in Fenster1, sondern Fenster1 ist nicht mehr sichtbar, nur noch die Main-Form.
Fenster1 ist aber wohl noch im Hintergrund aktiv, denn das Programm ist blockiert und nur über den Taskmanager zu beenden.
Versuche mittels Fenster1.BringToFront() das Fenster sichtbar zu machen scheitern.

Rufe ich Fenster2 direkt aus der Main-Form auf, funktioniert der Rücksprung ohne Probleme.

Was muss ich tun, um beim Aufruf von Fenster2 aus Fenster1 heraus, nach dem Schließen von Fenster2, wieder auf Fenster1 zugreifen zu können?

Uli
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
293 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Formular in DLL - Rücksprung in Hauptanwendung

  Alt Heute, 10:30
Hmm, dass liest sich so, dass Du aus Fenster 2 was im Hauptfenster machst. Da kann dann leicht ein Knoten reinkommen.
Was passiert, wenn Du dem Fenster 2 den Handle von Fenster1 mitgibst und eventuelle Kommunikation der DLL mit dem Hauptfenster dann von Fenster1 weitergeleitet wird?
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.693 Beiträge
 
Delphi 12 Athens
 
#3

AW: Formular in DLL - Rücksprung in Hauptanwendung

  Alt Heute, 12:30
Du hast zwei Mal die VCL.
Die VCL der DLL setzt, beim Schließen einer Form den Fokus, auf eines seiner Fenster (davon gibt es aber Keines mehr und die Fenster der EXE kennt sie nicht).
Fazit: Der Fokus geht verloren, ala SetFocus(0), und weil die Anwendung keinen Fokus mehr hat, wird sie durch Windows in den Hintergrund verschoben.
UND ist der Fokus einmal weg, kann/darf eine Anwendung den Fokus nicht auf sich setzen (nur andere, genauer das aktive Programm, darf sowas machen)

Lösung: Das Handle der Form1 beim Aufruf übergeben, oder vor Anzeige der Form2 via GetActiveWindow es sich holen, und dann vor dem Close/Hide/Free ein Windows.SetFocus auf diese Form.
Ein Therapeut entspricht 1024 Gigapeut.
  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 18:32 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