Autor |
Beitrag |
P@u1
      
Beiträge: 117
|
Verfasst: Mo 23.08.10 11:50
Hi,
habe mal wieder ein Problem...
Ich habe ein Formular erstellt, dass dazu dienen soll, dass dadurch der Inhalt von 2-3 Variablen vom User gesetzt wird (per Mausklick).
Ich habe jetzt noch ein paar Probleme mitm Imsetzen bzw. bin mir nicht sicher, ob das was ich mir überlegt hatte eine gute Idee / sauberer Stil ist.
Also ich hab mir folgendes überlegt:
Das Hauptprogramm erstellt eine Instanz dieser Form und übergibt dem Creator direkt die 2-3 Variablen, die gesetzt werden sollen.
Danach folgt dann im Hauptprogramm etwas wie
Delphi-Quelltext 1: 2:
| while frmSelection.Assigned do Application.ProcessMessages |
dann gehts weiter in der neu erstellten Form, am Ende (nachdem der User alles gewählt hat) werden dann die Variablen gesetzt und das Formular gibt sich selbst frei und das Hauptprogramm verlässt dann automatisch die Schleife und geht weiter.
Ich denke mal, dass das so funktionieren würde, aber ich vermute, dass es weitaus bessere Möglichkeiten gibt und bin für Vorschläge dankbar.
Übrigens war ich mir mit der Kategorie wieder nicht sicher, also falls nötig bitte korrigieren.
Danke schonmal!
|
|
Tankard
      

Beiträge: 217
Erhaltene Danke: 96
|
Verfasst: Mo 23.08.10 12:44
hi,
dazu sag ich mal ihhhhh.
wenn dein hauptprogramm erst nach der eingabe der werte weitermachen soll, dann geht das am besten, wenn du dein form einfach mit showmodal aufrufst.
dann wartet das hauptprogramm solange bis der user das form geschlossen hat.
alla
Delphi-Quelltext 1: 2: 3: 4: 5:
| form:=tuserform.create(nil); form.showmodal; var1:=form.var1; var2:=form.var2; form.free; |
gruss
tankard
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
Critter
      
Beiträge: 328
Erhaltene Danke: 3
Windows 7
Delphi 7 Pro.
|
Verfasst: Mo 23.08.10 13:01
Hi,
Tankard hat folgendes geschrieben : | hi,
dazu sag ich mal ihhhhh.
{...}
form:=tuserform.create(nil);
form.showmodal;
var1:=form.var1;
var2:=form.var2;
form.free;
|
dazu sage ich mal: Netter Ansatz aber auch das geht noch sauberer (und das nicht nur durch die Verwendung der Delphi-Tags hier im Forum). Mann könnte z.B. das Ergebnis abfragen und nur dann weiter Arbeiten, wenn auch Ok gedrückt wurde.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var NewForm : TForm2; begin NewForm := TForm2.Create(nil); try if NewForm.ShowModal = mrOk then begin end; finally NewForm.Free; end; |
P@u1 müsste dann auf seinem Form nur die Klassischen Ok und Abbrechen Buttons anlegen und deren Eigenschaft ModalResult entsprechend setzen.
critter
_________________ Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
Zuletzt bearbeitet von Critter am Mo 23.08.10 13:09, insgesamt 2-mal bearbeitet
|
|
Tankard
      

Beiträge: 217
Erhaltene Danke: 96
|
Verfasst: Mo 23.08.10 13:08
Hi,
sollte nur ne ansatz sein, die hilfe zu showmodal sollte er schon selber lesen.
ich gebe nur hilfestellung, keine loesungen, die soll jeder selber machen.
das mit den codetags haste allerdings recht.
gruss
tankard
|
|
Critter
      
Beiträge: 328
Erhaltene Danke: 3
Windows 7
Delphi 7 Pro.
|
Verfasst: Mo 23.08.10 13:14
Hi,
Tankard hat folgendes geschrieben : | sollte nur ne ansatz sein, die hilfe zu showmodal sollte er schon selber lesen.
ich gebe nur hilfestellung, keine loesungen, die soll jeder selber machen. |
ja, aber bei Dingen, die funktionen aber unschön sind, riskiert man dann immer das sie eben so unschön übernommen werden. Und es dem lernenden dann nach zwei Jahren zu erklären, warum das was er seit zwei Jahren macht nicht so schön ist, wird nicht unbedingt einfacher  .
critter
_________________ Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
|
|
P@u1 
      
Beiträge: 117
|
Verfasst: Mo 23.08.10 13:58
vielen dank für die hilfe, ich werds dann mit showmodal umsetzen.
Was genau ist daran denn jetzt so unschön an der ersten Methode?
Ist das Problem, dass falls man die zweite Form beendet, das andere Programm trotzdem weiterläuft, als ob nichts wäre?
Und wie funktioniert das mit diesen Ok- und Abbrechen-Buttons?
Wenn ich mir einfach ein Button mit der Caption ok erstelle, wird das ja kaum funktionieren, oder?
|
|
Critter
      
Beiträge: 328
Erhaltene Danke: 3
Windows 7
Delphi 7 Pro.
|
Verfasst: Mo 23.08.10 14:09
Hi,
P@u1 hat folgendes geschrieben : | Wenn ich mir einfach ein Button mit der Caption ok erstelle, wird das ja kaum funktionieren, oder? |
fast. Wenn du einen tButton erstellst kannst du im Objektinspektor unter ModalResult einen Wert auswählen, der automatisch übermittelt wird wenn der Knopf gedrückt wird. Diese Werte kannst du dann wie Gezeigt in der If-Bedingung auswerten. Was auf dem Button drauf steht ist dabei völlig egal.
critter
_________________ Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
|
|
P@u1 
      
Beiträge: 117
|
Verfasst: Mo 23.08.10 16:35
schade, dass turbo delphi 2006 bei mir mrOk nicht kennt, werdes dann doch wohl mit der einfachen variante machen, oder muss ich nur noch irgendwas einbinden oder so, damit ers kennt?
|
|
Critter
      
Beiträge: 328
Erhaltene Danke: 3
Windows 7
Delphi 7 Pro.
|
Verfasst: Mo 23.08.10 16:50
Hi,
P@u1 hat folgendes geschrieben : | schade, dass turbo delphi 2006 bei mir mrOk nicht kennt, |
das währe in der Tat sehr schade - und ausgesprochen merkwürdig.
P@u1 hat folgendes geschrieben : | oder muss ich nur noch irgendwas einbinden oder so, damit ers kennt? |
Naja, du musst schon, wie bei allen das du verwenden willst, die entsprechende Unit, in der es Definiert ist in deine Uses-Anweisung aufnehmen. Wenn du nicht weißt, wo etwas definiert ist, hilft es oft die Eingabemarke zu in das entsprechende Wort zu setzen (in diesem Fall also mrOk) und F1 zu drücken. Die Hilfe führt dich dann hoffentlich auf die passende Seite, welcher zu entnehmen ist das diese Konstante in der Unit Controls definiert ist. Das geht auf jeden Fall schneller als auf die Antwort dritter warten zu müssen  .
critter
_________________ Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
|
|
|