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
Antwort Antwort
palmakunkel

Registriert seit: 3. Dez 2005
Ort: Coswig
18 Beiträge
 
Delphi 11 Alexandria
 
#1

Single-Form-Anwendung

  Alt 7. Nov 2023, 09:44
Liebe Delphigemeinde, ich habe ein Verständnisproblem. Ich schreiben eine Single-Form-App, die neben dem FormLQMain ein Setup und Help braucht. Beide habe ich auf TPanels gelegt, die ein- und ausgeblendet werden. Die gesamte Funktionalität steht dann in LQMain.pas, was es sehr unübersichtlich macht. Jetzt habe ich die Setup- und Help-Seite in je ein TForm geschrieben, die im FormLQMain.Panel1 wahlweise angezeigt werden.

uses ... LQSetup, LQHelp;

TFormLQMain = class(TForm)
Panel1: TPanel;
....
end;

var
FormLQMain: TFormLQMain;

procedure TFormLQMain.FormActivate(Sender: TObject);
begin
FormLQSetup.Parent:=Panel1;
FormLQSetlist.Parent:=Panel1;
end;

procedure TFormLQMain.btnShowSetupClick(Sender: TObject);
begin
FormLQHelp.Visible:=false;
FormLQSetup.Visible:= not FormLQSetup.Visible;
end;

procedure TFormLQMain.btnShowHelpClick(Sender: TObject);
begin
FormLQSetup.Visible:=false;
FormLQHelp.Visible:= not FormLQHelp.Visible;
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?
Gunter Dickopf
sie passten gut zueinander - geometrisch gesehen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Single-Form-Anwendung

  Alt 7. Nov 2023, 09:47
Hallo,
obwohl ich die nicht mag, Frames ...

Und zum "Kapern".
Benutze weiterhin Panels, packe dort Deine Forms rein und blende die Panels aus.
Heiko

Geändert von hoika ( 7. Nov 2023 um 09:56 Uhr)
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
214 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Single-Form-Anwendung

  Alt 7. Nov 2023, 10:57
Die Fehlerbeschreibung "Offenbar kapert irgendwas im MainForm die Messages weg." ist leider wenig hilfreich.

Was du da machst sollte eigentlich funktionieren.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Single-Form-Anwendung

  Alt 7. Nov 2023, 11:15
Ich würde es über eine Reiter-Anwendung regeln, 3 Reiter (Haupt, Konfiguration, Hilfe), somit kommen sich Messages nicht in die Quere und Du brauchst Dir keine Gedanken machen ob was dargestellt wird oder nicht.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
palmakunkel

Registriert seit: 3. Dez 2005
Ort: Coswig
18 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Single-Form-Anwendung

  Alt 7. Nov 2023, 12:22
Danke für die raschen Antworten!

@hoika: vielleicht ist das der Fehler: ich habe die beiden Forms an EIN Panel gebunden und nur visible geschaltet. Ich werde es testen...

@Edelfix: im Setup-Form im StringGrid1 onClick-> wird nicht diese Funktion angesprungen, sondern eine völlig andere im MainForm, völig sinnfrei.

@KodeZwerg: das hatte ich auch schon auf dem Schirm, aber das ist vom Aussehen her etwas vintage, dachte ich
Gunter Dickopf
sie passten gut zueinander - geometrisch gesehen
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

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

AW: Single-Form-Anwendung

  Alt 7. Nov 2023, 12: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
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Single-Form-Anwendung

  Alt 7. Nov 2023, 14:20
@KodeZwerg: das hatte ich auch schon auf dem Schirm, aber das ist vom Aussehen her etwas vintage, dachte ich
Du musst ja nicht die klassischen Reiter verwenden, das kannst Du auch über Knöpfe oder Bilder regeln, Hauptsache du hast den "Katalog" auf deinem Formular der intern die Seiten verwaltet.
Wie Du diese Seiten ansteuerst, ist komplett Dir überlassen.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
palmakunkel

Registriert seit: 3. Dez 2005
Ort: Coswig
18 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Single-Form-Anwendung

  Alt 7. Nov 2023, 16:32
@Jasocul: ja, sowas scheint plausibel. Ich habe jetzt auf die Anregung von hoika hin Frames probiert, das scheint zu funktionieren. Bin aber erst am Anfang. Wenn nicht werde ich doch zu den von Kodezwerg vorgeschlagenen Reitern greifen.
Danke nochmal an alle!
Gunter Dickopf
sie passten gut zueinander - geometrisch gesehen
  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 06:14 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