AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Eigenes Ereignis/Event in TForm mit Zugriff auf Steuerelemente des Forms
Thema durchsuchen
Ansicht
Themen-Optionen

Eigenes Ereignis/Event in TForm mit Zugriff auf Steuerelemente des Forms

Ein Thema von TUX_der_Pinguin · begonnen am 18. Mai 2017 · letzter Beitrag vom 19. Mai 2017
 
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#1

Eigenes Ereignis/Event in TForm mit Zugriff auf Steuerelemente des Forms

  Alt 18. Mai 2017, 10:29
Hallo,

die Überschrift klingt vielleicht komplizierter als es tatsächlich ist. Aber fangen wir erst mal damit an was ich vorhabe. Ich habe einen einfachen Dialog mit einem Fortschrittsbalken und zwei Label erstellt, diesen Dialog möchte ich jetzt universal in einem Programm an mehreren Stellen verwenden. Ich hatte daraufhin überlegt ob ich das über ein Event regeln kann, das hätte den Vorteil ich müsste nicht alle Fortschrittsanzeigen die ich benötige in den Dialog verlagern oder für jeden Fall einen komplett eigenen Dialog erstellen und das beste wäre das die Aufgabe die abgearbeitet werden soll auch in der Unit verbleiben kann wo sie hingehört. Ich habe nur keine Ahnung wie ich den Zugriff auf die Steuerelemente des Dialogs realisieren soll und ob es überhaupt eine Möglichkeit gibt dies so zu tun.

Delphi-Quellcode:
unit uProgressDialog;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ExtCtrls;

type
  TOnProgressEvent = procedure(Sender: TObject) of Object;

  TfrmProgressDialog = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    ProgressBar1: TProgressBar;
    Button1: TButton;
    TimerStartOnProgress: TTimer;
    function GetOnProgress: TOnProgressEvent;
    procedure SetOnProgress(Event: TOnProgressEvent);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TimerStartOnProgressTimer(Sender: TObject);
  private
    { Private-Deklarationen }
    FOnProgress: TOnProgressEvent;
  public
    { Public-Deklarationen }
    property OnProgress: TOnProgressEvent read GetOnProgress write SetOnProgress;
  end;

var
  frmProgressDialog: TfrmProgressDialog;

implementation

{$R *.dfm}

{ TfrmProgressDialog }

procedure TfrmProgressDialog.FormCreate(Sender: TObject);
begin
  //init
  TimerStartOnProgress.Enabled := False;
  TimerStartOnProgress.Interval := 250;
end;

procedure TfrmProgressDialog.FormShow(Sender: TObject);
begin
  //Timer aktivieren
  TimerStartOnProgress.Enabled := True;
end;

function TfrmProgressDialog.GetOnProgress: TOnProgressEvent;
begin
  result := FOnProgress;
end;

procedure TfrmProgressDialog.SetOnProgress(Event: TOnProgressEvent);
begin
  FOnProgress := Event;
end;

procedure TfrmProgressDialog.TimerStartOnProgressTimer(Sender: TObject);
begin
  //Timer deaktivieren
  TimerStartOnProgress.Enabled := False;

  //Ereignis ausführen...
  if Assigned(FOnProgress) then FOnProgress(Self);
end;

end.
Der Aufruf würde dann jeweils wie folgt statt finden. Es wird in der Unit in der der Fortschrittsbalken benötigt wird ein Ereignis erstellt und dann wird nur noch der Dialog aufgerufen und die vorher definierte Aufgabe wird ausgeführt. Die Schwierigkeit ist nur wie bekomme ich innerhalb der Prozedur zugriff auf die Steuerelemente des Dialogs.

Delphi-Quellcode:
procedure TfrmMain.Button1Click(Sender: TObject);
begin
  //Dialog erzeugen
  if frmProgressDialog = nil then frmProgressDialog := TfrmProgressDialog.Create(Application);
  try
    //Ereignis zuweisen
    frmProgressDialog.OnProgress := Progress;

    //Dialog anzeigen und das Ereignis verzögert ausführen
    frmProgressDialog.ShowModal;
  finally
    frmProgressDialog.Free;
  end;{try..finally}
  
end;

procedure TfrmMain.Progress(Sender: TObject);
begin
  {
  Hier müsste der Zugriff auf die verschiedenen Steuerelemente des Dialogs möglich sein

    - Fenster Überschrift (TFrom.Caption)
    - 2x Label (TLabel.Caption)
    - Fortschrittsbalken (TProgressBar)   
  }
   
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz