Podmiana obrazka po najechaniu myszą
Cel

Chcemy uzyskać efekt, aby po najechaniu myszą na obrazek(Image1a.bmp) został wyświetlony drugi obrazek (Image1b.bmp). Ma to przypominać prosty Rollover.

Końcowy efekt



Potrzebne komponenty

Nazwa

Klasa

Image1

TImage



Metoda

1) Wstawiamy komponenty, wypisane w powyższej tabeli i zmieniamy im właściwość name na taką jaka jest w kolumnie "Nazwa"

2) Klikamy podwójnie na obrazku i wybieramy rysunek początkowy.

3) Znajdujemy sekcję implementation i dodajemy deklarację zminnych, zapobiegnie ona mryganiu obrazka na niektórych komponentach:

var Image : boolean;


4) Klikamy podwójnie w pustym miejscu formularza i dodajemy kod:

Image := false;


5) Klikamy raz na obrazku i z zakładki Events wybieramy zdarzenie OnMouseMove. Dodajemy poniższy kod:

if Image = False then Image1.Picture.LoadFromFile('Image1b.bmp'); Image := true;


6) Klikamy w pustym miejscu formularza i ponownie z zakładki Evants wybieramy zdarzenie OnMouseMove. Tym razem dodajemy kod:

if Image = True then Image1.Picture.LoadFromFile('Image1a.bmp'); Image := False;


7) Uruchamiamy program.

Kod źródłowy

unit Unit1;   interface   uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;   type TForm1 = class(TForm) Image1: TImage; procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } end;   var Form1: TForm1;   implementation var Image : boolean;   {$R *.DFM}   procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Image = False then Image1.Picture.LoadFromFile('Image1b.bmp'); Image := true; end;   procedure TForm1.FormCreate(Sender: TObject); begin Image := false; end;   procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Image = True then Image1.Picture.LoadFromFile('Image1a.bmp'); Image := False; end;   end.


Autorem tekstu jest: Michał Siudziński
http://cpw.net.pl
Materiał dodany przez użytkownika: alphan