Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Restart eines Delphi Frames oder Formulars (https://www.delphipraxis.net/11616-restart-eines-delphi-frames-oder-formulars.html)

XDF900 10. Nov 2003 17:02


Restart eines Delphi Frames oder Formulars
 
Hallo zusammen!

Ich habe folgendes Problem, bei dem ich nicht weiterkomme:
Ich habe ein Delphi-Frame, das mehrmals benutzt werden soll. Zur Laufzeit soll es jedoch neugestartet werden, also auf die Anfangswerte zurückgesetzt werden.
Bis jetzt habe ich dazu keine Methode gefunden, die so etwas ermöglicht.
Vielleicht kann mir jemand von euch helfen?

Heinz

Alexander 10. Nov 2003 17:05

Re: Restart eines Delphi Frames oder Formulars
 
Kannst du den vielleicht noch mal neu Createn? DAnn müsste er zurückgesetzt werden.
So mache ich das zumindest bei normalen Forms.

XDF900 15. Nov 2003 21:17

Re: Restart eines Delphi Frames oder Formulars
 
Das ist mir nicht klar... wie kann ich genau ein Formular neustarten bzw. alle Variablen per Reset wieder auf die Ausgangswerte stellen?

Christian Seehase 15. Nov 2003 21:22

Re: Restart eines Delphi Frames oder Formulars
 
Moin Heinz,

Zitat:

Zitat von XDF900
wie kann ich genau ein Formular neustarten bzw. alle Variablen per Reset wieder auf die Ausgangswerte stellen?

z.B. in dem Du das Formular nicht in der Projektdatei (DPR) erzeugen lässt, sondern bei Bedarf selber erzeugst (Methode Create), und sobald Du es nicht mehr benötigst wieder freigibst (Methode Free oder Prozedure FreeAndNil).

Meist wird ein Formular ja im OnCreate oder OnShow Event initialisiert, so dass dieses bei jedem Erzeugen neu geschieht.

XDF900 15. Nov 2003 21:37

Re: Restart eines Delphi Frames oder Formulars
 
Danke für deine Antwort!

Aber wenn ich die Methode Create nutzen soll, muss ich einen Besitzer angeben.

Beispielsweise
Form1.Create(Besitzer);

Welches Formular oder welchen Programmteil muss ich dort als Besitzer eintragen?

Bernd Ua 15. Nov 2003 21:58

Re: Restart eines Delphi Frames oder Formulars
 
Zitat:

Beispielsweise
Form1.Create(Besitzer);
Würde ich so nicht tun. Alle Delphi Klassen werden durch Klassename + Konstruktoraufruf erzeugt.
In Deinem Beispiel also höchstens

Code:
Form1 := TForm1.Create(nil);
Der Eigentümer ist für die Freigabe des Formulars verantwortlich.
Wenn da kein logischer Eigentümer ist nimm nil ( entspricht NULL/ nothing in anderen Sprachen)
oder Application bzw. Application.MainForm

Für das Hauptformular solltest Du das aber nicht tun :)

Bernd

XDF900 15. Nov 2003 22:06

Re: Restart eines Delphi Frames oder Formulars
 
Hallo Bernd!

Danke für deine Antwort!

Für die "weniger wichtigen" Formulare ist das sicherlich eine gute Möglichkeit. Aber leider suche ich nach einem Weg, das Hauptformular neuzustarten und bin da ein wenig ratlos, da ich mich in diesem Bereich nicht so gut auskenne.

bombjack 15. Nov 2003 22:28

Re: Restart eines Delphi Frames oder Formulars
 
Also so ganz schlau bin ich noch nicht geworden was du eigentlich willst. :gruebel:
Du hast ein Formular erstellt, das während der Laufzeit gleich bleibt (nur Listen oder sonstige Elemente bzw. Einträge ändern sich) - sehe ich das richtig? :?:

Dann solltest du einfach einen Button erstellen und wenn der gedrückt(geklickt) wird, dann setzt du alle nötigen Properties auf Standard-Werte. Evtl. macht es Sinn die einfach einmal festzulegen und dann halt einmal bei Programm-Start und halt beim drücken des Buttons wieder darauf zu setzen. (eigene procedure)

Gib mal ein Beispiel was du genau erreichen willst, dann ist es sicher einfacher den richtigen Tip zu geben. :thuimb:

mfg, :coder:
bjk.

XDF900 16. Nov 2003 09:19

Re: Restart eines Delphi Frames oder Formulars
 
Folgendes möchte ich konkret:

Ich habe ein Delphiformular, dass vom Nutzer benutzt wird. Der Nutzer verändert zum Beispiel Listen und daraus folgenden Änderungen in den Labelfeldern und ähnlichem.

Wenn sich der Nutzer nun entscheidet, dass Programm noch einmal mit neuen Werten zu nutzen, sollen alle Labelfelder und alle anderen benutzten Objekte auf ihre Anfangswerte gestellt werden, wenn der Benutzer auf einen Button drückt.

Man könnte jetzt natürlich jedem einzelnen Objekt die Startwerte zuweisen, beispielsweise Label1.Caption:='';
Für etwa 50 Labelfelder mit unterschiedlichen Namen, zahlreiche Listen und ähnlichem ist das aber relativ aufwändig. Daher meine Frage: Gibt es da eine elegantere und vor allem weniger programmieraufwändige Möglichkeit?

Sharky 16. Nov 2003 10:04

Re: Restart eines Delphi Frames oder Formulars
 
Zitat:

Zitat von XDF900
...Gibt es da eine elegantere und vor allem weniger programmieraufwändige Möglichkeit?

Hai XDF900,

die Antwort lautet JAEIN. Du musst deine Variablen, und Objekteigenschaften schon selber wieder auf ihre Startwerte setzen.
Wenn Du mehrere Objekte vom selben Typ hast versuche es mal mit FindComponent

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 i : Integer;
begin
  for i := 1 to 10 do
   begin
    TEdit(FindComponent('Edit' + IntToStr(i))).Text := '';
  end;
end;
Dieser Code setzt zum Beispiel die Eigenschaft Text von Edit1 bis Edit10 auf '';


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz