Zitat von
iaby:
also es geht immer noch nicht!
es wird zwar kompiliert, aber die onmousedown prozedur wird einfach nie "betreten"
Tja, woran das wohl liegt??? Vielleicht daran, dass auch die GroupBox überhaupt nix davon mitbekommt, wenn ein TDigitLed auf ihr angeklickt wird??? Also:
Delphi-Quellcode:
TLedGroup = class(TCustomGroupBox)
private
...
FOnMouseDown: TMouseEvent;
...
protected
procedure SetOnMouseDown(Value: TMouseEvent);
public
...
published
...
property OnMouseDown read FOnMouseDown write SetOnMouseDown;
end;
...
procedure TLedGroup.CreateDigits;
var
f:byte;
aux: TComponent;
begin
for f:=1 to FMaxDigits do
begin
aux:=FindComponent('Led'+IntToStr(f));
if (aux=nil) then // if the led number does not exists
begin //creates the led
Led:=TDigitled.Create(self);
Led.Name:='Led'+IntToStr(f);
led.top:=Margin;
led.width:=Round((Width-Margin) / FMaxDigits);
led.left:=(f-1)*(Round((Width-Margin-Margin) / FMaxDigits))+Margin;
led.height:=height-(Margin+Margin);
led.OnMouseDown := FOnMouseDown; // <--- Hier noch allen DigitLeds das OnMouseDown zuweisen!!!
InsertControl(Led);
end;
end;
end;
// Allen DigitLeds das OnMouseDown zuweisen!!!
procedure TLedGroup.SetOnMouseDown(Value: TMouseEvent);
var
f:byte;
aux: TComponent;
begin
FOnMouseDown := Value;
for f:=1 to FMaxDigits do
begin
aux:=FindComponent('Led'+IntToStr(f));
(aux as TDigitLed).OnMouseDown := OnMouseDown;
end;
end;