Autor Beitrag
.#R4id
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90

Windows XP Prof.
CodeGear Delphi 2007
BeitragVerfasst: 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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260

Win XP Prof
D7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

WIN XP
Delphi 7 Ent., Delphi 2007 Ent., C/C++ (Eclipse)
BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Do 06.12.07 10:18 
Moin,
ich kann user profile iconzuma 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260

Win XP Prof
D7 Enterprise
BeitragVerfasst: Do 06.12.07 20:53 
user profile iconBiergeneral 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90

Windows XP Prof.
CodeGear Delphi 2007
BeitragVerfasst: Fr 07.12.07 19:06 
user profile iconzuma hat folgendes geschrieben:
Benutzt du das ModalResult der Form oder möchtest du es nutzen?
Was soll ich darauf Antworten :?

_________________
ausblenden Delphi-Quelltext
1:
if CopyAndPaste not avaible then Developer := Helpless;					
DrRzf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260

Win XP Prof
D7 Enterprise
BeitragVerfasst: Fr 07.12.07 20:39 
user profile icon.#R4id hat folgendes geschrieben:
user profile iconzuma 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76

Win 2000, Win XP Pro
Delphi 7 Architect
BeitragVerfasst: Sa 08.12.07 00:56 
user profile icon.#R4id hat folgendes geschrieben:
user profile iconzuma 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90

Windows XP Prof.
CodeGear Delphi 2007
BeitragVerfasst: 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 :wink:)

_________________
ausblenden Delphi-Quelltext
1:
if CopyAndPaste not avaible then Developer := Helpless;