Avatar billede intel4004 Novice
13. oktober 2001 - 11:09 Der er 6 kommentarer og
2 løsninger

TImage skal skifte icon ved OnMouseMove

Jeg har et lille problem....

Jeg er helt ny indenfor delphi og bliver bare og mere forvirret over de eksempler som er er i delphi hjælp... Jeg behøver hjælp....

Mission:
Ved en OnMouseMove event på Panel6 skal jeg have Timage til at skifte icon(TIcon???)....
Iconet skal hentes fra en fil. Jeg har forsøgt med LoadFromFile....men jeg gør det vist forkert....

Jeg bruger delphi 5 Enterprise.....

Kan i hjælpe???

Avatar billede intel4004 Novice
13. oktober 2001 - 11:13 #1
RETTELSE:
Ved en OnMouseMove event på Panel6 skal jeg have Image1 til at skifte icon(TIcon???)....
Iconet skal hentes fra en fil. Jeg har forsøgt med LoadFromFile....men jeg gør det vist forkert....

Generelt skal jeg bruge koden for at få et TImage til at skifte et et andet Icon som den henter fra en fil.....

INTEL4004
Avatar billede intel4004 Novice
13. oktober 2001 - 11:14 #2
RETTELSE 2:
Generelt skal jeg bruge koden for at få et TImage til at skifte til et andet Icon som den jo henter fra en fil.....

(ingen misforståelser her)

INTEL4004

Avatar billede morten_s Nybegynder
13. oktober 2001 - 11:33 #3
Hej Intel

jeg ved ikke helt hvad det er du vil men følgende virker hos mig

procedure TForm1.Panel6MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Image1.Picture.LoadFromFile(\'c:\\icon1.ico\');
end;


istedet for \'c:\\icon1.ico\' skal du selvfølgelig angive korrekt navn og sti til dit billedeobjekt
Avatar billede dkn Nybegynder
13. oktober 2001 - 11:39 #4
Et panel har ikke et event kaldet onmouseover eller onmouse leave, som ellers ville være rart. Det vil nok også være for svært for dig som begynder at lave den event selv.

//Men du kunne jo istedet gøre sådan her:
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Image1.Picture.LoadFromFile(\'C:\\mitbilled.bmp\');
end;

//Og så på den component du har bag det andet panel, sætte den til at loade et andet billed:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Image1.Picture.LoadFromFile(\'C:\\mitandetbilled.bmp\');
end;


Eller skulle du jo bare sige at du godt kunne tænke dig et paneler med de andre events på :)
Avatar billede dkn Nybegynder
13. oktober 2001 - 11:39 #5
ups skulle være et svar
Avatar billede morten_s Nybegynder
13. oktober 2001 - 11:47 #6
Hvis det er et panel med kanpper du vil lave findes der en langt smartere løsning, hvor du loader dine billeder ind i en TImagelist, og så henter dem derfra.

Hvad skal det bruges til ?
Avatar billede intel4004 Novice
13. oktober 2001 - 12:35 #7
I skal have tak....det funker bare nu!!

>>dkn
Så man kan altså lave nye events???

INTEL4004
Avatar billede dkn Nybegynder
13. oktober 2001 - 13:43 #8
Det kan man da :)
Jeg lavede lige et panel med den nye event mouseenter og mouseleave, du kan jo se hvor nemt det er, gem den som NewXpanel.pas.

//****************************
unit NewXpanel;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;

type
  TNewXpanel = class(TPanel)
  private
    { Private declarations }
    FOnMouseEnter: TNotifyEvent;
    FOnMouseLeave: TNotifyEvent;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents(\'Samples\', [TNewXpanel]);
end;

{ TNewXpanel }

procedure TNewXpanel.CMMouseEnter(var Message: TMessage);
begin
  inherited;
  if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;

procedure TNewXpanel.CMMouseLeave(var Message: TMessage);
begin
  inherited;
  if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;
end.

//****************************

Prøv at installere den, den vil være under samples.
Du kan jo så prøve den fx. sådan:

procedure TForm1.NewXpanel1MouseLeave(Sender: TObject);
begin
caption := \'Cursor Inde\';
end;

procedure TForm1.NewXpanel1MouseEnter(Sender: TObject);
begin
caption := \'Cursor Væk\';
end;


//Dennis
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