Avatar billede var Nybegynder
03. april 2007 - 21:17 Der er 16 kommentarer og
1 løsning

Skifte billede på billede når musen er over

jeg har en image1 som jeg gerne vil have skifter til image2 når musen er over og skifter tilbage til image1 når musen er væk. hvis i forstår hvad jeg mener :)
03. april 2007 - 21:30 #1
((Har det noget med [Delphi] programmering at gøre?))
Avatar billede nwn Nybegynder
03. april 2007 - 21:47 #2
Placere dette javascript på din side

<script type="text/JavaScript">
<!--
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
  if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</script>

Dernæst denne kode

<img src="http://www.xhero.dk/billeder/billede1" name="Image1" border="0" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image1','','billeder2',1)">
Avatar billede stone Forsker
03. april 2007 - 22:41 #3
procedure TForm1.SpeedButton1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
speedbutton1.Glyph.LoadFromFile('c:\temp\bulbon.bmp');
end;


procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
speedbutton1.Glyph.LoadFromFile('c:\temp\bulboff.bmp');
end;
Avatar billede stone Forsker
03. april 2007 - 22:46 #4
her med et image.....

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  begin
image1.Picture.LoadFromFile('c:\temp\bulboff.bmp');
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
image1.Picture.LoadFromFile('c:\temp\bulbon.bmp');
end;
Avatar billede hrc Mester
04. april 2007 - 07:55 #5
Vil de events ikke loade og loade i en uendelighed?
Avatar billede stone Forsker
04. april 2007 - 13:41 #6
Kun den ene da image eventen kun fyres af når musen er over/indenfor image,

derimod form1 event vil kører i en uendelighed, og det er selfølgelig ikke optimalt.

man kunne også putte de 2 billeder i en imagelist og så loade dem derfra

var
  Bitmap : TBitmap;
begin
  Bitmap := TBitmap.Create;
  ImageList1.GetBitmap(rx1.Tag, Bitmap);
  rx1.Glyph.Assign(Bitmap);
  Bitmap.Free;
  rx1.Tag := (rx1.Tag + 1) mod 2;
  end;
Avatar billede var Nybegynder
04. april 2007 - 14:04 #7
Ja men hvis jeg vil loade et billede på min computer kan andre computere jo ikke loade den fil?
Avatar billede stone Forsker
04. april 2007 - 16:16 #8
jo hvis du bruger imagelist....så er billederne i programmet

men faktisk kan du gøre det på den måde at ligge billederne i samme bibliotek som *.exe filen og så skrive....

image1.Picture.LoadFromFile('bulbon.bmp');
Avatar billede var Nybegynder
04. april 2007 - 23:58 #9
Jeg har prøvet med imagelist, så bliver knapperne mindre end dem jeg vil have. Hvis de er 32*32 så bliver de mindre. Kan dette ikke ændres?
Avatar billede stone Forsker
05. april 2007 - 00:31 #10
i properties kan du sætte størrelsen på dine image i imagelist
Avatar billede var Nybegynder
05. april 2007 - 17:57 #11
tak det virkede :)
Avatar billede kfz Nybegynder
05. april 2007 - 23:54 #12
er stadig ikke en optimal løsning på nogen måde.
Avatar billede js_delphi Nybegynder
07. april 2007 - 10:12 #13
Man kunne bruge en global bool variabel til at kontrollere, om det er förste gang,
mouse move eventen bliver aktiveret. Herved bliver eventen stadigväk aktiveret hele tiden, men loader kun billedet een gang.
Utestet:


//Global variabel. Initialiseres med false i FormCreate.
a: Bool;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if a = False then
  begin
    Image1.Picture.LoadFromFile('c:\temp\bulboff.bmp');
    a := True;
  end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if a = True then
  begin
    Image1.Picture.LoadFromFile('c:\temp\bulbon.bmp');
    a := False;
  end;
end;
Avatar billede kfz Nybegynder
07. april 2007 - 12:11 #14
lige præcis sparer en masse rescources i større programmer.
Avatar billede var Nybegynder
07. april 2007 - 12:41 #15
Kan jeg ikke bruge
Image1.Picture.assign(image2.picture);

istedet for
Image1.Picture.LoadFromFile('c:\temp\bulbon.bmp'); ?
Avatar billede kfz Nybegynder
07. april 2007 - 12:56 #16
jo hvis bulbon.bmp er loadet ind i image2, så kan du godt.
Avatar billede rekun Nybegynder
08. april 2007 - 19:56 #17
du kunne jo også bare bruge OnMouseEnter og OnMouseLeave
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