AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi DevExpress: TcxButton, Glyph zur Laufzeit ändern
Thema durchsuchen
Ansicht
Themen-Optionen

DevExpress: TcxButton, Glyph zur Laufzeit ändern

Ein Thema von alzaimar · begonnen am 29. Jan 2008 · letzter Beitrag vom 30. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

DevExpress: TcxButton, Glyph zur Laufzeit ändern

  Alt 29. Jan 2008, 10:49
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?

Das hier hab ich:
Delphi-Quellcode:
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;
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?

Bitte bitte, erbarmt sich vielleicht einer von Euch?
Angehängte Dateien
Dateityp: zip cxbuttonmist_185.zip (80,1 KB, 10x aufgerufen)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#2

Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern

  Alt 29. Jan 2008, 11:09
Hmmm, so geht's:
Delphi-Quellcode:
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;
Keine optimale Lösung, aber vermutlich besser als nichts.
Uli Gerhardt
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern

  Alt 29. Jan 2008, 11:16
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...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#4

Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern

  Alt 29. Jan 2008, 11:28
Zitat von alzaimar:
Welche Version hast Du? Bei der aktuellsten Version 6.28 klappt es nämlich nicht. Leider.
Wir sind noch auf 6.26.

Zitat von alzaimar:
Beim 1.Mal wird die Bitmap noch neu gezeichnet, aber danach geht nix mehr.
Bei mir geht's mit Extra-Bitmap zum Cachen zuverlässig (AFAICT), ohne geht gar nix.

Zitat von alzaimar:
Ich habe schon einen Bugreport an DevExpress geschickt...
Die reagieren ja zum Glück recht schnell.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern

  Alt 29. Jan 2008, 11:37
Zitat von uligerhardt:
Zitat von alzaimar:
Welche Version hast Du? Bei der aktuellsten Version 6.28 klappt es nämlich nicht. Leider.
Wir sind noch auf 6.26.
Es gibt ja schon die Version 31.
Oder hab ich das mit den Versionsnummern falsch verstanden?
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#6

Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern

  Alt 29. Jan 2008, 12:04
Zitat von RavenIV:
Zitat von uligerhardt:
Zitat von alzaimar:
Welche Version hast Du? Bei der aktuellsten Version 6.28 klappt es nämlich nicht. Leider.
Wir sind noch auf 6.26.
Es gibt ja schon die Version 31.
Ja, aber wir brauchen (noch) D5.


Zitat von RavenIV:
Oder hab ich das mit den Versionsnummern falsch verstanden?
Nö, ich glaube nicht. Die Nummer hinter dem Punkt läuft synchron über alle DevEx-VCL-Produkte, während die vor dem Punkt produktspezifisch ist. Wir haben z.B. einmal 5.26 und einmal 6.26.
Uli Gerhardt
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern

  Alt 29. Jan 2008, 18:47
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.

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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#8

Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern

  Alt 29. Jan 2008, 19:21
Zitat von alzaimar:
Und werde.
Äh.
Briefmarkenbefeuchter.

Shit.
Die sind ja selbstklebend.
Die Welt ist einfach schlecht...
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern

  Alt 29. Jan 2008, 19:26
Vielleicht wäre noch eine Stelle als Zitronenfalter frei
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: DevExpress: TcxButton, Glyph zur Laufzeit ändern

  Alt 30. Jan 2008, 08:46
Zitat von DeddyH:
Vielleicht wäre noch eine Stelle als Zitronenfalter frei
Bei uns in der Firma könnten wir noch einen Klodeckelrunterklapper gebrauchen...
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz