![]() |
DevExpress: TcxButton, Glyph zur Laufzeit ändern
Liste der Anhänge anzeigen (Anzahl: 1)
Hi
Ich steh zur Zeit völlig im Wald und zweifle an meinen Fähigkeiten: Ich hab einen TcxButton (ähnlich TBitBtn) und der soll zur Laufzeit ein anderes Bildchen zeigen. Ich habe wirklich hübsche Bitmaps in einer TImageList und ich will doch nur, das das Buttoni immer das nächste Bildchen anzeigt. Auf einer Paintbox krieg ich das gebacken, aber dieses /%§$%§-TcxButton busht rum und will einfach nicht. Bin ich zu blöd? :oops: Das hier hab ich:
Delphi-Quellcode:
Dann habe ich noch probiert, die Bitmap aus der Imagelist zu extrahieren (GetBitmap) und dann in das Button.Glyph.Canvas zu zeichnen. Klappt auch nicht. Bin ich zu dämlich dazu?
Procedure TForm1.cxButtonClick(Sender: TObject);
Begin cxButton.Tag := (cxButton.Tag + 1) Mod ilImages.Count; cxButton.Caption := format('Apply Bitmap [current %d]', [cxButton.Tag]); ilImages.Draw(cxButton.Glyph.Canvas, 0, 0, cxButton.Tag); End; Bitte bitte, erbarmt sich vielleicht einer von Euch? |
Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern
Hmmm, so geht's:
Delphi-Quellcode:
Keine optimale Lösung, aber vermutlich besser als nichts. :-)
procedure TForm1.cxButtonClick(Sender: TObject);
begin cxButton.Tag := (cxButton.Tag + 1) mod ilImages.Count; cxButton.Caption := format('Apply Bitmap [current %d]', [cxButton.Tag]); //ilImages.Draw(cxButton.Glyph.Canvas, 0, 0, cxButton.Tag); ilImages.Draw(FBitmap.Canvas, 0, 0, cxButton.Tag); cxButton.Glyph.Assign(FBitmap); end; procedure TForm1.FormCreate(Sender: TObject); begin //cxButton.Glyph.Width := ilImages.Width; //cxButton.Glyph.Height := ilImages.Height; FBitmap := TBitmap.Create; FBitmap.SetSize(ilImages.Width, ilImages.Height); end; procedure TForm1.FormDestroy(Sender: TObject); begin FBitmap.Free; end; |
Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern
Welche Version hast Du? Bei der aktuellsten Version 6.28 klappt es nämlich nicht. Leider.
Beim 1.Mal wird die Bitmap noch neu gezeichnet, aber danach geht nix mehr. Mein Workaround: Mit der TActionlist arbeiten. Ich habe schon einen Bugreport an DevExpress geschickt... |
Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern
Zitat:
Zitat:
Zitat:
|
Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern
Zitat:
Oder hab ich das mit den Versionsnummern falsch verstanden? |
Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern
Zitat:
Zitat:
|
Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern
Also: Es ist ein waschechter Bug, der sich in der 6.28'er eingeschlichen hat und bald gefixt wird. Es gibt einen Workaround, der es erlaubt, einmalig das Glyph zu setzen, aber das beliebige Überschreiben zur Laufzeit geht nicht.
Wie schon erwähnt, erzeuge ich nun Actions, die ich der Action-Eigenschaft des Buttons zuweise und damit klappt es. Ist auch sauberer. Gut zu wissen, das ich doch nicht zu blöd dafür bin. :stupid: Edit: Schlecht zu wissen, das ich wohl zu blöd bin erstens die Posts zu lesen (Version 31) und dann noch mal bei DevEx nachzuschauen, ob es eine neue Version gibt. Nun gut. Dann lass ich das eben mit den Programmieren. Und werde. Äh. Briefmarkenbefeuchter. Shit. Die sind ja selbstklebend. |
Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern
Zitat:
|
Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern
Vielleicht wäre noch eine Stelle als Zitronenfalter frei :lol:
|
Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 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