Einzelnen Beitrag anzeigen

Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Eingabefelder und Speichern

  Alt 17. Dez 2019, 10:51
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 <> 'Tool1Bthen //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.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

Geändert von Moombas (17. Dez 2019 um 11:06 Uhr)
  Mit Zitat antworten Zitat