Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#20

AW: Formular im Thread neu erzeugen

  Alt 24. Jul 2015, 13:19
Warum macht ihr euch das Leben so schwer? Ihr tut gerade so, als ob so ein Timer-Event die Monster-Performance-Bremse ist.
Delphi-Quellcode:
unit Form.MainForm;

interface

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

type
  TForm1 = class( TForm )
    EnsureCurrentDateTimer: TTimer;
    CurrentDateLabel: TLabel;
    procedure FormShow( Sender: TObject );
    procedure EnsureCurrentDateTimerTimer( Sender: TObject );
    procedure FormHide( Sender: TObject );
  private
    FCurrentDate: TDate;
    procedure SetCurrentDate( const Value: TDate );
    procedure DoRefreshFormData( );
    procedure DoEnsureCurrentDate( );
  protected
    property CurrentDate: TDate read FCurrentDate write SetCurrentDate;
  public

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  System.DateUtils;

procedure TForm1.DoEnsureCurrentDate;
begin
  CurrentDate := Date;
end;

procedure TForm1.DoRefreshFormData;
begin
  CurrentDateLabel.Caption := DateToStr( CurrentDate );
end;

procedure TForm1.EnsureCurrentDateTimerTimer( Sender: TObject );
begin
  DoEnsureCurrentDate( );
end;

procedure TForm1.FormHide( Sender: TObject );
begin
  EnsureCurrentDateTimer.Enabled := False;
end;

procedure TForm1.FormShow( Sender: TObject );
begin
  DoEnsureCurrentDate( );
  EnsureCurrentDateTimer.Enabled := True;
end;

procedure TForm1.SetCurrentDate( const Value: TDate );
var
  LValue: TDate;
begin
  LValue := DateOf( Value );
  if FCurrentDate <> LValue then
  begin
    FCurrentDate := LValue;
    DoRefreshFormData( );
  end;
end;

end.
Simpel und robust
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (24. Jul 2015 um 14:26 Uhr)
  Mit Zitat antworten Zitat