Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern (https://www.delphipraxis.net/118553-problem-mit-buttons-onmouseenter-alle-buttons-glaentzern.html)

Praxist 10. Aug 2008 22:24

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
 
>> hast du den Code mal so probiert?
Alle BitButtons bekommen das selbe Bilder OnMouseEnter, logisch
Aber jedes Bild soll ein bestimmtes Bild haben

mkinzler 11. Aug 2008 05:39

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
 
Wende den Code halt auf Sender an

Praxist 11. Aug 2008 07:47

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
 
Zitat:

Zitat von Praxist
>> hast du den Code mal so probiert?
Alle BitButtons bekommen das selbe Bilde OnMouseEnter, logisch
Aber jedes Bild soll ein bestimmtes Bild haben


DeddyH 11. Aug 2008 07:54

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
 
Dann müsste man eine Abfrage auf den Sender einbauen.
Delphi-Quellcode:
if (Sender = btn1) then
  ImageList1.GetBitmap(1, btn1.Glyph)
else if (Sender = btn2) then
  ImageList1.GetBitmap(2, btn2.Glyph)
...
Evtl. gibt es auch eine elegantere Methode, aber die fällt mir gerade nicht ein.

mkinzler 11. Aug 2008 07:56

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
 
Man könnte den Index als Tag im Button hinterlegen

DeddyH 11. Aug 2008 07:57

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
 
Stimmt, die Tag-Property vergesse ich immer wieder, dabei kann sie so nützlich sein :lol:

Praxist 11. Aug 2008 09:27

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
 
So sieht es aus :

Delphi-Quellcode:
procedure TForm1.DoOnEnter(Sender: TObject);
begin
 if (Sender = btn1) then begin Btn1.Glyph := nil;
  ImageList1.GetBitmap(1, btn1.Glyph); end
else if (Sender = btn2) then begin Btn2.Glyph := nil;
  ImageList1.GetBitmap(3, btn2.Glyph);end
  else if (Sender = btn3) then begin Btn3.Glyph := nil;
  ImageList1.GetBitmap(5, btn3.Glyph);end;
end;

procedure TForm1.DoOnLeave(Sender: TObject);
begin
  //(Sender as TBitBtn).Font.Style := (Sender as TBitBtn).Font.Style - [fsBold];
    if (Sender <> btn1) then begin Btn1.Glyph := nil;
  ImageList1.GetBitmap(0, btn1.Glyph);end
else if (Sender <> btn2) then begin Btn2.Glyph := nil;
  ImageList1.GetBitmap(2, btn2.Glyph); end
  else if (Sender <> btn3) then begin Btn3.Glyph := nil;
  ImageList1.GetBitmap(4, btn3.Glyph);end;
end;
Es funktioniert nicht schnell und das Button bekommt nicht sofort ein neues Bild
OnMouseLeave sondern nur nach hin und her den Cursor auf andere BitButtons bewegen !
Das ganze funktioniert mit einer Verzögerung
Btn3 wechselt sein Bild überhaupt nicht !

DeddyH 11. Aug 2008 09:33

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
 
Liest Du eigentlich, was wir hier schreiben? Markus' Idee mit dem Tag ist doch super, die musst Du nur umsetzen. Also: btn1 bekommt Tag 1, btn2 Tag 3 und btn3 Tag5 (im OI). Und nun müsste das so doch gehen:
Delphi-Quellcode:
procedure TForm1.DoOnEnter(Sender: TObject);
begin
  ImageList1.GetBitmap((Sender as TBitBtn).Tag, (Sender as TBitBtn).Glyph);
end;

procedure TForm1.DoOnLeave(Sender: TObject);
begin
  ImageList1.GetBitmap(Pred((Sender as TBitBtn).Tag), (Sender as TBitBtn).Glyph);
end;

Praxist 11. Aug 2008 10:37

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
 
Mit dem Tag funktioniert OnMouseEnter wunderbar :
Delphi-Quellcode:
procedure TForm1.DoOnEnter(Sender: TObject);
begin
   If (sender AS TBitBtn).Tag = 1 then begin
  ImageList1.GetBitmap(1, btn1.Glyph); end;
  If (sender AS TBitBtn).Tag = 2 then begin
  ImageList1.GetBitmap(3, btn2.Glyph); end;
    If (sender AS TBitBtn).Tag = 3 then begin
  ImageList1.GetBitmap(5, btn3.Glyph); end
end;
Mit OnMouseLeave kapiere ich immer noch nicht
Delphi-Quellcode:
procedure TForm1.DoOnLeave(Sender: TObject);
begin
  ImageList1.GetBitmap(Pred((Sender as TBitBtn).Tag), (Sender as TBitBtn).Glyph);
end;

mkinzler 11. Aug 2008 10:41

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
 
Ich würde keine feste Referenzen verwenden sonder den Sender auswerten
Delphi-Quellcode:
ImageList1.GetBitmap((Sender as TButton).Tag, (Sender as TButton).Glyph);


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz