Announcement

Collapse
No announcement yet.

Mehrere Subforms schliessen mit Prüfung CanCLose in FormCloseQuery der SubForms

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mehrere Subforms schliessen mit Prüfung CanCLose in FormCloseQuery der SubForms

    Hallo zusammne.
    Ich bin in Delphi relativ neu, da nur Gelegenheitsprogrammierer. Normalerweise früher Turbo-Pascal, dBase, Cobol und jetzt ABAP/4.

    Ich habe eine kleine Dateiverwaltung für CNC-Programmierplätze geschrieben. Ursprünglich war diese als MDI-Anwendung vorgesehen.

    Nach Änderung auf SDI-ANwendung mit SUbforms für beliebiege AUfrufe eines TEdit-Fensters mit eigenen Menüs usw. möchte ich bei Beendigung des Programmes alle FormCloseQuerys der geöffneten Subforms abprüfen. In der FormCloseQuery der subForms soll das Ereignis TRichEdit.Modiefied bzw. ein daraus generiertes Flag abgeprüft werden. Der erste Gedanke mit folgenden Fragment in der Hauptform:

    procedure TFoMaster.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    var
    i : integer;
    begin
    for i := Screen.FormCount -1 downto 0 do
    if not (Screen.Forms[i].Caption = 'NC File') then
    if Screen.Forms[i].CloseQuery then
    Screen.Forms[i].Close;
    if not closeForm then
    canClose := false
    end;

    bringt's nicht. Die Reihenfolge der über COunt abgeprüften Fenster ist von der Z-ANordnung abhängig, die Fenster haben nach Speicherung bzw. bei Öffnung mit bestehende Datei den Dateinamen als Caption. Darüber eine Entscheidung zu treffen, ist unmöglich.

    In einer MDI-Anwendung ist das alles kein Problem. Dort ist diese Prüfung der MDI-Child's beim Close der Midi-Form implizit.

    Wer weiß einen Rat?

  • #2
    Muss die Abfrage der .caption überhaupt sein ??
    Ansonsten gäbe es die Möglichkeit alle Deine "NC Forms" von einer gemeinsammen leeren Formclasse abzuleiten. Dann kannste in der Loop mit Screen.Forms[I] is TNCForm abfragen.

    <pre>

    // in einer globaler Unit<br>

    type
    TNCForm = class(TForm);<br>

    // alle speziellen Forms nutzen nun die globale Unit mit<br>

    uses NCForm, .....<br>

    type
    TForm1 = class(TNCForm)<br>

    </pre>

    Hage

    Comment

    Working...
    X