![]() |
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Es geht mit dem Vorschlag. Sollen aber alle BitBtns den selben Effekt haben ?
Wenn ich den Effekt für ein bestimtes Button zuweise, bekomme ich Fehler: Undeclared BitBtn1 !
Delphi-Quellcode:
Bitbtn1.Font.Style := Bitbtn1.Font.Style + [fsBold];
|
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Da muss man etwas weiter ausholen:
Delphi-Quellcode:
Hier werden die beiden definierten Events nur für btn2 zugewiesen.
unit bla;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TBitBtn = class(Buttons.TBitBtn) private FOnMouseEnter: TNotifyEvent; FOnMouseLeave: TNotifyEvent; procedure CMMOUSEENTER(var Msg: TMessage); message CM_MOUSEENTER; procedure CMMOUSELEAVE(var Msg: TMessage); message CM_MOUSELEAVE; public constructor Create(aOwner: TComponent); override; property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; end; TForm1 = class(TForm) btn1: TBitBtn; btn2: TBitBtn; btn3: TBitBtn; procedure FormCreate(Sender: TObject); procedure DoOnEnter(Sender: TObject); procedure DoOnLeave(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} { TBitBtn } procedure TBitBtn.CMMOUSEENTER(var Msg: TMessage); begin inherited; if Assigned(FOnMouseEnter) then FOnMouseEnter(Self); end; procedure TBitBtn.CMMOUSELEAVE(var Msg: TMessage); begin inherited; if Assigned(FOnMouseLeave) then FOnMouseLeave(Self); end; constructor TBitBtn.Create(aOwner: TComponent); begin inherited; FOnMouseEnter := nil; FOnMouseLeave := nil; end; procedure TForm1.DoOnEnter(Sender: TObject); begin (Sender as TBitBtn).Font.Style := (Sender as TBitBtn).Font.Style + [fsBold]; end; procedure TForm1.DoOnLeave(Sender: TObject); begin (Sender as TBitBtn).Font.Style := (Sender as TBitBtn).Font.Style - [fsBold]; end; procedure TForm1.FormCreate(Sender: TObject); begin btn2.OnMouseEnter := DoOnEnter; btn2.OnMouseLeave := DoOnLeave; end; end. |
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Wie konnte ich für ein bestimmtes Btn ein bestimmtes Bild zuweisen ?
Delphi-Quellcode:
ImageList1.GetBitmap(2, Btn2.Glyph);
|
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Schau Dir in meinem Beispiel mal DoOnEnter und DoOnLeave an. Statt die Schriftart zu ändern, kannst Du dort auch andere Bilder zuweisen.
|
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
dort habe folgendes eingegeben
Delphi-Quellcode:
Aber die Bilder werden in alle Buttons angezeigt, wenn der Cursor auf ein Button kommt
procedure TForm1.DoOnEnter(Sender: TObject);
begin //(Sender as TBitBtn).Font.Style := (Sender as TBitBtn).Font.Style + [fsBold]; ImageList1.GetBitmap(1, Btn1.Glyph); ImageList1.GetBitmap(2, Btn2.Glyph); end; Das Bild soll aber nur angezeigt, wenn der der Cursor auf sein Button kommt Wie kann ich das machen ? Vorteil mit diesem Code die Buttons glitzern nicht : ) |
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Es kommt mir ein wenig so vor, als hättest Du das Prinzip nicht verstanden :gruebel:, oder wieso stehen da benannte Instanzen (Btn2 und Btn2)?
|
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Nicht ganz
|
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Also Praxist,
schau noch einmal in Beitrag #12 (hier nur ein Auszug mit Erläuterungen):
Delphi-Quellcode:
Ich hoffe das hilft, sieh es dir genau an.
...
procedure TForm1.DoOnEnter(Sender: TObject); begin //(Sender as TBitBtn).Font.Style := (Sender as TBitBtn).Font.Style + [fsBold]; //das brauchst du nicht, vielmehr folgendes: ImageList1.GetBitmap(1, (Sender as TBitBtn).Glyph); end; procedure TForm1.DoOnLeave(Sender: TObject); begin //(Sender as TBitBtn).Font.Style := (Sender as TBitBtn).Font.Style - [fsBold]; //hier genau dasselbe nur eben das andere Bildchen //ich weiß ja jetzt nicht welches, aber ungefähr so eben: ImageList1.GetBitmap(2, (Sender as TBitBtn).Glyph); end; procedure TForm1.FormCreate(Sender: TObject); begin //und hier ist es ganz wichtig, dass du für alle //Bitbtns Enter und Leave zuweist! //also nicht nur btn2.OnMouseEnter := DoOnEnter; btn2.OnMouseLeave := DoOnLeave; //sondern auch: btn1.OnMouseEnter := DoOnEnter; btn1.OnMouseLeave := DoOnLeave; //wenn das zu viele Komponenten sind dann //verwende eine Schleife die alle Komponenten durchläuft //und es den Bitbtns zuweist, //das gehört dann aber nicht in diesen Thread end; end. |
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Du hast auch das Button nicht hingeschrieben !
Delphi-Quellcode:
//das brauchst du nicht, vielmehr folgendes:
ImageList1.GetBitmap(1, (Sender as TBitBtn).Glyph); // für welches Button ? |
Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Zitat:
hast du den Code mal so probiert? Vielleicht funktioniert es!? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 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