AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Ist Parentform von Frame ein Modales Form?

Ein Thema von bernau · begonnen am 27. Mai 2021 · letzter Beitrag vom 27. Mai 2021
Antwort Antwort
Seite 2 von 3     12 3   
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
148 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 15:05
Eine weitere Möglichkeit wäre dem Frame im Create csActionClient im ControlStyle hinzuzufügen und Frame.InitiateAction zu überschreiben und hier die Prüfung zu machen und danach csActionClient zu entfernen.
Bernd
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.188 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 15:06
Vielleicht habe ich meine Frage etwas zu kompliziert gestellt. Ich versuche es noch mal.

Bisher ist es so (Alles vereinfacht dargestellt):

Delphi-Quellcode:
// Beispiel für EINE Form

procedure TMyForm.FormCreate(Sender: TObject);
begin
  myFrame := TMyFrame.create(PanelXYZ);
  myFrame.parent := PanelXYZ;
  // Der Frame-Button darf nicht verfügbar sein, wenn das Form ein Dialog ist
  // Folgender Code kommt also hinzu, wenn das Form ein Dialog ist.
  // Folgender Code ist "nicht" bei "normalen" Forms vorhanden
  myFrame.BoeserDialogButton.visible := False;
end;
Ich möchte myFrame.BoeserDialogButton.visible := False; einfach in das Frame verlagern, damit ich beim nächsten Form, in dem ich das Frame verwende, nicht mehr daran denken muss. Einmal geschrieben. Fertig.

Wenn ich anderen Code im Form einfügen muss um diese Zeile zu sparen, bringt mir das nichts. Dann lasse ich es so wie es ist.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de

Geändert von bernau (27. Mai 2021 um 15:08 Uhr)
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
148 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 15:21
Meine beiden letzen Anworten haben das doch berücksichtigt, wobei beim 2. Vorschlag beim Form nicht mal einen Event umgeleitet werden müsste.
Bernd
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.433 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 15:24
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.
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.188 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 16: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
8.433 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 17: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.188 Beiträge
 
Delphi 10.3 Rio
 
#17

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 19: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
38.368 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 19:30
Vorallem bei eingebetteten Forms (MDI und Co.) solltst du dir aber den weiteren optionalen Parameter genauer ansehn und vielleicht ändern.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.188 Beiträge
 
Delphi 10.3 Rio
 
#19

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 19: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
8.433 Beiträge
 
Delphi 10.4 Sydney
 
#20

AW: Ist Parentform von Frame ein Modales Form?

  Alt 27. Mai 2021, 19: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
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 06:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf