Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem beim Schließen von Form2 (https://www.delphipraxis.net/32662-problem-beim-schliessen-von-form2.html)

Tobias 26. Okt 2004 21:24


Problem beim Schließen von Form2
 
Hallo...
Ich hab grad n kleines Problem; vielleicht kann mir ja jemand helfen... ;-)

Und zwar hab ich mein Hauptformular "Form1". Dort sitzt ein "TMenu" drauf...
Wenn ich auf auf den Eintrag "Neu" klicke, dann soll sich "Form2" öffnen...

Ich weiß net ob der Code stimmt, auf jeden Fall kommt beim Schließen von "Form2" ein Fehler...
Delphi-Quellcode:
" is not a valid integer value
Hier mal mein Code zum Öffnen des Fensters:
Delphi-Quellcode:
implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.New1Click(Sender: TObject);
 Form1.Enabled:=False;
 Form2.ShowModal;
end;

"uses Unit2" deshlab, weil auf dem "Form2" zwei Edit-Felder sitzen, in die ich später Werte eintragen will, und beim Schließen des Fensters (mit einem Button) wieder in "Unit1" übertragen will...

Form2:
Delphi-Quellcode:
implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
 Form2.Close;
 width:=strtoInt(Edit1.Text);
 height:=strtoInt(Edit2.Text);
end;

procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 CanClose:=True;
 Form1.Enabled:=True;
end;


den Code hab ich von der Internetseite hier....
Inzwischen hab ich allerdings herausgefunden, dass das ganze eigentlich auch nur mit "Form2.ShowModal:" und "Form2.Close;" gehen, sollte, das funktioniert allerdings nicht... :-/
Und dann is da eben immernoch dieser fehler, den ich oben beschrieben habe...





Wenn das hier alles irgendwie komplett falsch sein sollte (bin noch ein ziemlicher Newbie), kann mir dann vielleicht jemand mit nem komplett neuen Code weiterhelfen, mit dem ich zwei Werte aus "Form2" an "Form1" weitergeben kann?
Danke im voraus... :roll:

Dani 26. Okt 2004 21:28

Re: Problem beim Schließen von Form2
 
Der Text in Edit1 ist leer. Ein leerer String kann nicht in einen Integer-Wert konvertiert werden. ;-)
StrToIntDef() dagegen liefert bei einem Fehler einen Standardwert zurück.

Welchen Sinn hat es überhaupt, die Größe von Form2 zu setzen, nachdem du es geschlossen hast?


Edit: Probier mal folgendes:

Delphi-Quellcode:
implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.New1Click(Sender: TObject);
begin
 Form2.ShowModal;
end;
In Form2 die Eigenschaft "ModalResult" von Button1 auf "mrOK" setzen. OnClick kannst du dann frei lassen. Du könntest sogar folgendes machen:

Delphi-Quellcode:
implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.New1Click(Sender: TObject);
begin
 case Form2.ShowModal of
  mrOK: //User hat Button1 gedrückt;
  //usw...
 end;
end;
Um einen Wert aus Form2 an Form1 "weiterzugeben" musst du eigentlich nichts weiter machen, als Unit2 in die Uses-Liste aufzunehmen (was du ja bereits getan hast *g*). Die Werte Height und Width müssten eigentlich auch verfügbar sein, wenn das Formular versteckt ist.

Nikolas 26. Okt 2004 21:30

Re: Problem beim Schließen von Form2
 
Du schließt das Form zwei doch über den Button hier:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
Form2.Close;
width:=strtoInt(Edit1.Text);
height:=strtoInt(Edit2.Text);
end;
oder? Wahrscheinlich ist eines der Edits leer und somit soll dann '' in einen String konvertiert werden, was dann zu dem erwähnten Fehler führt. Mit einem Try...except sollte da was zu machen sein.

Tobias 26. Okt 2004 21:50

Re: Problem beim Schließen von Form2
 
ok, kleiner Fehler meinerseits:

Ich öffne Form2 über den TForm1.New1Click()-Befehl.
In Form2 hab ich zwei Edit-Felder und einen "Neu"-Button

Breite: "Edit1"-Feld
Höhe: "Edit2"-Feld
Button: "Button1"

Wenn ich nun im Formular1 im Menü auf "Neu" klicke, dann soll sich "Form2" öffnen...
Dann soll ich in die Edit-Felder die Breite und die Höhe einer TImage-Komponente eintragen können.
Mit einem Klick auf den "Neu"-Button in Form2 soll dann "Form2" geschlossen werden, und die Werte aus den edit-feldern sollen an "Form1" übertragen werden, damit ich dort mit ihnen weiterarbeiten kann, und dann in Form1 mit dem edit1-Wert die Breite und mit dem edit2-Wert die Höhe meiner "canvas" festlegen kann.

So soll das ganze funktionieren....

@Dani: dein Tipp hat leider nicht funktioniert....

Die Fehlermeldung tritt auch auf, wenn ich eine Zahl in die edit-Felder eintrage, das ist ja das komische...

Matze 26. Okt 2004 22:05

Re: Problem beim Schließen von Form2
 
:hi: Herzlich willkommen!

Achso meinst du das, dann darfst du aber nicht einfach width schreiben, da du sonst die Breite des Formulars veränderst.

Schreib lieber
Delphi-Quellcode:
FOrm1.Image1.Width := ...
oder was du verändern mächtest.

Dani 26. Okt 2004 22:12

Re: Problem beim Schließen von Form2
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Die Fehlermeldung tritt auch auf, wenn ich eine Zahl in die edit-Felder eintrage, das ist ja das komische...
Hab mal schnell was hingepfuscht, da funktioniert es :gruebel:

Edit: Huch, hab garnicht gesehen dass das dein erster Beitrag ist! Herzlich Willkommen in der Delphi-Praxis :mrgreen: :party:

Tobias 26. Okt 2004 22:12

Re: Problem beim Schließen von Form2
 
Danke für den Tipp :-D
Hab jetzt einfach den Code für das "Setzen der Größe der Image1-Komponente" in Form2 reingesetzt und jeweils ein "Form1." davorgesetzt und jetzt funktionierts bestens!

Jetzt muss ich mir nurnoch ein Codeschnippselchen suchen, damit man in die Edit-felder nur zahlen eingeben kann....

Tobias 26. Okt 2004 22:17

Re: Problem beim Schließen von Form2
 
@Dani: :thumb: dein Vorschlag ist ja noch um einiges komfortabler.... *freu*
Dann brauch ich net immer zwischen zwei Units rum-switchen.... ;-)


Danke, dass ihr alle so schnell geantwortet habt 8)

Matze 27. Okt 2004 06:20

Re: Problem beim Schließen von Form2
 
Zitat:

Zitat von Tobias
Jetzt muss ich mir nurnoch ein Codeschnippselchen suchen, damit man in die Edit-felder nur zahlen eingeben kann....

Hier ein Tipp. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 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