AGB  ·  Datenschutz  ·  Impressum  







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

Ist Parentform von Frame ein Modales Form?

Ein Thema von bernau · begonnen am 27. Mai 2021 · letzter Beitrag vom 27. Mai 2021
Antwort Antwort
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#1

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 15:22
Beim FormCreate kann man aber noch gar nicht wissen, ob das Form später mit Show oder ShowModal aufgerufen wird. Insbesondere ist es durchaus möglich, ein und dieselbe Form-Instanz z.B. einmal mit ShowModal und einmal mit Show aufzurufen (und noch mehrmals und auch umgekehrt). Wohlgemerkt, dieselbe Instanz! Folglich kann das im FormCreate gar nicht ausgewertet werden, weil es erst später durch deinen Code bestimmt wird. Du kannst allenfalls im FormShow darauf reagieren.

Insofern geht die Anwort in #4 schon in die richtige Richtung.
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.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.756 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 16:20
Du kannst in dem Frame die Messages CM_PARENTVISIBLECHANGED oder CM_SHOWINGCHANGED abfangen und dort das fsModal abfragen:
Delphi-Quellcode:
  TMyFrame = class(TFrame)
  private
    procedure CMPARENTVISIBLECHANGED(var Message: TMessage); message CM_PARENTVISIBLECHANGED;
// oder
    procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED;
// ...

procedure TMyFrame.CMPARENTVISIBLECHANGED(var Message: TMessage);
var
  isModal: Boolean;
begin
  inherited;
  isModal := (fsModal in GetParentForm(Self).FormState); // funktioniert auch wenn der Frame nicht direkt im Form sitzt sondern z.B. auf einem TPanel oder TPageControl
// ...
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#3

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 18:22
Du kannst in dem Frame die Messages CM_PARENTVISIBLECHANGED oder CM_SHOWINGCHANGED abfangen und dort das fsModal abfragen:
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.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.549 Beiträge
 
Delphi 12 Athens
 
#4

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 18:30
Vorallem bei eingebetteten Forms (MDI und Co.) solltst du dir aber den weiteren optionalen Parameter genauer ansehn und vielleicht ändern.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#5

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 18:37
Vorallem bei eingebetteten Forms (MDI und Co.) solltst du dir aber den weiteren optionalen Parameter genauer ansehn und vielleicht ändern.
Welcher optionale Parameter?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.756 Beiträge
 
Delphi 12 Athens
 
#6

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 18:42
Delphi-Quellcode:
function GetParentForm(Control: TControl; TopForm: Boolean = True): TCustomForm;
...
Bei MDI-Forms sind ja die MDIChilds im MDIForm eingebettet. Mit TopForm = True bekommst du dann das MDIForm, bei False das entsprechende MDIChild.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#7

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 18:46
Ah. Danke euch beiden!
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  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 18:32 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-2025 by Thomas Breitkreuz