Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Controls werden erst nach zweitem öffnen eines Formulars angezeigt (https://www.delphipraxis.net/199759-controls-werden-erst-nach-zweitem-oeffnen-eines-formulars-angezeigt.html)

Markus Traxler 18. Feb 2019 10:40

Controls werden erst nach zweitem öffnen eines Formulars angezeigt
 
Hallo,
ich stehe vor einem dubiosen Problem, in meiner Anwendung werden bei manchen Formularen 2 Toolbars gefüllt mit BitBtns und SpeedButtons erst nach schließen des Formulars und erneutem öffnen angezeigt.

Ich habe mir ein Basisformular mit den Toolbars gebaut, in der OnShow-Routine berechne ich anhand der Anzahl der Button in den Toolbars und der Breite des gesamten Formulars die Breite der einzelnen Buttons um alle gleich groß zu haben.
Jetzt habe ich das Problem, dass eben bei manchen vererbten Formularen alles wunderbar klappt, bei anderen muss ich das Formular öffnen (mache das mittels form.ShowModal) und schließen und erst beim zweiten Showmodal werden die Toolbars mit den Button richtig angezeigt.
Die Formulare werden alle bei Programmstart schon erzeugt.
Es fehlen auch nur die Toolbars, alle anderen Control sind schon beim ersten öffen sichtbar.
Beim Debuggen scheinen auch alle Properties wie visible-, left-, Top-, enabled, tranparent-werte zu passen.

Kennt jemand dieses Problem, bzw hat eine Lösung für mich?
Ich will nicht immer erst Form.Show und Form.Close ausführen müssen, damit das Formular richtig angezeigt wird.

Bin für jeden Hinweis dankbar.

MfG Markus

P.S. Entwicklungsumgebung ist Delphi 10 Seattle Update 1

Uwe Raabe 18. Feb 2019 10:51

AW: Controls werden erst nach zweitem öffnen eines Formulars angezeigt
 
Zitat:

Zitat von Markus Traxler (Beitrag 1425856)
in der OnShow-Routine berechne ich anhand der Anzahl der Button in den Toolbars und der Breite des gesamten Formulars die Breite der einzelnen Buttons um alle gleich groß zu haben.

Wäre da nicht das OnResize der bessere Ansatz? Vielleicht sogar das OnResize der Toolbars?

DP-Maintenance 18. Feb 2019 11:08

Dieses Thema wurde am "18. Feb 2019, 12:08 Uhr" von "Luckie" aus dem Forum "Algorithmen, Datenstrukturen und Klassendesign" in das Forum "GUI-Design mit VCL / FireMonkey / Common Controls" verschoben.

Markus Traxler 18. Feb 2019 15:54

AW: Controls werden erst nach zweitem öffnen eines Formulars angezeigt
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1425857)
Zitat:

Zitat von Markus Traxler (Beitrag 1425856)
in der OnShow-Routine berechne ich anhand der Anzahl der Button in den Toolbars und der Breite des gesamten Formulars die Breite der einzelnen Buttons um alle gleich groß zu haben.

Wäre da nicht das OnResize der bessere Ansatz? Vielleicht sogar das OnResize der Toolbars?

Danke, habe gerade mal Testweise die Routine zur Berechnung der Buttons nur im OnResize aufzurufen (war ja davor auch schon drin, weil sich die Controls ja beim Ändern der Größe des Formulars mitändern sollen).
Macht aber keinen Unterschied. Die Toolbars und darin enthaltene Buttons sind nach wie vor erst beim zweiten öffen des Formulars sichtbar.

Uwe Raabe 18. Feb 2019 16:02

AW: Controls werden erst nach zweitem öffnen eines Formulars angezeigt
 
Dann zeig doch mal den ein kleines Beispiel, mit dem wir das Problem nachstellen können.

Markus Traxler 19. Feb 2019 07:55

AW: Controls werden erst nach zweitem öffnen eines Formulars angezeigt
 
Ein beispiel dafür ist nur schwierig zu zeigen, da es sich doch um ein umfangreicheres Projekt handelt...
Ich habe jetzt auch die Routine, die die Buttonbreite berechnet komplett rausgenommen, es ändert nichts am Verhalten der Formulare....
In manchen abgeleiteten Formularen werden die Tollbars mit Buttons beim ersten öffnen angezeigt, in anderen wiederum nicht. Der Code der abgeleiteten Formulare ist dabei gleich, bzw. befindet sich ja eh in den Basisformularen...

Markus Traxler 19. Feb 2019 10:18

AW: Controls werden erst nach zweitem öffnen eines Formulars angezeigt
 
Hat sich erledigt, dank Quellcodeversionierung konnte ich den Fehler finden. Es lag an einem Fehler im OnResize des Basisformulars. Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 00: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