Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Wie ShowModal Form aus dem HauptForm schließen? (https://www.delphipraxis.net/185219-wie-showmodal-form-aus-dem-hauptform-schliessen.html)

Sir Rufo 22. Mai 2015 19:44

AW: Wie ShowModal Form aus dem HauptForm schließen?
 
Nur um mal mit dieser Mär mit den modalen Forms, die sich angeblich nicht von aussen schliessen lassen, aufzuräumen habe ich hier ein Beispiel-Code
Delphi-Quellcode:
unit Form.Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,

  Form.Dialog;

type
  TMainForm = class( TForm )
    Button1: TButton;
    Timer1: TTimer; { Enabled = False, Interval = 5000 }
    procedure Timer1Timer( Sender: TObject );
    procedure Button1Click( Sender: TObject );
  private
    FDialogForm: TDialogForm;
  public
    { Public-Deklarationen }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.Button1Click( Sender: TObject );
begin
  FDialogForm := TDialogForm.Create( nil );
  try
    Timer1.Enabled := True;
    FDialogForm.ShowModal;
    Timer1.Enabled := False;
  finally
    FreeAndNil( FDialogForm );
  end;
end;

procedure TMainForm.Timer1Timer( Sender: TObject );
begin
  if Assigned( FDialogForm ) then
    FDialogForm.Close;
end;

end.
Die DialogForm ist ein simple Form.

Sir Rufo 22. Mai 2015 19:58

AW: Wie ShowModal Form aus dem HauptForm schließen?
 
Aber wir driften vom Thema ab, denn die Fehlermeldung kommt nicht vom Versuch die Form zu schliessen, sondern vom Versuch die modal anzuzeigen.

Die Fehlermeldung ist doch sehr eindeutig:
Zitat:

Delphi-Quellcode:
TCustomForm.ShowModal
for
Delphi-Quellcode:
OfflineForm:TOfflineForm
impossible, because already visible (hint for designer forms: set
Delphi-Quellcode:
Visible
property to
Delphi-Quellcode:
false
) already modal.)
und da gibt es auch noch einen Tip, was man kontrollieren, bzw. gewährleisten sollte (Im OI
Delphi-Quellcode:
OfflineForm.Visible = False
setzen)

Dalai 22. Mai 2015 20:00

AW: Wie ShowModal Form aus dem HauptForm schließen?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1302657)
Nur um mal mit dieser Mär mit den modalen Forms, die sich angeblich nicht von aussen schliessen lassen, aufzuräumen habe ich hier ein Beispiel-Code

Ich glaube, es bezweifelt niemand, dass es geht, wenn man nur ein bisschen (mehr) Aufwand treibt. Aber ich denke auch, dass das dem Sinn einer modalen Form zuwiderläuft.

Aber wie himitsu schon im anderen Thread schrieb: Hier kann man nur mutmaßen, weil zu wenige Infos vorhanden sind, und der Code keine wirkliche Aussagekraft hat.

MfG Dalai

Sir Rufo 22. Mai 2015 20:05

AW: Wie ShowModal Form aus dem HauptForm schließen?
 
Die Mär besagte, dass es gar nie niemals nicht geht. Das galt es zu widerlegen.

Nein, warum sollte es dem Sinn einer modalen Form zuwiderlaufen? Die modale Form hindert den Benutzer daran, das modale Formular zu verlassen ... und mein Beispiel ändert an dieser Tatsache nicht das geringste.

Und den Code den wir hier sehen, der löst die Fehlermeldung nicht aus.

himitsu 22. Mai 2015 20:08

AW: Wie ShowModal Form aus dem HauptForm schließen?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1302666)
Und den Code den wir hier sehen, der löst die Fehlermeldung nicht aus.

Darum auch.
Zitat:

Zitat von himitsu (Beitrag 1302656)
...
Aber solange hier in zwei Threads nur zusammenhanglose Stückchen gezeigt werden und alles Wichtige fehlt, hat es eh keinen Sinn eine Lösung finden zu wollen.
Meine Galskugel ist grade in der Reinigung.


AlexII 22. Mai 2015 20:12

AW: Wie ShowModal Form aus dem HauptForm schließen?
 
Zitat:

Zitat von Perlsau (Beitrag 1302653)
Zitat:

Zitat von Dalai (Beitrag 1302648)
Ich bin mir nicht sicher, ob du verstehst, was ein modales Fenster ist, und wie Perlsau es erklärt hat.

Ich glaube fast, er hat das gar nicht gelesen ... da gibt man sich mal so richtig Mühe und versucht das ordentlich zu erklären ... :-D

Ne, ich hatte es noch nicht gelesen... aber danke, ist besser erklärt als in der Hilfe! :thumb:

Perlsau 22. Mai 2015 20:16

AW: Wie ShowModal Form aus dem HauptForm schließen?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1302663)
Aber wir driften vom Thema ab, denn die Fehlermeldung kommt nicht vom Versuch die Form zu schliessen, sondern vom Versuch die modal anzuzeigen.

Die Fehlermeldung ist doch sehr eindeutig:
Zitat:

Delphi-Quellcode:
TCustomForm.ShowModal
for
Delphi-Quellcode:
OfflineForm:TOfflineForm
impossible, because already visible (hint for designer forms: set
Delphi-Quellcode:
Visible
property to
Delphi-Quellcode:
false
) already modal.)
und da gibt es auch noch einen Tip, was man kontrollieren, bzw. gewährleisten sollte (Im OI
Delphi-Quellcode:
OfflineForm.Visible = False
setzen)

Das paßt aber nicht damit zusammen, was AlexII im Eingangsposting meint:

Zitat:

Zitat von AlexII (Beitrag 1302634)
ich versuche wie folgt ein modales Fenster zu schließen:

Delphi-Quellcode:
procedure TMainForm.SetAppOnline();
begin
  OfflineForm.Visible := False;
  //oder
  OfflineForm.ModalResult := mrCancel;
  //oder
  OfflineForm.ModalResult := mrOK;
end;
bekomme aber immer diese Fehlermeldung, siehe Anhang. Wie bekomme ich das modale Fenster aus dem Hauptfenster zu?

Zitat:

Zitat von Sir Rufo (Beitrag 1302657)
Nur um mal mit dieser Mär mit den modalen Forms, die sich angeblich nicht von aussen schliessen lassen, aufzuräumen habe ich hier ein Beispiel-Code

... das problemlos funktioniert.

Aber wie hier und im Nachbar-Thread bereits eingewendet wurde, macht das nicht wirklich Sinn, denn man ruft eine Form doch genau deshalb modal auf, um eine bestimmte Reaktion des Anwenders quasi zu erzwingen: Wenn er z.B. einen Dateinamen auswählen soll, dann kann er das nicht, wenn der Dialog nach 5 Sekunden wieder geschlossen wird. Die Umstände in Alex' Programm sind ja auch bislang streng geheim 8-)

AlexII 22. Mai 2015 20:22

AW: Wie ShowModal Form aus dem HauptForm schließen?
 
Also ich komme mit dem Lesen nicht hinterher, aber im groben habe das Problem verstanden.

Mein Vorhaben ist folgendes, ich habe eine Anwendung = MainForm. Wenn die Anwendung offline geschaltet wird, wird OfflineForm "darüber gelegt". Wird das Programm online geschaltet - schließe ich das OfflineForm. Eigentlich ganz einfach. Nur das Schließen des OfflineForms will vom MainForm nicht klappen. Aber ich denke, ich löse das jetzt, Ihr habt mir genug wissen gegeben. Es sei denn jemand weiß besser wie ich mein Vorhaben umsetze.

DeddyH 22. Mai 2015 20:26

AW: Wie ShowModal Form aus dem HauptForm schließen?
 
Wäre es da nicht einfacher, wenn das modale Formular den Status prüft und sich selbst schließt?

Sir Rufo 22. Mai 2015 20:28

AW: Wie ShowModal Form aus dem HauptForm schließen?
 
@AlexII

Zeig uns mehr Code und wir können dir helfen


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:07 Uhr.
Seite 2 von 4     12 34      

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