ich bin auf ein eigenartiges Verhalten gestoßen, das ich mir nicht erklären kann und das mir keine rechte Ruhe lässt:
Für ein Verschlüsselungsprogramm habe ich drei Eingabemasken entwickelt, die ich "universell" in mehreren Programmen einsetzen möchte. Dazu bildete ich eine Form und plazierte auf drei Panels die Eingabemasken: Eine Maske für die Vergabe von einem Passwort mit zwei Eingabefeldern (Doppelte Eingabe zur Vermeidung von Fehleingaben), eine Maske mit nur einem Feld zum Entschlüsseln mit nur einem Eingabefeld und eine dritte Maske, mit der man per Maus eine PIN aus Zahlen eingeben kann. Diese drei Panels sind verschieden groß und sollen modal per ".showmodal" von einer anderen Form aus aufgerufen werden. Die Größen der der Panels und der Form werden jeweils übergeben, je nach Bedarf.
Tagelang probierte ich alles möglich aus, weil sich die Größen des Passwort-Eingabefeldes nicht anpassen ließen; egal, was ich an Parametern und wie ich die Parameter der zweiten Form übergeben habe: Die Größe ließ sich einfach nicht ändern.
Erst, nachdem ich die Form zunächst NICHT modal geöffnet, dann gleich wieder geschlossen habe, um sie dann sofort erneut modal zu öffnen, wurden die Größenänderungen akzeptiert und ausgeführt.
Code: Alles auswählen
F_PWEingabe.Parameter_Uebernahme( 1 , 0 , 5 , 'Schlüsseldatei neu anlegen:');
// hier wird u.a. festgelegt, mit welchen Größen die Form und das Panel sich ändert
F_PWEingabe.Show; // 2. Zeile (erstmal "normales "show")
F_PWEingabe.Visible:=false; // 3. Zeile (dann gleich wieder unsichtbar machen)
F_PWEingabe.ShowModal; // (dann erst funktioniert "ShowModal" wie erwartet
if F_PWEingabe.PassWd = ....;
MIT der zweiten und dritten Zeile werden die Größenänderungen korrekt ausgeführt.
Entsprechend der Übergabeparameter wird hier nun die Größe der Form und des Panels festgelegt:
Code: Alles auswählen
if F_PWEingabe.cry_decry = 1 then
begin
F_PWEingabe.Height:=185; // ohne obigen Umweg werden diese Angaben ignoriert! ??
F_PWEingabe.Width:=330;
F_PWEingabe.Pn_Decry.Height:=152;
F_PWEingabe.Pn_Decry.Width:=288;
.....
Könnte das ein Bug sein? (Version 1.2.6 FPC-Version 2.6.4)
Aliobaba