Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Form aufrufen und anpassen

  Alt 28. Sep 2010, 11:14
Ach dieses With, das macht doch alles unübersichtlich. Ich übersetze mal deinen Code in "ohne-with-Code":
Delphi-Quellcode:
var
  x : TForm5; // Variable von with
begin
  x := TForm5.Create(Application.MainForm);
  for i := 1 to 1 do
    Form5.left:= Random(Screen.Width - Form5.Width);
  Form5.Top:= Random(Screen.Height - Form5.Height);
  Form5.caption:= Form2.Label22.caption;
  Form5.Name := Form2.Label22.caption;
  Form5.Show;
Und jetzt solltest du dich fragen, was du genau gemacht hast: Ich weiß es nicht aber das with hat keine Auswirkungen, weil es kein Attribut oder Methode gibt in der Klasse TForm5 die Form5 heißt.

Was du eher machen willst, hat dir DeddyH schon gezeigt. Wobei die For-schleife einerseits begin und end haben sollte und andererseits außerhalb des withs sein sollte. Warum? Naja du erstellst einmal das Formular, aber du setzt die Eigenschaften (aktuell) einmal. Würde die Schleife zweimal laufen würde, alles zweimal gesetzt werden, aber keine neue Form erstellt.

Und zu einem anderen Punkt: Wo ist Form5 definiert? Vermutlich in der Unit5 in so einem var Abschnitt:
Delphi-Quellcode:
var
  Form5 : TForm5;
Dann gebe ich dir einen Tipp: Benutze nie nie nie nie nie diese Variable Es gibt Ausnahmen, aber in der Regel wirst du sie nicht brauchen und Probleme schaffen.

Stattdessen nutze entweder die interne Variable von with, oder (mein Vorschlag) verzichte auf das with und lege eine lokale Variable an (siehe DeddyH).

MfG
Fabian

PS: @GHorn: Bedingt: Da er einen Owner angibt, werden sie automatisch geschlossen bzw. freigegeben.
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat