Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by bernau,
27. Mai 2021
CM_SHOWINGCHANGED > Ja perfekt. Genau das habe ich gesucht.
Und "GetParentForm" kannte ich auch noch nicht. Hatte mir zwar eine Funktion geschrieben, die sich bis zum Parentform hochhangelt, aber so ist es viel eleganter.
Danke dir.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by bernau,
27. Mai 2021
Ja. Stimmt. Zum Create-Zeitpunkt kann man nicht feststellen, ob das Form Modal ist oder nicht. Deshalb auch die Frage, wie man das anderweitig lösen kann. Allerdings ohne zusätzlichen Code (OnShow) im "Form".
Bei #4 hatte es nicht sofort bei mir klick gemacht. Ich werde damit mal etwas ausprobieren. Danke euch allen für die Hinweise.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by bernau,
27. Mai 2021
Vielleicht habe ich meine Frage etwas zu kompliziert gestellt. Ich versuche es noch mal.
Bisher ist es so (Alles vereinfacht dargestellt):
// Beispiel für EINE Form
procedure TMyForm.FormCreate(Sender: TObject);
begin
myFrame := TMyFrame.create(PanelXYZ);
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by bernau,
27. Mai 2021
Das müsste ich aber im Code des Forms machen. Das will ich vermeiden, da es viele Forms gibt, die das Frame verwenden. Den Code will ich einmal im Frame haben. In den Forms soll einfach nur das Frame erzeugt werden. Keine zusätzlichen Zeilen. Ich möchte Code sparen und Fehler vermeiden.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by bernau,
27. Mai 2021
Es ist kein Problen, von der Form auf die Buttons des Frame zuzugreifen und dort Visible=False zu setzen. Diesen Code will ich mir aber sparen. Das Frame wird vielen verschiedenen Forms verwendet. Wenn ich das Ausblenden des Buttons im Frame einmal automatisiere, dann brauche ich das nicht in den vielen Forms, in dem das Frame erzeugt wird, zu machen.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by bernau,
27. Mai 2021
Das Frame wird im OnCreate des Forms erzeugt.
myFrame := TMyFrame.Create(self);
myFrame.parent := self;
Wie du siehst, wird Parent erst im nächsten Befehl zugewiesen. Daher ist Parent im Create des Frames nil. Owner ist aber bekannt. Deshalb verwende ich owner.
Es ist ja auch nicht das Problem, an die Form zu kommen, auf dem das Frame sitzt. Die Form hat zu dem Zeitpunkt einfach...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by bernau,
27. Mai 2021
Ich habe ein Frame, auf dem einige Buttons sind. Dieses ist entweder auf einem Modalen "oder" einem Nicht-Modalen Form plaziert. Das Frame erzeuge ich im OnCreate des Forms.
Wenn das Frame auf einem Modalen Form ist, dann möchte ich einen bestimmten Button ausblenden.
Eigentlich ist es kein Problem herauszufinden, ob das Form Modal ist:
isModal := (fsModal in TForm(owner).FormState);