AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) Wie ShowModal Form aus dem HauptForm schließen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie ShowModal Form aus dem HauptForm schließen?

Ein Thema von AlexII · begonnen am 22. Mai 2015 · letzter Beitrag vom 22. Mai 2015
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

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

  Alt 22. Mai 2015, 19:44
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (22. Mai 2015 um 19:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

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

  Alt 22. Mai 2015, 19:58
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:
TCustomForm.ShowModal for OfflineForm:TOfflineForm impossible, because already visible (hint for designer forms: set Visible property to false ) already modal.)
und da gibt es auch noch einen Tip, was man kontrollieren, bzw. gewährleisten sollte (Im OI OfflineForm.Visible = False setzen)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

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

  Alt 22. Mai 2015, 20:16
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:
TCustomForm.ShowModal for OfflineForm:TOfflineForm impossible, because already visible (hint for designer forms: set Visible property to false ) already modal.)
und da gibt es auch noch einen Tip, was man kontrollieren, bzw. gewährleisten sollte (Im OI OfflineForm.Visible = False setzen)
Das paßt aber nicht damit zusammen, was AlexII im Eingangsposting meint:

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?
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

Geändert von Perlsau (22. Mai 2015 um 21:24 Uhr)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#4

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

  Alt 22. Mai 2015, 20:22
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.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 22. Mai 2015, 20:26
Wäre es da nicht einfacher, wenn das modale Formular den Status prüft und sich selbst schließt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#6

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

  Alt 22. Mai 2015, 20:28
Wäre es da nicht einfacher, wenn das modale Formular den Status prüft und sich selbst schließt?
Aber ich muss doch den Status von dem MainForm veranlassen, oder? Hm...
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

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

  Alt 22. Mai 2015, 20:28
@AlexII

Zeig uns mehr Code und wir können dir helfen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#8

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

  Alt 22. Mai 2015, 20:31
@AlexII

Zeig uns mehr Code und wir können dir helfen
Das sind nur ein Paar Zeilen weit verstreut.

Aber ich habe es schon verstanden... es wird gleich laufen wie geschmiert!
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

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

  Alt 22. Mai 2015, 20:40
Ich kenne das aus anderen Sprachen da wird das mit modalen Forms anders gelöst.
Wird eine Form Modal aufgerufen ist eine Eingabe in der Hauptform nicht mehr möglich.
Sollte zumindest so sein.
Welchen zweck sonst verfolgt eine Modale Form .. nur diesen das wie schon gesagt eingaben
in der Hauptform verwehrt werden und nur in dieser Modalen Form eingaben möglich sind
so lange bis diese geschlossen wird.

Möchtest du das nicht dann erstelle keine Modale Form.
Die Frage wäre also welchen zweck verfolgst du damit das du eine Modale Form erstellst(aufrufst)

gruss

Geändert von EWeiss (22. Mai 2015 um 20:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

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

  Alt 22. Mai 2015, 20:46
@Perlsau

Ich behaupte mal dass AlexII hier einfach die falschen Schlüsse zieht und nur denkt, dass diese von ihm gezeigten Codezeilen für die Fehlermeldung verantwortlich sind.

Die Fehlermeldung bezieht sich aber ganz eindeutig auf ShowModal und davon ist in dem hier gezeigten Code nichts zu sehen, ergo sind die nicht verantwortlich.

Und eine modale Form ist nicht auf eine Auswahl von was auch immer beschränkt. Bei einem Datei-Auswahl-Dialog macht es allerdings zu 99,9999% keinen Sinn diesen nach einer gewissen Zeit automatisch zu schliessen. Es gibt aber eben mehr als nur das
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:59 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