Erfassung von Daten in einem Eingabefenster
-
Hi zusammen,
ich hab mal wieder ein Problem und hoffe das Ihr mir weiter helfen könnt!
Mein Programm soll so gestalltet werden, das der Benutzter einige Daten
einzugeben hat. Die Eingabe soll aber nicht in einem einzigen Fenster statt
finden, so Soll er z. B. erst seinen Vor- und Nachnamen eingeben
dann im weiteren Schritt seine Adressanschrift und seine Telefonnummer:1. Abfrage
------------- Vorname | | ------------- ------------- Nachname | | ------------- |WEITER|
2. Abfrage
------------- Adresse | | | | | | ------------- ------------- Telefon | | ------------- |ZURÜCK| |WEITER|
Zum Aufbau:
Ich will ein Form1 in welchem beide Abfragen erfolgen.
So soll in einem einzigem Fenster erst die 1. Abfrage erfolgen
und wenn man dann auf den Button "WEITER" klickt, soll in dem
gleichem Fenster der Inhalt von der "1. Abfrage" 'gelöscht' werden
und der die 2. Abfrage erfolgen.
In Excel gibt es sowas auch, eine Abfrage von Datensätzen in einem Fenster
in welchen in einzelnen "Stepps" verschiedene Daten Abgefragt werden.
Oder von der Installation eines Programms kennt man das auch her, da öffnet
sich ein fenster, dann wird als erstes ein Copyrigt und weiteres sinnloses Zeugs
mitgeteilt, dann wenn man auf weiter klickt wird man nach dem Einferständnis
der Lizensbedingungen gefragt, als dritten schritt soll man dann seinen Namen
und seine Inizialen eingeben bla bla bla...Ihr wisst schon!ICH DANKE EUCH SCHON JETZT EINMAL FÜR EURE VORSCHLÄGE
P.S. mit mehreren Panels habe ich das schon mal ausprobiert,
da hab ich dann immer nur ein Panel auf Visible gestallt und die anderen
einfach ausgeblendet, dann wenn ich auf weiter geklickt hab,
hat sich das aktuelle Panel ausgeblendet und das nächste wurde eingeblendet.
Aber wenn man dann viele Datensätze abfragen will, wird das ganz schön unübersichtlich. Da muss es doch was besseres geben oder nicht?
Hier einmal der Quellcode zu meinen Vorstellungen aber mit Panels://--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; AnsiString E1, E2; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { Panel1->Visible = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Panel1->Visible = false; Panel2->Visible = true; E1 = Edit3->Text; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { Panel2->Visible = false; E2 = Edit4->Text; if((E1 != "") && (E2 != "")) { Edit1->Text = E1; Edit2->Text = E2; } else { } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { Panel2->Visible = false; Panel1->Visible = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { Form1->Label1->Caption = Label1->Caption; } //---------------------------------------------------------------------------
-
coder-beginner schrieb:
Aber wenn man dann viele Datensätze abfragen will, wird das ganz schön unübersichtlich. Da muss es doch was besseres geben oder nicht?
Wenn du die Maske zur Entwurfzeit entwerfen willst (schönes Deutsch ;)), dann bleibt dir eigentlich nichts weiter übrig, als mit mehreren Panels oder sonstigen Containerkomponenten zu arbeiten. Die einzige Alternative ist das Erzeugen und Plazieren der entsprechenden Komponenten zur Laufzeit, was natürlich entsprechend viel Code erfordert.
Um die Menge der Masken zu reduzieren solltest du dir überlegen, ob sich nicht bestimmte Eingaben zu einem Schritt zusammenfassen lassen.
PS. Mit 'Datensätzen' bezeichnet man üblicherweise das komplette Ergebnis einer solchen Eintragung (also z.B. Name+Adresse+Tel.nr.+Geb.datum). Ich habe deine oben zitierte Frage so interpretiert, dass du eigentlich 'viele Teilabfragen' meintest.
Für einen neuen Datensatz brauchst du natürlich keine neuen bzw. zusätzlichen Panels, da fängst du einfach wieder mit dem ersten an.
-
Danke erst mal für Deine Vorschläge,
stimmt Datensätze ist ein kompletter Block von Sätzen,
das sagt ja eigentlich auch schon das Wort "Satz" aus
aber das es keinen Weg um die Panels gibt das ärgert mich dann doch,
denn das ist ja ganz schäner Fummelkram. Kann ich die Panels nicht
auch auf einem Form2 "Deponieren" und mir das gewünschte Panel während der
Laufzeit raus ziehen und auf dem Form1 darsrellen, wenn man dann auf
|WEITER| klickt wird das Panel wieder zurückgegeben bzw. entfernt und das
nächste Panel wird dann das dem Form2 in das Form 1 gezogen?
Ich will dies nämlich eigentlich nicht nur für die Eingabe von Daten
verwenden, sondern den Aufruf einzellner Programme in meine Programm.
Das kapiert bestimmt keiner...
Also was ich meine ist, das ich über die Nav-Leiste Programmteile meines
Programms aufrufen will. Ich will so z. B. ein Telefonverzeichnisprog,
einen Kalender etc. in mein Prog einbetten. Soll alles zusammen sein,
wird also wenn zusammen Compiliert!Danke nochmal
-
coder-beginner schrieb:
Kann ich die Panels nicht
auch auf einem Form2 "Deponieren" und mir das gewünschte Panel während der
Laufzeit raus ziehen und auf dem Form1 darsrellen, wenn man dann aufDafür gibt's seit dem BCB 5 Frames.
-
Hi,
du kannst auch ein PageControl nehmen....
Zum Designen die Tabs einblenden und denn wenn's fertig ist einfach die Tabs ausblenden und die TabSheets per Code durchschalten...MfG
Alexander Sulfrian
-
Ich danke Euch zweien für Eure konstruktiven Vorschläge.
Ich würde nun gerne deide einmal ausprobieren, hierzu
fehlt mir jedoch gerade mal die Routine, da ich ja noch
mit Frames oder PageControl gearbeitet habe, es hört sich aber
beides gut an, wenn Ihr vieleicht etwas ausführlicher werden könntet,
damit ich mir mehr drunter vprstellen kann - ohne jetzt tagelang die
FAQ oder Hilfe zurate zu ziehen - ?! Das währe super.
Mit den Frames z. B. ist es damit möglich nicht nur ein eigenständiges Fenster
zu creieren - das hab ich ja schon ausprobiert - sondern dieses Frame
in Form1 wie bei HTML einzubetten?!Da kann ich ja auch ein Frame in die
Main legen - das fällt ja obtisch noch nicht mal auf wenn es bei einem bleibt -Danke Euch!
-
coder-beginner schrieb:
sondern dieses Frame in Form1 [...] einzubetten?!Da kann ich ja auch ein Frame in die Main legen - das fällt ja obtisch noch nicht mal auf wenn es bei einem bleibt
Genau dafür sind Frames da. Und um das herauszubekommen muss man keineswegs tagelang die Hilfe studieren, da reicht ein kurzer Blick und ggf. 10 Minuten rumprobieren.