Einzelnen Beitrag anzeigen

firegyver

Registriert seit: 11. Feb 2009
13 Beiträge
 
#1

Sichtbarkeit von Klasseneigenschaft

  Alt 11. Feb 2009, 22:22
Hallo liebes Forum,

ich habe vor längerer Zeit eine im Internet gefundene Klasse zum nachträglichen Hinzufügen von OnMouseEnter- und OnMouseLeave-Events für TImage in meinen Quelltext eingebaut. Alles funktionierte wunderbar, bis ich die Strukturen, die die TImage enthalten, in eine neue Unit auslagern musste. Mir kommt es irgendwie so vor, als ob die nachträglich definierten Klasseneigenschaften für TImage nicht mehr sichtbar sind und von der originären TImage-Klasse überlagert werden. Könnt ihr mir da weiterhelfen?
Hier der grobe Quellcode der beiden Units:

Delphi-Quellcode:
unit AppManager;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, IniFiles, Spin, Menus, TypeDef;

type
  TImage = class(ExtCtrls.TImage)
  private
    FOnMouseEnter: TNotifyEvent;
    FOnMouseLeave: TNotifyEvent;
    procedure CMMouseEnter(var Msg: TMessage);message CM_MOUSEENTER;
    procedure CMMouseLeave(var Msg: TMessage);message CM_MOUSELEAVE;
  public
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  end;

  TForm1 = class(TForm)
    procedure MapNVisu;
  private
    { Private declarations }
    procedure DoOnEnter(Sender: TObject);
    procedure DoOnLeave(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1 : TForm1;
  ProgTupels : array of array of TProgTupel_type;

implementation

{$R *.dfm}

procedure TImage.CMMouseEnter(var Msg: TMessage);
begin
  if Assigned(FOnMouseEnter) then
    FOnMouseEnter(self);
  Msg.Result := 0;
end;

procedure TImage.CMMouseLeave(var Msg: TMessage);
begin
  if Assigned(FOnMouseLeave) then
    FOnMouseLeave(self);
  Msg.Result := 0;
end;

procedure TForm1.DoOnEnter(Sender: TObject);
var SenderName : string;
begin
  //dosomething
end;

procedure TForm1.DoOnLeave(Sender: TObject);
var SenderName : string;
begin
  //dosomething
end;

procedure TForm1.MapNVisu;
var r, c : Integer;
begin
    for r := 1 to 10 do
    begin
      for c := 1 to 10 do
      begin
        ProgTupels[r][c].Icon := TImage.Create(Form1);
        ProgTupels[r][c].Icon.Parent := Self;

        ProgTupels[r][c].Icon.OnMouseEnter := DoOnEnter;
        ProgTupels[r][c].Icon.OnMouseLeave := DoOnLeave;
      end;
    end;
end;

end.
Delphi-Quellcode:
unit TypeDef;

interface

uses
  ExtCtrls, StdCtrls;

type
  TProgTupel_type = record
    ProgID : Integer;
    Icon : TImage;
    La : TLabel;
  end;

implementation

end.
  Mit Zitat antworten Zitat