![]() |
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:
Hier mal mein Code zum Öffnen des Fensters:
" is not a valid integer value
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 ![]() 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: |
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:
In Form2 die Eigenschaft "ModalResult" von Button1 auf "mrOK" setzen. OnClick kannst du dann frei lassen. Du könntest sogar folgendes machen:
implementation
uses Unit2; {$R *.dfm} procedure TForm1.New1Click(Sender: TObject); begin Form2.ShowModal; end;
Delphi-Quellcode:
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.
implementation
uses Unit2; {$R *.dfm} procedure TForm1.New1Click(Sender: TObject); begin case Form2.ShowModal of mrOK: //User hat Button1 gedrückt; //usw... end; end; |
Re: Problem beim Schließen von Form2
Du schließt das Form zwei doch über den Button hier:
Delphi-Quellcode:
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.
procedure TForm2.Button1Click(Sender: TObject);
begin Form2.Close; width:=strtoInt(Edit1.Text); height:=strtoInt(Edit2.Text); end; |
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... |
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:
oder was du verändern mächtest.
FOrm1.Image1.Width := ...
|
Re: Problem beim Schließen von Form2
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Edit: Huch, hab garnicht gesehen dass das dein erster Beitrag ist! Herzlich Willkommen in der Delphi-Praxis :mrgreen: :party: |
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.... |
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) |
Re: Problem beim Schließen von Form2
Zitat:
![]() |
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