Autor Beitrag
P@u1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 117



BeitragVerfasst: 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: 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
ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
Critter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Mo 23.08.10 13:01 
Hi,
user profile iconTankard hat folgendes geschrieben Zum zitierten Posting springen:
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.

ausblenden 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
      // Machwas mit den in Form2 eingegeben Daten
    end;
  finally
    NewForm.Free;
  end;


user profile iconP@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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Mo 23.08.10 13:14 
Hi,
user profile iconTankard hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 117



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Mo 23.08.10 14:09 
Hi,
user profile iconP@u1 hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 117



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Mo 23.08.10 16:50 
Hi,
user profile iconP@u1 hat folgendes geschrieben Zum zitierten Posting springen:
schade, dass turbo delphi 2006 bei mir mrOk nicht kennt,

das währe in der Tat sehr schade - und ausgesprochen merkwürdig.

user profile iconP@u1 hat folgendes geschrieben Zum zitierten Posting springen:
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)