Einzelnen Beitrag anzeigen

Moombas
(Gast)

n/a Beiträge
 
#8

AW: Eingabefelder und Speichern

  Alt 17. Dez 2019, 09: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.

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