Thema: Delphi Auf Visible reagieren

Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Auf Visible reagieren

  Alt 24. Jul 2007, 21:50
Hi,

Ich habe dir mal ein Beispiel für einen Button geschrieben:


Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  // Das Event definieren
  TVisibleEvent = procedure(Sender: TObject; Visible: Boolean) of object;

  // Button neu definieren
  TButton = class(StdCtrls.TButton)
  private
    FOnVis: TVisibleEvent;
    function GetVis: Boolean;
    procedure SetVis(const Value: Boolean);
  public
    property Visible: Boolean read GetVis write SetVis; // Alte Visible Property überschreiben
    property OnVisible: TVisibleEvent read FOnVis write FOnVis; // Die Event-Property
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    procedure Test(Sender: TObject; Visible: Boolean); // Die procedure für das Event
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TButton }

function TButton.GetVis: Boolean;
begin
  Result := inherited Visible;
end;

procedure TButton.SetVis(const Value: Boolean);
begin
  inherited Visible := Value;
  if Assigned(FOnVis) then // Wenn Event gesetzt dann
    FOnVis(Self,Value); // ausführen
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.OnVisible := Test; // Event zuweisen
end;

procedure TForm1.Test(Sender: TObject; Visible: Boolean);
begin
  ShowMessage('ALARM!'); // Alarm anzeigen wenn Sichtbarkeit geändert wurde
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Button1.Visible := false; // zum testen
end;

end.
Ich hoffe das erklärt sich von selbst ansonsten frag ruhig. Aber ich hab ab 22 Uhr kein Internet mehr das heißt du musst dich eventuell gedulden

PS: Das sollte für Images analog funktionieren.

Der Vorteil ist hierbei das die VCL Komponenten aus der IDE direkt diese neuen Properties haben und du nicht alles zur Runtime erstellen musst nur wegen dem Event.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat