![]() |
Eingabefelder und Speichern
Hallo,
ich weiß nicht, ob es soetwas schon gibt. Einfaches Beispiel: Der Nutzer soll ein paar Daten eingeben z.B. seinen Namen, seine E-Mailadresse, Adresse, Augenfarbe, Lieblingshund usw. Diese Daten sollen dann später verarbeitet werden. Und jetzt meine Überlegung - weil ich sehr Faul bin: Ich müsste auf das Formular jeweils ein Label legen, eine Editfeld legen für den Namen. Dann das gleiche für seine E-Mailadresse usw. Das ganze muss benannt werden, dann z.B. in einer INI, DB oder was auch immer gespeichert werden. Angenehm wäre natürlich auch noch, gleiche Daten im Formularfeld als Vorgabe zu verwenden um eine schnelle Änderung zu erreichen usw. Ich finde, dass ist so eine klassische Routinearbeit die sehr lästig ist und immer wieder vorkommt. Und spätestens nach dem dritten Eingabefeld fängt das ganze an auf die nerven zu gehen. Gibt es da nichts vorgefertigtes, dass diese Aufgabe übernimmt? Sodass man nicht jedes Eingabefeld bearbeiten muss, dass man nicht jedes eingabefeld einzeln speichern muss usw. Oder eine Technik die das ganze vereinfacht? Ist ein bisschen ein "Luxusproblem". (Wenn es da noch keine Hilfestellung oder Tools gibt, ist es etwas, was ich in Zukunft machen werde.) Liebe Grüße |
AW: Eingabefelder und Speichern
Geht es um VCL? TValueListEditor oder TStringGrid.
|
AW: Eingabefelder und Speichern
Hallo,
vielleicht bringt das die richtige Richtung
Delphi-Quellcode:
Das gleiche geht mittels FindComponent natürlich auch anders herum. Defaultwerte geht über eine Ini recht einfach.
for i := 0 to ComponentCount - 1 do
begin if Components[i] is TEdit then begin Inhalt := TEdit(Components[i]).Text; // Hier jetzt irgendwas mit Inhalt machen z.B in INI Speichern. end; end;
Delphi-Quellcode:
Edit.Text := ini.ReadString('Section', 'Key', 'Defaultwert');
|
AW: Eingabefelder und Speichern
Schau mal nach dem Stichwort "Databinding". Geht das in die richtige Richtung?
Welche Frameworks da jetzt für Dich möglich sind, kann ich nicht sagen. |
AW: Eingabefelder und Speichern
Definiere eine Datenbank ... irgendetwas lokales reicht, auch ClientDataset und in Datei speichern. Dann spendiere Deiner Anwendung eine Connection-Komponente und eine Table bzw Query-Komponente, welche Du mit der Connection verbindest, Daten selektierst und dann auf Active schältst...wie das geht, ist der jeweiligen Dokumentation zu entnehmen.
Auf der Table bzw Query-Komponente einen Doppelklick machen, alle Felder hinzufügen und dann per Drag'n'Drop auf das Formular ziehst ... fertig. Geht schon seit Jahrzehnten. |
AW: Eingabefelder und Speichern
Willst du es jetzt als Anwender oder als Programmierer bequem haben?
|
AW: Eingabefelder und Speichern
Ja, sowas wie Struts in Java, das hätte ich für Delphi auch gern.
|
AW: Eingabefelder und Speichern
Also, zum einen musst du nicht immer ein separates Edit/Label erstellen, dafür gibt es ja auch die labelededit.
Zum anderen ist das Beispiel von hhcm eine Möglichkeit die "Masse" abzuarbeiten. Ich nutze dies z.B. um durchnummerierte (zusammenhängende) Komponenten z.B. beim Programmstart abzuarbeiten:
Delphi-Quellcode:
Auch bei den Buttons z.B. um auf die entsprechenden Werte zuzugreifen:
for i := 1 to 16 do //Da ich 16 entsprechende Komponenten habe.
begin //vorher gespeicherte Toolbar-Einstellungen laden TLabeledEdit(FindComponent('Tool' + inttostr(i) + 'E')).text := Ini.ReadString('Install', 'Tool' + inttostr(i), ''); //EditFeld (Programmpfad) TLabeledEdit(FindComponent('Tool' + inttostr(i) + 'P')).text := Ini.ReadString('Install', 'Tool' + inttostr(i) + 'P', ''); //Editfeld (Parameter) TLabeledEdit(FindComponent('Tool' + inttostr(i) + 'N')).text := Ini.ReadString('Install', 'Tool' + inttostr(i) + 'N', ''); //Editfeld (Name; Optional) //vorher gespeicherte Toolbar-Einstellungen setzen und entsprechende Komponenten mitgeben. Toolbarset(TLabeledEdit(FindComponent('Tool' + inttostr(i) + 'E')), TImage (FindComponent('Tool' + inttostr(i) + 'I')), TCheckBox (FindComponent('Tool' + inttostr(i) + 'C')), TLabeledEdit(FindComponent('Tool' + inttostr(i) + 'N')), TButton (FindComponent('Tool' + inttostr(i) + 'B'))); end;
Delphi-Quellcode:
Evtl. Hilft dir das etwas.
//Toolbarbuttons Click
procedure TTools.ToolClick(Sender: TObject); var Pfad : widestring; Parameter : widestring; Laenge : Integer; begin with sender as TButton do begin Laenge := length(Name) - 5; Pfad := widestring(TEdit(Tools.FindComponent('Tool' + copy(Name, 5, Laenge) + 'E')).Text); Parameter := widestring(TEdit(Tools.FindComponent('Tool' + copy(Name, 5, Laenge) + 'P')).Text); if Name <> 'Tool1B' then //Tool1B ist "reserviert" begin try StrToInt(copy(Name, 6, 1)); ShellexecuteW(Handle, 'open', PWideChar(Pfad), PWideChar(Parameter), nil, SW_SHOW); except ShellexecuteW(Handle, 'open', PWideChar(Pfad), PWideChar(Parameter), nil, SW_SHOW); end; end else begin UpdateC := True; Close; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 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