Thema: Delphi Fenster dynamisch

Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Fenster dynamisch

  Alt 23. Feb 2021, 06:34
Warum so kompliziert? Du kannst Dein Fenster wie andere auch bequem in der IDE zusammenstöpseln, zur Verwendung brauchst Du dann die *.pas und die *.dfm. Das könnte dann etwa so aussehen:
Delphi-Quellcode:
...
uses AuswahlDialog (* Unit mit dem entworfenen Fenster *);

procedure AuswahlDlg(Filelist: TStringList; out Filename: string);
var
  frm: TAuswahlDialogForm;
begin
  frm := TAuswahlDialogForm.Create(nil);
  try
    frm.FileList := FileList; // Files soll als Property von TAuswahlDialogForm deklariert sein
    if frm.ShowModal = mrOK then
      Filename := frm.Filename; //ebenso wie Filename
  finally
    frm.Free;
  end;
end;
Zu den Properties in TAuswahlDialogForm:
Delphi-Quellcode:
type
  TAuswahlDialogForm = class(TForm)
    LB: TListBox;
    btnOK: TButton;
    btnCancel: TButton;
    ...
  private
    function GetFileList: TStrings;
    procedure SetFileList(const Value: TStrings);
    function GetFilename: string;
    ...
  public
    property FileList: TStrings read GetFileList write SetFileList;
    property Filename: string read GetFilename;
    ...
  end;

...

function TAuswahlDialogForm.GetFileList: TStrings;
begin
  Result := LB.Items;
end;

procedure TAuswahlDialogForm.SetFileList(const Value: TStrings);
begin
  LB.Items.Assign(Value);
end;

function TAuswahlDialogForm.GetFilename: string;
begin
  if LB.ItemIndex > -1 then
    Result := LB.Items[LB.ItemIndex]
  else
    Result := '';
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (23. Feb 2021 um 06:59 Uhr) Grund: Properties gleich benannt und Getter/Setter erweitert
  Mit Zitat antworten Zitat