Ich habe eine Komponente TMyPanel = class(TPanel) geschrieben.
Der Constructor (override) erweiter um
L1 := TLabel.Create(self) ein Label auf dem Panel zu erzeugen.
Geht auch. Kann auch die von mir gewünschten Eigenschaften von L1
im Objektinspector von TMyPanel ändern.
Soweit so gut.
Aber ich möchte nicht nur die EVENTs (z.B OnClick) vom Panel verwenden,
sondern ich möchte auch das OnClick Ereignis von dem Label, das
auf dem Panel liegt, auswerten, weil wenn man auf das Label clickt, dann
gibt es von dem daruter liegendem Panel kein OnClick Ereignis .
Alle Foren-Tutoriels durchkemmt, aber keine Antwort auf mein Problem
gefunden.
Jetzt brauche ich einen guten Tip
Delphi-Quellcode:
unit Switch;
interface
uses
SysUtils , Classes, Controls, ExtCtrls,
StdCtrls ,
Dialogs ,
Graphics ;
{
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Switch
}
type
TMyPanel =
class(TPanel)
private { Private-Deklarationen }
bDown : boolean ;
L1 : TLabel ;
L2 : TLabel ;
L3 : TLabel ;
xL1_Top : integer ;
xL1_Left : integer ;
xL1_Width : integer ;
xL1_Height : integer ;
xL1_Color : TColor ;
xL1_FontName : TFontName ;
xL1_FontColor : TColor ;
xL1_FontSize : integer ;
xL1_Caption : TCaption ;
constructor Create(AOwner: TComponent) ;
override ;
destructor Destroy ;
override ;
procedure Click ;
override ;
procedure SetState(bValue : boolean );
procedure Set_L1_Color(yL1_Color : TColor );
procedure Set_L1_FontColor(yL1_FontColor : TColor );
protected { Protected-Deklarationen }
public { Public-Deklarationen }
published { Published-Deklarationen }
property L1_Top : integer
read xL1_Top
write xL1_Top ;
property L1_Left : integer
read xL1_Left
write xL1_Left ;
property L1_Width : integer
read xL1_Width
write xL1_Width ;
property L1_Height : integer
read xL1_Height
write xL1_Height ;
property L1_Color : TColor
read xL1_Color
write Set_L1_Color ;
//xL1_Color ;
property L1_FontName : TFontName
read xL1_FontName
write xL1_FontName ;
property L1_FontColor : TColor
read xL1_FontColor
write Set_L1_FontColor ;
//xL1_FontColor ;
property L1_FontSize : integer
read xL1_FontSize
write xL1_FontSize ;
property L1_Caption : TCaption
read xL1_Caption
write xL1_Caption ;
property Down : boolean
read bDown
write SetState ;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('
Dirk', [TMyPanel]);
end;
constructor TMyPanel.Create(AOwner: TComponent);
begin
inherited create(AOwner) ;
L1 := TLabel.Create(self);
L1.Parent := self ;
L1.Visible := TRUE ;
xL1_Left := 25 ;
xL1_Top := 5 ;
xL1_Height := 17 ;
xL1_Width := 75 ;
xL1_Color := clWhite ;
xL1_FontName := '
Arial' ;
xL1_FontColor := clRed ;
xL1_FontSize := 8 ;
xL1_Caption := '
L1 = Label1' ;
L1.AutoSize := FALSE ;
// Festgeschrieben nicht änderbar !!
L1.Left := xL1_Left ;
L1.Top := xL1_Top ;
L1.Height := xL1_Height ;
L1.Width := xL1_Width ;
L1.Color := xL1_Color ;
L1.Font.
Name := xL1_FontName ;
L1.Font.Color := xL1_FontColor ;
L1.Font.Size := xL1_FontSize ;
L1.Caption := xL1_Caption ;
//==================================
L2 := TLabel.Create(self);
L2.Parent := self ;
L2.Visible := TRUE ;
L2.Left := 30 ;
L2.Top := 30 ;
L2.Height := 10 ;
L2.Width := 10 ;
L2.Caption := '
y2' ;
end;
destructor TMyPanel.Destroy ;
begin
if L1 <>
nIl then L1.Free ;
if L2 <>
nIl then L2.Free ;
if L3 <>
nIl then L3.Free ;
inherited destroy ;
end;
procedure TMyPanel.Set_L1_Color(yL1_Color : TColor );
begin
xL1_Color := yL1_Color ; L1.Color := xL1_Color ;
end;
procedure TMyPanel.Set_L1_FontColor(yL1_FontColor : TColor );
begin
xL1_FontColor := yL1_FontColor ; L1.Font.Color := xL1_FontColor ;
end;
procedure TMyPanel.Click ;
begin
if BevelOuter = bvRaised
then
begin
BevelOuter := bvLowered ;
bDown := TRUE ;
end
else
begin
BevelOuter := bvRaised ;
bDown := FALSE ;
end;
inherited Click ;
end;
procedure TMyPanel.SetState(bValue: Boolean);
begin
if bValue = TRUE
then
begin
bDown := TRUE ;
BevelOuter := bvLowered ;
end
else
begin
bDown := FALSE ;
BevelOuter := bvRaised ;
end;
end;
end.