Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
Delphi XE3 Enterprise
|
AW: Event innerhalb einer Klasse umleiten
24. Mär 2013, 23:16
aufs mindeste beschränkt....
Delphi-Quellcode:
unit lal;
interface
uses
Windows, SysUtils, Variants, Classes, Graphics, Controls, ExtCtrls, StdCtrls;
type
TMyPanel = class(TPanel)
private
FmyEdit: Tedit;
function GetEvent: TKeyPressEvent;
procedure SetEvent( const Value: TKeyPressEvent);
public
constructor Create(AOwner: TComponent); override;
published
property OnMyKeyPress: TKeyPressEvent read GetEvent Write SetEvent;
end;
implementation
{ TMyPanel }
constructor TMyPanel.Create(AOwner: TComponent);
begin
inherited;
Width := 100;
Height := 50;
FmyEdit := Tedit.Create(self);
FmyEdit.Parent := self;
FmyEdit.Width := 50;
end;
function TMyPanel.GetEvent: TKeyPressEvent;
begin
Result := FmyEdit.OnKeyPress;
end;
procedure TMyPanel.SetEvent( const Value: TKeyPressEvent);
begin
FmyEdit.OnKeyPress := Value;
end;
end.
Anwendungsbeispiel
Delphi-Quellcode:
implementation
uses lal;
{$R *.dfm}
procedure TForm4.AKeyPressEvent(Sender: TObject; var Key: Char);
begin
Caption := Caption + Key;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
With TMyPanel.Create(self) do
begin
Parent := self;
OnMyKeyPress := AKeyPressEvent;
end;
end;
Da ich nicht sicher bin was genau Du suchst hier eine Version mit einer zusätzlichen internen Behandlung ...
Delphi-Quellcode:
unit lal;
interface
uses
Windows, SysUtils, Variants, Classes, Graphics, Controls, ExtCtrls, StdCtrls;
type
TMyPanel = class(TPanel)
private
FmyEdit: Tedit;
FKeyPressEvent: TKeyPressEvent;
procedure AInternalKeyPressEvent(Sender: TObject; var Key: Char);
public
constructor Create(AOwner: TComponent); override;
published
property OnMyKeyPress: TKeyPressEvent read FKeyPressEvent Write FKeyPressEvent;
end;
implementation
{ TMyPanel }
procedure TMyPanel.AInternalKeyPressEvent(Sender: TObject; var Key: Char);
begin
if Key=' A' then Key := ' B';
if assigned(FKeyPressEvent) then FKeyPressEvent(Self,Key);
end;
constructor TMyPanel.Create(AOwner: TComponent);
begin
inherited;
Width := 100;
Height := 50;
FmyEdit := Tedit.Create(self);
FmyEdit.Parent := self;
FmyEdit.Width := 50;
FmyEdit.OnKeyPress := AInternalKeyPressEvent;
end;
end.
Thomas Wassermann H₂♂ Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂♂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
Geändert von Bummi (24. Mär 2013 um 23:51 Uhr)
Grund: Erweiterung, wg. möglicherweise missverstandener Anforderung
|