Autor |
Beitrag |
.#R4id
      
Beiträge: 90
Windows XP Prof.
CodeGear Delphi 2007
|
Verfasst: So 02.12.07 20:28
Hallo alle zusammen ^^,
könnt ihr mir erklären was der unterschied zwischen Form1.Show und Form1.ShowModal ist?
|
|
Christian R.
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 02.12.07 20:34
Delphi-Help ... hat folgendes geschrieben: | Use ShowModal to show a form as a modal form. A modal form is one where the application can’t continue to run until the form is closed. Thus, ShowModal does not return until the form closes. When the form closes, it returns the value of the ModalResult property.
To close a modal form, set its ModalResult property to a nonzero value. |
So wie ich das verstehe kannst Du bei anzeige eines modalen Forms nur auf diesem Form arbeiten. Erst wenn es geschlossen wird, kannst Du mit den anderen Formularen oder Anwendungsteilen arbeiten. Habe ich noch nie verwendet, daher wird Dir sicher noch jemand Anderes eine bessere Erklärung dazu abgeben können.
|
|
DrRzf
      
Beiträge: 260
Win XP Prof
D7 Enterprise
|
Verfasst: Mo 03.12.07 02:36
bringt Showmodal bei einer Form überhaupt was ?
Ich kenn das nur in zusammenhang mit mehreren Forms.
rufst du zb von deiner Form1 deine Form 2 mit Form2.Show auf, dann kanst du mit Form1 ganz normal weiterarbeiten, und Form2 wird bei aktivierung von Form1 auch überdeckt.
rufst du sie aber mit Form2.ShowModal auf, kanst du mit Form 1 nicht weiterarbeiten. Form2 hält sich dann hierbei hartnäckig im Vordergrund. Du kanst die Form1 dann erst wieder benutzen wenn du Form2 geschlossen hast.
wird zb mit Hinweisfenstern benutzt, wenn der User hier etwas bestätigen oder eine Auswahl treffen muss.
OpenDialog, SaveDialog, ColorDialog benutzen zb diese Modale Form und warten hier auf eine Eingabe des Benutzers.
_________________ rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
|
|
Biergeneral
      
Beiträge: 35
WIN XP
Delphi 7 Ent., Delphi 2007 Ent., C/C++ (Eclipse)
|
Verfasst: Do 06.12.07 00:51
Klar ergibt das Sinn ein Formular Modal aufzurufen
Stell dir folgendes Szenario vor:
Du gehst eine Schleife durch, dabei taucht ein Problem auf, wo der Benutzer eine Entscheidung treffen muss:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure PseudoSchleifen; var i: Integer; begin for i := 0 to Count-1 do begin if (ProbierEtwas = Error) and (Form.ShowModal = mrCancel) then break else continue end; end; |
Wenn also ein Fehler auftritt, wird das Formular aufgerufen wo der Benutzer irgendwas machen muss.. Und solange das Formular noch nicht geschlossen wurde, hält die Schleife an der Stelle an. Drückt er dann z.B. Abbrechen wird aus der Schleife rausgesprungen
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Do 06.12.07 09:45
Meine über 2,5 Jahre entwickelte Anwendung nutzt nur modale Fenster (ca. 120), das ist in dem Anwendungsbereich sehr sinnvoll. Man kann somit den User zu gewissen Arbeitsreihenfolgen 'zwingen'. In Programmen für den eher privaten Einsatz mag das unbequem/unmodern sein, in professionellen Anwendungen kann das aber erforderlich oder gar zwingend notwendig sein.
Geht dabei auch um 'Userführung' ...Welcher User blickt noch durch, wenn er sich mehr als z.b 10 (oder gar alle 120) Fenster geöffnet hat, wo nun gerade welche Änderung (ungespeichert) steht, die einfluss auf die Änderung hat, die er aktuell macht ... usw.
Ebenso ist es oft erforderlich, das bestimmte Daten da sein müssen, um schnell und effektiv arbeiten zu können. (z.b. Stammdaten: einen Auftrag halbwegs automatisiert zu erfassen und die Kundendaten sind noch nicht angelegt ... ).
Die Software gilt auf dem Markt als sehr Nutzerfreundlich und intuitiv, das habe ich (neben anderen 'features') am ehesten durch modale Fenster erreicht).
just my 2 cents
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Do 06.12.07 10:18
Moin,
ich kann zuma nur zustimmen. Durch ShowModal wirkt das ganze benutzerfreundlicher. Will man aber zum Beispielt Statistiken, Diagramme oder andere Dinge anzeigen lassen, die nur zusätzlche sind und nicht zum Hauptprogramm gehören, dann kann man das mit Formn.Show; machen.
MfG
Regan
|
|
DrRzf
      
Beiträge: 260
Win XP Prof
D7 Enterprise
|
Verfasst: Do 06.12.07 20:53
Biergeneral hat folgendes geschrieben: | Klar ergibt das Sinn ein Formular Modal aufzurufen
|
Ich meinte damit nicht ob es sinn macht ein Formular modal aufzurufen, das mach ich selbst sehr oft und ist der Benutzerführung wohlgesonnen.
Ich meinte damit, wenn man ''nur ein'' Formular hat dieses Modal aufzurufen ob das sinn hat.
_________________ rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Fr 07.12.07 09:17
Wenn man nur ein Formular hat, es auch absehbar ist, das da nie ein 2tes hinzukommt, ist es wohl so ziemlich egal, ob man show oder showmodal nimmt. Fällt mir gerade ein:
Benutzt du das ModalResult der Form oder möchtest du es nutzen?
Show:
setzt die Eigenschaft Visible des Formulars auf true und zeigt es im Vordergrund an.
Showmodal:
Da bei einem modalen Formular die Anwendung unterbrochen wird, bis der Benutzer das Fenster wieder schließt, gibt ShowModal die Steuerung erst nach dem Schließen des Formulars zurück. Dabei wird auch der Wert der Eigenschaft ModalResult zurückgegeben. Um ein modales Formular zu schließen, setzen Sie seine Eigenschaft ModalResult auf einen Wert ungleich 0.
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
.#R4id 
      
Beiträge: 90
Windows XP Prof.
CodeGear Delphi 2007
|
Verfasst: Fr 07.12.07 19:06
|
|
DrRzf
      
Beiträge: 260
Win XP Prof
D7 Enterprise
|
Verfasst: Fr 07.12.07 20:39
.#R4id hat folgendes geschrieben: | zuma hat folgendes geschrieben: | Benutzt du das ModalResult der Form oder möchtest du es nutzen? | Was soll ich darauf Antworten  |
das Modalresult ist ein rückgabewert der Form die modal aufgerufen wird.
Zeigst du also ein Hinweisfenster an mit 2 Butoons ''OK'' und ''Abbrechen''
kanst du in der aufrufenden Form dieses result abfragen um zu ermitteln welchen Button er zum verlassen gedrückt hat.
_________________ rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
|
|
Zorro
      
Beiträge: 76
Win 2000, Win XP Pro
Delphi 7 Architect
|
Verfasst: Sa 08.12.07 00:56
.#R4id hat folgendes geschrieben: | zuma hat folgendes geschrieben: | Benutzt du das ModalResult der Form oder möchtest du es nutzen? | Was soll ich darauf Antworten  |
Eine Antwort vom Typ Boolean wäre vermutlich für den weiteren PAP der Diskussion hilfreich.
Üblicherweise lässt du doch, wenn die ganze Anwendung aus nur einem Formular besteht, dieses automatisch erzeugen, womit sich die Frage "Show oder Showmodal" erübrigt.
Greetz
Zorro
|
|
.#R4id 
      
Beiträge: 90
Windows XP Prof.
CodeGear Delphi 2007
|
Verfasst: Sa 08.12.07 00:58
Mein Programm besteht aus 6 Formularen.
(Nur mal so am rande, das Thema ist geklärt, ihr dürft aber weiter Diskutieren  )
_________________ Delphi-Quelltext 1:
| if CopyAndPaste not avaible then Developer := Helpless; |
|
|