Einzelnen Beitrag anzeigen

Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Formular Variable in allgemeiner Funktion

  Alt 8. Mär 2019, 09:00
Wenn die Variable immer den selben Namen und Typ hat kannst du eine "Basis"-Form erstellen und davon ableiten:

Delphi-Quellcode:

...

type
  TfrmBasis = class(TForm)
  ...
  private
    FDeineVar: Integer;
    FOnDeineVarChanged: TNotifyEvent;
  protected
    procedure SetDeineVar(Value: Integer);
  public
    procedure ShowDeineVar;
    property DeineVar: Integer
      read FDeineVar write SetDeineVar;
    property OnDeineVarChanged: TNotifyEvent
      read FOnDeineVarChanged write FOnDeineVarChanged;
  end;

  TfrmBasisClass = class of TfrmBasis;

...

procedure TfrmBasis.ShowDeineVar;
begin
  ShowMessage('DeineVar ist "' + IntToStr(Self.DeineVar) + '"');
end;

procedure TfrmBasis.SetDeineVar(Value: Integer);
begin
  if FDeineVar <> Value then
  begin
    FDeineVar := Value;
    // Hier kannst du z. B. die Daten verarbeiten,
    // eine Routine aufrufen oder
    // ein Event auslösen:
    if Assigned(FOnDeineVarChanged) then
      Self.OnDeineVarChanged(Self);
  end;
end;
Und so leitest du ganz einfach ein Form davon ab:

Delphi-Quellcode:
...

uses
  Windows, ...,
  Basis; // <-- Basis-Unit/Form einbinden

type
  TfrmEins = class(TfrmBasis) // <-- Form von Basis ableiten
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
TfrmEins enthält nun alle Eigenschaften, Methoden, Variablen und Controls von TfrmBasis.

Und so kannst du eins aufrufen:

Delphi-Quellcode:
...

procedure TfrmMain.ShowForm(AFormClass: TfrmBasisClass;
  ADeineVar: Integer = 0);
var
  FormObj: TfrmBasis;
begin
  FormObj := AFormClass.Create(Self);
  try
    FormObj.DeineVar := ADeineVar;
    if FormObj.ShowModal = mrOK then
      Self.ShowCurrentDeineVar(FormObj);
  finally
    FreeAndNil(FormObj);
  end;
end;

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  Self.ShowForm(TfrmEins, 1234);
  Self.ShowForm(TfrmZwei, 5678);
  ...
end;
Im Anhang ist ein vollständiges Demo-Projekt inkl. Exe. Da habe ich für dich noch ein paar weitere Routinen eingebaut die dir die Verwendung verdeutlichen. Ich hoffe ich konnte dir damit helfen
Angehängte Dateien
Dateityp: zip FormAbleiten.zip (277,1 KB, 2x aufgerufen)
Andreas Lauß
Blog
  Mit Zitat antworten Zitat