[Delphi] "Wizzard"-Programm machen..

koffi

Lt. Junior Grade
Registriert
Jan. 2007
Beiträge
493
huhu!

ich bin zur zeit so n bisschen dabei delphi zu lernen, also bitte erklärt ausführlich ohne fachbegriffe die ich wahrscheinlich sowieso nicht kenne..
ich möchte nun ein programm schreiben das funktioniert wie eine "wizzard"-anwendung (zumindest glaub ich dass die so heisen). sprich: ein programm das beginnt - du gibst informationen ein - klickst auf weiter - gibst informationen ein - klickst auf weiter - und irgendwann bekommste dann deine ergebnisse (also so wie alle installationen in der regel ablaufen: pfad eingeben, verknüfung aufm desktop anlegen usw).
ich benutze delphi 2005.
also es gäbe ja die möglichkeit dass ich ein formular mache mit allen textfelden und labels die ich brauche übereinander, und immer bei einem klick auf "weiter" verschwinden bzw erscheinen einige davon. das wird aber ganzschön unübersichtlich und kompliziert..
hat wer ne idee?

vielen dank.
 
kk und wie "verbinde" ich die, so dass bei einem klick auf "weiter" das nächste formular erscheint und variablen übernommen werden?
wahrscheinlich liegt die lösung auf der hand, aber ich hab so ne art von programm noch nie gemacht
 
du bindest die unit mit dem formular ein und rufst sie dann mittels form.ShowModal() auf. die "alte" form muss natürlich geschlossen werden im nachhinein wenn du das auf diesem wege machst.
 
hm.. ich komm damit leider nich weiter.
kann mir bitte jemand ein konkretes beispiel liefern?
danke
 
keine antwort? schade. nagut, dann frag ich etwas genauer:

claW3581 schrieb:
du bindest die unit mit dem formular ein ...

was meinst du damit genau?

edit1:
so, habe mal folgendes gemacht:
ich habe zu einem neuen projekt ein neues formular erstellt und im quelltext von ersten formular das 2te "ergänzt"

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

TForm2 = class(TForm)
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

und folgende procedure erstellt

procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.ShowModal();
end;

es erscheint beim klick auf button2 aber ne fehlermeldung.
lacht mich nicht aus, ich hab doch keine ahnung wie ich das anstellen soll ^^
 
Zuletzt bearbeitet:
Fynnjard schrieb:
was meinst du damit genau?

jedes formular in delphi entspricht einer unit, welche du einbinden musst um an die funktionen, variablen, ... heran zu kommen. genau diese musst du einbinden, dann kannst du auch mit ihnen umgehen.

es ist zwar schon ein paar jahre her als ich das letzte mal mit delphi was gemacht habe, aber du musst die unit nur in die uses-klausel in der form eintragen.

im bcb (das delphi äquivalent von borland für c++) machst z.b. du folgendes:

Code:
#include "form2.h"

void TFormMain::Button1Click( TObject *Sender )
{
  Form2->ShowModal();
}

wenn du nun auf button1 ein event auslösen würdest (in dem falle ein klick darauf), würde sich das 2. formular modal öffnen (modal = es ist im vordergrund und auf andere kann nicht zugegriffen werden, show() allein zeigt das fenster an, aber du kannst noch auf anderen formularen arbeiten, während das jeweilig andere geöffnet ist).

hier hast du ein beispiel wie das in delphi gemacht wird.

du schreibst einfach den namen der unit in die uses-klausel oben rein und kannst dann auf sie zugreifen.
 
gut gut, verstanden hab ichs.. bekomme es aber trotz vieler versuche und überlegungen nich hin.
ich erstelle ein neues projekt in delphi, die voreinstellung sieht so aus:

delphi1pe6.gif


zu aller erst erstelle ich einen button in forumlar 1.
dann erstelle ich ein neues formular unter datei-neu-formular.
bei einem klick auf den button soll das neue formular erscheinen.
in unit 1 schreibe ich unter "uses" unit2 rein.
und zu guter letzt erstelle ich die procedure dass bei einem klick auf den button in unit1 unit 2 erscheinen soll. das sieht dann so aus:

delphi2wo6.gif


... LOL jetzt, nach alle den versuchen und der verzweiflung.. jetzt wo ich das ganze projekt sauber nochmal mache um meine schritte hier zu dokumentieren funktioniert es xD
also, zumindest erscheint ein ganz neues fenster mit der unit 2. wie kann ich machen dass einfach unit1 durch unit2 ersetzt wird? das ist dann also meine neue frage :D
 
sieh mal im formular bei den events unter OnShow nach -> neue methode hinzufügen. wenn du das dort nun hast, kannst du über

Code:
Form1.Visible := true;

die sichtbarkeit an- bzw. abschalten. du musst dabei allerdings beachten, dass wenn du einen zurück knopf hast, die formulare wieder einblendest und das programm nicht ohne etwas sichtbares weiterläuft. ;)
 
wenn das programm mit unit 1 beginnt, und bei einem klick auf einen button unit 2 verschwindet und unit 2 auftaucht.. wie kann ich das programm dann wieder komplett beenden ohne auf unit 1 zurückzugehen? reicht es wenn ich in unit 2 close; ausführe?
 
ich weiß jetz nicht wie die methode heißt, aber sieh mal was nach der eingabe von "Application." aufpoppt. dort sollte es ein close, terminate oder ähnliches geben. bin mir nicht sicher wie das genau hieß.
 
Zurück
Oben