AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi SpeedButton: Glyph in der Laufzeit ändern mit ImageList
Thema durchsuchen
Ansicht
Themen-Optionen

SpeedButton: Glyph in der Laufzeit ändern mit ImageList

Ein Thema von MasterEvil · begonnen am 18. Dez 2005 · letzter Beitrag vom 8. Apr 2015
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von MasterEvil
MasterEvil

Registriert seit: 12. Feb 2005
Ort: Hannover
234 Beiträge
 
Delphi 7 Enterprise
 
#1

SpeedButton: Glyph in der Laufzeit ändern mit ImageList

  Alt 18. Dez 2005, 15:28
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:
ImageListButtons.GetBitmap(7,SpeedButton.Glyph); Das klappt auch wunderbar.
Nun will ich aber unter bestimmten Bedingungen, dieses Glyph ändern (das selbe Icon, nur mit einem Kreuz drauf).
Delphi-Quellcode:
ImageListButtons.GetBitmap(8,SpeedButton.Glyph);
SpeedButton.Glyph.Modified:=true;
Das geht ebenfalls problemlos.
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
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList

  Alt 18. Dez 2005, 16:12
und wenn du das bitmap zwischendurch löschst im button? was bleibt denn vom kreuz übrig?
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#3

Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList

  Alt 18. Dez 2005, 16:15
Hallo,

schon mal mit

SpeedButton.Refresh; probiert?

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Benutzerbild von MasterEvil
MasterEvil

Registriert seit: 12. Feb 2005
Ort: Hannover
234 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList

  Alt 18. Dez 2005, 16:52
@ibp:
aus mir unerfindlichen Gründen ist das Resultat das Selbe.
hatte ich auch schon probiert (Glyph.FreeImage).

@ManuMF:
bringt leider ebenfalls nichts.
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#5

Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList

  Alt 18. Dez 2005, 16:54
haben die bilder die gleiche größe?
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#6

Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList

  Alt 18. Dez 2005, 17:45
Hallo,

teste das mal:
Delphi-Quellcode:
SpeedButton1.Glyph := nil;
ImageList1.GetBitmap(1,SpeedButton1.Glyph);
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von MasterEvil
MasterEvil

Registriert seit: 12. Feb 2005
Ort: Hannover
234 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList

  Alt 18. Dez 2005, 20:56
@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
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList

  Alt 30. Mär 2006, 17:39
Hi,

hatte das gleiche Problem, was ich auch mit folgenden Code wie oben auch schon beschrieben lösen konnte :

Delphi-Quellcode:
  SpeedButton1.Glyph := nil;
  ImageList1.GetBitmap(0,SpeedButton1.Glyph);
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 :

Delphi-Quellcode:
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);
Damit tut sich jetzt allerdings wieder gar nichts mehr

Jemand ne Idee ?

Danke und Gruß
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList

  Alt 30. Mär 2006, 18:58
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:
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);
So könnte es funktionieren.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: SpeedButton: Glyph in der Laufzeit ändern mit ImageList

  Alt 30. Mär 2006, 19:26
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:
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;
Gruß
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  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 11:21 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