25. august 2003 - 17:11Der er
7 kommentarer og 1 løsning
Mouseover med .ico filer
Hej Eksperter. Jeg skal have lavet en mouseovereffekt, som skifter et billede (.ico) til et andet. Jeg havde en komponent som gjorde det (BSMorphbutton), men med den kan man ikke lave gennemsigtige .ico billeder, de fungerer bare som alm. billeder! Så det jeg skal bruge er koden til at skifte billedet når musen er over det!
Indsæt en ImageList og tilføj de to ønskede ikoner. Tilføj en procedure: procedure WndProc(var Message : TMessage); override;
og som implementation: procedure TForm1.WndProc(var Message : TMessage); var Icon: TIcon; begin if Message.LParam = Longint(Image1) then begin if (Message.Msg = CM_MOUSELEAVE) then begin Icon:=TIcon.Create; ImageList1.GetIcon(1,Icon); Image1.Picture.Icon := Icon; Icon.Free; end else if (Message.Msg = CM_MOUSEENTER) then begin Icon:=TIcon.Create; ImageList1.GetIcon(0,Icon); Image1.Picture.Icon := Icon; Icon.Free; end; end; inherited WndProc(Message); end;
I såfald tror jeg ikke at du har tilføjet proceduren som jeg skrev... I koden vil du se følgende: type TForm1 = class(TForm) ImageList1: TImageList; Image1: TImage;
Tilføj en ny linje efter "Image1: TImage;", hvor der står "procedure WndProc(var Message : TMessage); override;"... Herefter er WndProc 'declared'
Tak Kaper, du havde ret! Der er dog stadig et lille problem, billedet bliver meget mindre end det i virkeligheden er med din procedure!? Det kan jeg ikke lige forstå, ved du hvorfor?
Jeg tror, det er fordi det er ikoner, der skal passe ind i fx programmets titellinje - men det kan måske løses ved at konvertere dine ikon-filer til bitmaps og ændre koden en smule
Det skal være ikoner, fordi de SKAL være gennemsigtige! Jeg har sat image1 til at være et af ikonerne, men når jeg kører musen henover skifter den til det andet, som er for lille, og når musen fjernes skifter den til det første, som nu også er for lille! Håber du (eller en anden) kan hjælpe!
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.