Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Eingabefelder und Speichern (https://www.delphipraxis.net/202864-eingabefelder-und-speichern.html)

Monday 16. Dez 2019 16:42

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

Der schöne Günther 16. Dez 2019 16:59

AW: Eingabefelder und Speichern
 
Geht es um VCL? TValueListEditor oder TStringGrid.

hhcm 16. Dez 2019 17:00

AW: Eingabefelder und Speichern
 
Hallo,

vielleicht bringt das die richtige Richtung

Delphi-Quellcode:
 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;
Das gleiche geht mittels FindComponent natürlich auch anders herum. Defaultwerte geht über eine Ini recht einfach.

Delphi-Quellcode:
 Edit.Text := ini.ReadString('Section', 'Key', 'Defaultwert');

stahli 16. Dez 2019 17:13

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.

joachimd 16. Dez 2019 20:39

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.

Luckie 16. Dez 2019 23:35

AW: Eingabefelder und Speichern
 
Willst du es jetzt als Anwender oder als Programmierer bequem haben?

TigerLilly 17. Dez 2019 08:55

AW: Eingabefelder und Speichern
 
Ja, sowas wie Struts in Java, das hätte ich für Delphi auch gern.

Moombas 17. Dez 2019 09:51

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:
    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;
Auch bei den Buttons z.B. um auf die entsprechenden Werte zuzugreifen:
Delphi-Quellcode:
//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;
Evtl. Hilft dir das etwas.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 Uhr.

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