AGB  ·  Datenschutz  ·  Impressum  







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

Form einem Panel zuweisen

Ein Thema von blawen · begonnen am 30. Dez 2022 · letzter Beitrag vom 2. Jan 2023
Antwort Antwort
Benutzerbild von blawen
blawen

Registriert seit: 1. Dez 2003
Ort: Luterbach (CH)
679 Beiträge
 
Delphi 12 Athens
 
#1

Form einem Panel zuweisen

  Alt 30. Dez 2022, 17:44
Delphi-Version: 11 Alexandria
In der Vergangenheit habe ich statt Frames normale Formulare verwendet und diese jeweils in einem Panel im Hauptformular eingeblendet.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Parent := Panel1.Parent;
  Form2.Align := alClient;
  Form2.Borderstyle := bsNone;
  Form2.Windowstate := wsMaximized;
  Form2.Show;
end;
Dies klappte bisher problemlos und auch mit D11.2 klappt es prinzipiell.
Aber sobald ich in einer Umgebung mit unterschiedlichen Monitorauflösungen arbeite (4k, 200% / HD, 100%), funktioniert dieser Ansatz nur noch bedingt.

Ein minimales Beispiel habe ich angehängt:
- Sobald der Monitor gewechselt wird, wird die eingeblendete Form2 nicht mehr angezeigt - es ist lediglich die Form1 sichtbar
- In einer 1 Monitor-Umgebung geschieht dies i.d.R., wenn der Bildschirmschoner zugeschlagen, bzw. der Monitor abgeschaltet hat.
- Ab und an geschieht es, dass das Programm nicht mehr bedient werden kann.
- Wenn ich in den Projektoptionen die "DPI-Unterstützung" ausschalte, funktioniert das Programm wie erwartet.

Das eigentliche Programm ist über die letzten Jahre und IDE's gewachsen und diesbezüglich hatte ich vor D11.x keine Probleme.
Ist es effektiv ein Bug von D11.(2) oder habe ich beim zuweisen etwas wichtiges vergessen, welches sich wegen der Thematik 4k erst jetzt auswirkt?
Angehängte Dateien
Dateityp: zip Form_Panel_zuweisen.zip (91,4 KB, 4x aufgerufen)
Roland
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: Form einem Panel zuweisen

  Alt 30. Dez 2022, 23:36
Ich könnte mir gut vorstellen das bei solch einem vorgehen die message-chain (die auf system messages reagiert) kaputt geht bzw nicht für das "panel-formular" greift.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Form einem Panel zuweisen

  Alt 2. Jan 2023, 09:52
Hast du es schon mal ohne Form2.Windowstate := wsMaximized probiert?

Frank
Frank Reim
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.893 Beiträge
 
Delphi 12 Athens
 
#4

AW: Form einem Panel zuweisen

  Alt 2. Jan 2023, 10:44
Dein Problem liegt vermutlich im falschen Parent.
Du weist Deiner Form2 den Parent von Panel1 als Parent zu. Da solltest Du Panel1 als Parent zuweisen.
Ich gehe davon aus, dass Deine Form2 auch bei den verschiedenen Monitorauflösungen angezeigt wird, aber von Panel1 verdeckt wird.

Auch halte ich es für keine gute Idee, ein global erzeugtes Form auf diese Art einzubinden. Verwendet man dieses Globale Form an verschiedenen Stellen, kann das unerwünschte Effekte haben.

Wie sieht es mit diesem Ansatz aus:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Form: TForm2;
begin
  Form := TForm2.Create(self);
  Form.Parent := Panel1;
  Form.Align := alClient;
  Form.Borderstyle := bsNone;
  Form.visible := True;
end;
Um eine Freigabe von Form brauchst Du Dich nicht zu kümmern, das übernimmt Form1.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#5

AW: Form einem Panel zuweisen

  Alt 2. Jan 2023, 11:24
Ich habe bisher noch nie ein Form in ein Panel gelegt.
Aber ich vermute mal, dass die Message WM_DPICHANGED vom Haupformular nicht bei dem Form im Panel ankommt und es so nicht selber skaliert.
  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 19:10 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