Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#30

Re: Hinzufügen von neuen Ereignissen zu Komponenten

  Alt 2. Jul 2004, 08:30
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;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat