Einzelnen Beitrag anzeigen

uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#1

Mausbotschaft von CollectionItem an Komponente übergeben

  Alt 5. Jan 2007, 13:43
Hallo,

ein besserer Titel ist mir leider nicht eingefallen, hoffe man versteht trotzdem was ich meine.

Bin immer noch am entwickeln meiner ersten Komponente, stehe aber im Moment gerade vor dem nächsten Problem. Zur Zeit verwende ich folgenden Source, um die Mausbotschaften MouseOver und MouseLeave meiner Items an die Komponente DateLine zu übergeben.

Delphi-Quellcode:

TControlDateItem = class(TGraphicControl)
  private
   FOnMouseOver : TNotifyEvent;
   FOnMouseLeave : TNotifyEvent;
   procedure MouseOver(var Message : TMessage); message CM_MOUSEENTER;
   procedure MouseLeave(var Message : TMessage); message CM_MOUSELEAVE;
...
   published
   property OnMouseOver : TNotifyEvent read FOnMouseOver write FOnMouseOver;
   property OnMouseLeave : TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
...
  end;

TDateLine = class(TCustomGrid)
  private
    FItemMouseOver : TNotifyEvent;
    FItemMouseLeave : TNotifyEvent;
    procedure ItemMouseOver(Sender : TObject);
    procedure ItemMouseLeave(Sender : TObject);
...
  published
    property OnItemLeave : TNotifyEvent read FItemMouseLeave write FItemMouseLeave;
    property OnItemDown : TMouseEvent read FItemMouseDown write FItemMouseDown;
...
end;

procedure TDateLine.UpdateItem(Item : TDateItem);
begin
if Item <> nil then
    begin
     with Item.FControlDateItem do
      begin
       OnMouseOver := ItemMouseOver;
       OnMouseLeave := ItemMouseLeave;
      end;
    end;
end;
Nun möchte ich auch MouseDown, MouseUp usw. übergeben.
Ich denke mal, daß ich mit folgendem Source auf dem richtigen Weg bin.

Delphi-Quellcode:
TControlDateItem = class(TGraphicControl)
  private
     FOnMouseDown : TMouseEvent;
     procedure MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer); override;
...
   published
     property OnMouseDown : TMouseEvent read FOnMouseDown write FOnMouseDown;
...
  end;

TDateLine = class(TCustomGrid)
  private
    FItemMouseDown : TMouseEvent;
    procedure ItemMouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer);
...
  published
    property OnItemDown : TMouseEvent read FItemMouseDown write FItemMouseDown;
...
end;
Die Zuweisung

Delphi-Quellcode:
procedure TDateLine.UpdateItem(Item : TDateItem);
begin
if Item <> nil then
    begin
     with Item.FControlDateItem do
      begin
...
       OnMouseDown := ItemMouseDown;
      end;
    end;
end;
funktioniert natürlich nicht da noch die Parameter
(Button: TMouseButton; Shift: TShiftState;X, Y: Integer);

übergeben werden müssen, und hier liegt mein Problem wie sollte die Syntax genau aussehen?

Danke schonmal an alle die sich dieses Problems annehmen.

Uwe
Miniaturansicht angehängter Grafiken
dateline_963.jpg  
Uwe
  Mit Zitat antworten Zitat