![]() |
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 |
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Wende den Code halt auf Sender an
|
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Zitat:
|
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Dann müsste man eine Abfrage auf den Sender einbauen.
Delphi-Quellcode:
Evtl. gibt es auch eine elegantere Methode, aber die fällt mir gerade nicht ein.
if (Sender = btn1) then
ImageList1.GetBitmap(1, btn1.Glyph) else if (Sender = btn2) then ImageList1.GetBitmap(2, btn2.Glyph) ... |
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Man könnte den Index als Tag im Button hinterlegen
|
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:
|
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
So sieht es aus :
Delphi-Quellcode:
Es funktioniert nicht schnell und das Button bekommt nicht sofort ein neues Bild
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; 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 ! |
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; |
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Mit dem Tag funktioniert OnMouseEnter wunderbar :
Delphi-Quellcode:
Mit OnMouseLeave kapiere ich immer noch nicht
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;
Delphi-Quellcode:
procedure TForm1.DoOnLeave(Sender: TObject);
begin ImageList1.GetBitmap(Pred((Sender as TBitBtn).Tag), (Sender as TBitBtn).Glyph); end; |
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. |
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