AGB  ·  Datenschutz  ·  Impressum  







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

Single-Form-Anwendung

Ein Thema von palmakunkel · begonnen am 7. Nov 2023 · letzter Beitrag vom 7. Nov 2023
 
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.375 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Single-Form-Anwendung

  Alt 7. Nov 2023, 11:24
Delphi-Quellcode:
procedure TFormLQMain.FormActivate(Sender: TObject);
begin
  FormLQSetup.Parent:=Panel1;
  FormLQSetlist.Parent:=Panel1;
end;
Das ging anfangs auch gut, jetzt werden im FormLQSetup Funktionen aus dem FormLQMain ausgelöst, die da gar nicht eingebunden sind. Offenbar kapert irgendwas im MainForm die Messages weg. Die Konstruktion ist also mit Sicherheit falsch, kann mir jemand sagen, wie man ein Single-Form-Anwendung grundlegend konzipiert?
Wenn ich mich richtig erinnere, dürfte das hier ein Problem der Z-Order sein.
Du weist allen Forms das selbe Parent zu. Jetzt wird irgendeine Funktion ausgelöst und die zentrale Form prüft, ob das für sie ist. Falls nicht, geht das gemäß Z-Order an die untergeordneten Objekte (bezogen auf die Parent-Zuordnung). Je nach Funktion kann die Eigenschaft "Visible" eine Rolle spielen oder nicht. Einfach Visiple auf Fals stellen genügt dann in einigen Fällen nicht.

Deine zentrale Form dürfte FormLQMain sein.
Normalerweise bekommt diese als erstes die Info, dass was gemacht werden soll (Es gibt weitere Dinge, die Einfluss nehmen können, führt hier jetzt aber zu weit). Passt es zu der Form, bekommen die untergeordneten Komponenten (also auch deine anderen Forms), das Ereignis nicht mehr mit, weil es bereits von der Hauptform abgearbeitet wurde. Das scheint gerade bei dir das Problem zu sein.

Wie kannst du das beheben:
Das hängt davon ab, was "gekapert" wurde und kann ich so pauschal nicht beantworten. Ich vermute, dass es um Menüpunkte o.ä. gehen könnte.
Grundsätzlich würde ich keine Forms in anderen Forms einbetten. Dafür sind Frames da.
Wenn du es so beibehalten willst, musst du bei jedem Wechsel dafür sorgen, dass die entsprechenden Funktionen, Ereignisse, ... im Kontext aktiviert oder deaktiviert werden. Je nach größe der Anwendung, kann das aufwändig werden und ist fehleranfällig.

Das ist aus der Erinnerung geschrieben und kann evtl. nicht 100%ig stimmen, da ich mit Z-Order-Problemen seit ewigen Zeiten nichts mehr zu tun hatte. Wer mich an der Stelle korrigieren will, soll sich nicht zurückhalten
Peter
  Mit Zitat antworten Zitat
 

 

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 00:42 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