![]() |
In Abhängigkeit vom Herkunftsformular neues Formular optisch dynamisch zur Laufzeit..
..anpassen.
Hallo zusammen, eine Frage von einem Programmieranfänger: ich habe ein Dialog, bei dem ich wenn er von Formular A geöffnet wird 4 Buttons anzeigen möchte, wird der selbe Dialog von Formular B geöffnet sollen nur 2 Buttons angezeigt werden. Kurzzm: "in Abhängigkeit vom Herkunftsformular soll das sich öffnende Formular (Dialog) unterschiedlich aussehen". Gibt es dafür Codebsp/Anleitungen/Hilfe? Viele Grüße Bornholdt |
AW: In Abhängigkeit vom Herkunftsformular neues Formular optisch dynamisch zur Laufze
Bevor du deinen Dialog zeigst (vermutlich mit ShowModal), schreibst du folgendes:
Delphi-Quellcode:
Ob False oder True, hängt davon ab, aus welchem Formular du den Dialog aufrufst.
DeineDialogform.Button3.Visible := False; // oder True
DeineDialogform.Button4.Visible := False; // oder True |
AW: In Abhängigkeit vom Herkunftsformular neues Formular optisch dynamisch zur Laufze
Im Sinne der objektorientierten Programmierung wäre es sinnvoller das zu kapseln:
Delphi-Quellcode:
Auf diese Weise fummelt man nicht von außen an internen Elementen der Klasse herum und hat zudem mit der Property auch eine sinnvolle Benennung warum da etwas sichtbar ist oder nicht.
TDialogForm = class
private FCanCancel: Boolean; public property CanCancel: Boolean read FCanCancel write SetCanCancel; end; procedure TDialogForm.SetCanCancel(const Value: Boolean); begin FCanCancel := Value; btnCancel.Visible := Value; end; |
AW: In Abhängigkeit vom Herkunftsformular neues Formular optisch dynamisch zur Laufze
.. auch im Sinne von OOP könntest Du Dialog.create überladen (polymorphy)
z.b. Dialog.create(Parameter). Grüße Klaus |
AW: In Abhängigkeit vom Herkunftsformular neues Formular optisch dynamisch zur Laufze
Im Sinn von OOP und vernünftiger Kapselung habt ihr beide Recht. Bedenkt aber, dass der TE ein Anfänger ist und evtl. erstmal eine einfache Lösung benötigt. Trotzdem sollte er natürlich eure Hinweise beachten.
Auch ich programmiere anders. Bei mir gibt es zum Beispiel immer eine Klassen-Prozedur, die alle notwendigen Parameter bekommt. In dieser Prozedur wird die Form erzeugt, eingestellt, verwendet und wieder zerstört. Zugriffe von außen gibt es praktisch gar nicht. |
AW: In Abhängigkeit vom Herkunftsformular neues Formular optisch dynamisch zur Laufze
Zitat:
Delphi-Quellcode:
In den Funktionen wird das Form erzeugt und bei Dialogen auch freigegeben.
class function TMeineForm.Execute:boolean;overload;
class function TMeineForm.Execute(aEinBesondererParameter:boolean):boolean;overload; Aufgerufen wird das Formular dann so:
Delphi-Quellcode:
Alles viel Übersichtlicher geworden.
if TMeineForm.Execute then
... if TMeineForm.Execute(true) then ... |
AW: In Abhängigkeit vom Herkunftsformular neues Formular optisch dynamisch zur Laufze
Hallo,
Frage wurde ja bereit mit verschiedenen Lösungen beantwortet. Welche Lösung am schnellsten ist, hängt vom aktuellen Quellcode ab. Den hier bitte auszugsweise posten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:14 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 by Thomas Breitkreuz