![]() |
SpeedButton: Glyph in der Laufzeit ändern mit ImageList
Hi leutz,
hab da ein kleines Problem mit dem SpeedButton. Und zwar erstelle ich einen button zur Laufzeit und weise ihm ein Glyph folgendermaßen zu:
Delphi-Quellcode:
Das klappt auch wunderbar.
ImageListButtons.GetBitmap(7,SpeedButton.Glyph);
Nun will ich aber unter bestimmten Bedingungen, dieses Glyph ändern (das selbe Icon, nur mit einem Kreuz drauf).
Delphi-Quellcode:
Das geht ebenfalls problemlos.
ImageListButtons.GetBitmap(8,SpeedButton.Glyph);
SpeedButton.Glyph.Modified:=true; Wenn ich nun aber das selbe mache, um wieder auf das ursprüngliche Bild zurück zu kommen (also ohne Kreuz), zeichnet er das Bild nicht komplett neu, ein Teil des Kreuzes bleibt erhalten. Ich finde leider nicht raus wieso oder wie ich das Problem löse. Jemand eine Idee? greetz Steffen |
Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList
und wenn du das bitmap zwischendurch löschst im button? was bleibt denn vom kreuz übrig?
|
Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList
Hallo,
schon mal mit
Delphi-Quellcode:
probiert?
SpeedButton.Refresh;
Gruß, ManuMF |
Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList
@ibp:
aus mir unerfindlichen Gründen ist das Resultat das Selbe. hatte ich auch schon probiert (Glyph.FreeImage). @ManuMF: bringt leider ebenfalls nichts. |
Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList
haben die bilder die gleiche größe?
|
Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList
Hallo,
teste das mal:
Delphi-Quellcode:
SpeedButton1.Glyph := nil;
ImageList1.GetBitmap(1,SpeedButton1.Glyph); |
Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList
@ibp:
ja, haben sie ;) @Lannes: wow, das hat funktioniert ;) Hatte es mit Glyph.Free versucht, aber dabei ist der dann immer abgeschmiert. Find ich nicht ganz logisch ... Aber nun gehts! thx greetz Steffen |
Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList
Hi,
hatte das gleiche Problem, was ich auch mit folgenden Code wie oben auch schon beschrieben lösen konnte :
Delphi-Quellcode:
Funzt auch wunderbar, jetzt hatte ich mir gedacht schön und gut, da ich das ganze für diverse Buttons mit diversen Imagelists brauche, schreibe ich mir ne Procedure dazu :
SpeedButton1.Glyph := nil;
ImageList1.GetBitmap(0,SpeedButton1.Glyph);
Delphi-Quellcode:
Damit tut sich jetzt allerdings wieder gar nichts mehr :shock:
procedure TfrmMain.GetBitmapFromImageList(TargetBmp: TBitmap; ImgIdx: Integer; SourceImgL: TImageList);
begin TargetBmp := Nil; SourceImgL.GetBitmap(ImgIdx,TargetBmp); end; // ... // Aufruf der Procedure GetBitmapFromImageList(speddButton1.Glyph,0,ImageList1); Jemand ne Idee ? Danke und Gruß |
Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList
Hallo DataCool,
mit Deiner Version setzt Du lediglich die lokale Variable (den Parameter) TargetBmp auf den Wert NIL. Du mußt einen Zeiger auf den SpeedButton übergeben und dessen Eigenschaft Glyph ersetzen:
Delphi-Quellcode:
So könnte es funktionieren.
procedure TfrmMain.GetBitmapFromImageList(aButton: TSpeedButton; ImgIdx: Integer; SourceImgL: TImageList);
begin aButton.Glyph := Nil; SourceImgL.GetBitmap(ImgIdx,aButton.Glyph); end; // ... // Aufruf der Procedure GetBitmapFromImageList(speddButton1,0,ImageList1); Gruß Hawkeye |
Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList
Hi,
ich wollte die Procedure extra mit Übergabe des TBitmap Objekts, weil ich das ganze nicht nur mit SpeedButtons verwenden wollte ;-) Habe jetzt auch ne Lösung gefunden die funktioniert :
Delphi-Quellcode:
Gruß
procedure TfrmMain.GetBitmapFromImageList(TargetBmp: TBitmap; ImgIdx: Integer; SourceImgL: TImageList);
Var tmpBmp : TBitmap; begin tmpBmp := TBitmap.Create; try SourceImgL.GetBitmap(ImgIdx,tmpBmp); TargetBmp.Assign(tmpBmp); finally FreeAndNil(tmpBmp); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 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