Avatar billede yousif Nybegynder
28. juli 2002 - 19:00 Der er 3 kommentarer og
3 løsninger

OnMouseLeave

Hej

Kan man ikke give en OnMouseLeave Event til en TImage??

Hvis ja, hvordan??


MVH
Yousif
www.subhi.dk
Avatar billede esoulman Nybegynder
28. juli 2002 - 19:18 #1
Hvis ikke du kan få det her til at virke, har jeg desværre ikke andre forslag:
http://www.gnomehome.demon.nl/uddf/pages/mouse.htm#mouse0
Avatar billede nico26 Nybegynder
28. juli 2002 - 19:25 #2
prøv det her

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Image1: TImage;
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
  private
    FOldWndProc : TWndMethod;
    procedure ImageWnd(var Message: TMessage);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

type
  TImageAccess = class(TImage);

procedure TForm1.ImageWnd(var Message : TMessage);
begin
  FOldWndProc(Message);

  if Message.Msg = CM_MOUSELEAVE then
    Beep;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FOldWndProc := Image1.WindowProc;
  Image1.WindowProc := ImageWnd;
end;

end.
Avatar billede yousif Nybegynder
28. juli 2002 - 19:35 #3
tak det virker nu..

nico22> ligger du et svar??
Avatar billede nico26 Nybegynder
28. juli 2002 - 19:40 #4
:)

btw - slet lige:

type
  TImageAccess = class(TImage);

det bruges ikke til noget :)
Avatar billede eht Nybegynder
28. juli 2002 - 21:02 #5
Du laver et nyt component der bygger på TImage hvor der er tilføjet følgende events: OnMouseEnter og OnMouseLeave.

Du laver en unit med følgende indhold:

//******************************************************
unit MyImageunit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls;

type
  TEntrarEvent = procedure(Sender: TObject) of object;
  TSalirEvent = procedure(Sender: TObject) of object;
  TMyImage = class(TImage)
  private
    { Private declarations }
    FOnEnter: TEntrarEvent;
    FOnExit: TSalirEvent;
    procedure CMMouseEnter(var msg: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
    property OnMouseEnter: TEntrarEvent read FOnEnter write FOnEnter;
    property OnMouseLeave: TSalirEvent read FOnExit write FOnExit;

  end;

procedure Register;

implementation

procedure TMyImage.CMMouseEnter(var msg: TMessage);
begin
  inherited;
 
  if Assigned(FOnEnter) then FOnEnter(Self);
end;

procedure TMyImage.CMMouseLeave(var msg: TMessage);
begin
  inherited;
  if Assigned(FOnExit) then FOnExit(self);
end;

procedure Register;
begin
  RegisterComponents('Additional', [TMyImage]);
end;

end.
//******************************************************
Denne unit gemmer du og registrerer som et nyt component.
Når det er installeret har du et component der hedder TMyImage som findes under Additional, Det fungerer fuldstændigt som TImage bortset fra de 2 nye events

//Erik
Avatar billede yousif Nybegynder
28. juli 2002 - 22:36 #6
Tak for alle jeres svar!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester