destructor TMMImage.Destroy; begin FPictureChange.Free; FOldPicture.Free; inherited Destroy; end;
procedure TMMImage.SetPicture(Value: TPicture); begin FPictureChange.Assign(Value); end;
procedure TMMImage.CMMouseEnter(var Message: TMessage); begin //First load save old picture FOldPicture.Assign(picture); //Then assign new picture picture.Assign(FPictureChange); end;
procedure TMMImage.CMMouseLeave(var Message: TMessage); begin //Restore old picture Picture.assign(FOldPicture); end;
procedure Register; begin RegisterComponents('GUSSE', [TmmImage]); end;
Gusse> det ser rigtigt nok ud, men jeg tror ikke helt det var det der blev spurgt om.
Sådan:
For en af de images du har på formen sætter du de 3 events op. D.v.s. at du vil have 3 procedurer:
procedure form1.mousedown(sender : tobject);
procedure form1.mouseup(sender : tobject);
procedure form1.mousemove(sender : tobject);
Derefter sætter du de tilsvarende events for alle de andre images til at pege på de samme events, d.v.s. at alle images har en onmousedown event der peger på form1.mousedown proceduren.
Du har nu 2 muligheder:
Du kan bruge if activecontrol = {imagenavn} then begin end;
for hver muligt image hvilket vil sige at du får en if/then struktur for hvert image, eller du kan bruge dette:
(sender as TImage).{property/metode} := bla bla
ex. hvis du vil sætte det image musen peger på enabled ville du skrive:
(sender as TImage).enabled := true;
Når du anvender (sender as xxx) arbejder du med det pågældende object direkte uden nødvendigvis at kende navnet.
Jeg håber at det var det du mente (ellers var jeg måske for hurtig med min kommentar til Gusse)
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin image4.picture.Assign((Sender as TImage).picture); end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin label1.Caption := (Sender as TImage).Name; end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin image5.picture.Assign((Sender as TImage).picture); end;
end.
DFM-filen: object Form1: TForm1 Left = 200 Top = 107 Width = 696 Height = 480 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Image1: TImage Left = 128 Top = 80 Width = 105 Height = 105 OnMouseDown = Image1MouseDown OnMouseMove = Image1MouseMove OnMouseUp = Image1MouseUp end object Image2: TImage Left = 248 Top = 80 Width = 105 Height = 105 OnMouseDown = Image1MouseDown OnMouseMove = Image1MouseMove OnMouseUp = Image1MouseUp end object Image3: TImage Left = 368 Top = 80 Width = 105 Height = 105 OnMouseDown = Image1MouseDown OnMouseMove = Image1MouseMove OnMouseUp = Image1MouseUp end object Label1: TLabel Left = 128 Top = 216 Width = 32 Height = 13 Caption = 'Label1' end object Image4: TImage Left = 144 Top = 248 Width = 105 Height = 105 end object Image5: TImage Left = 304 Top = 248 Width = 105 Height = 105 end end
NB! Af hensyn til eksemplets størrelse har jeg ikke billeder med i de anvendte images. Fyld selv en bitmap ind i Picture-property for de 3 images: Image1, Image2 og Image3. Når du fører musen over de 3 billeder vises imagenavnet i label1 og ved tryk-ned sættes billedet fra det image musen peger på ind i Image4 og når museknappen slippen (mouseUp) sætte billedet ind i Image5.
Enkelt og simpelt.
Og arnold>Hvis du har fået noget af Delphi der virker og som du er tilfreds med, også selvom det var privat (kollegaer) så må du for min skyld gerne give ham points'ne. Jeg kan godt overleve alligevel.
SJensen> Jeg er nu mere forundret over hvorfor han spørger efter noget, som han så vidt jeg ved allerede er klar over. Nu er der godt nok langt over til hvor han sidder (Danfoss er ikke et helt lille sted..), men jeg vil lige fange ham i morgen (Nu er du advaret Anold!). Efter kl 14 er han smuttet.
Anold har iøvrigt haft en del spørgsmål i dette forum på det sidste. De har alle haft relation til dynamisk oprettede images. Han er i det private igang med et program til editering og udprintning af CD-cover labels. Det ser udtil at blive et rigtigt sødt program - Jeg glæder mig ihvertfald til at se det når det er færdigt.
NiP
Synes godt om
Ny brugerNybegynder
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.