![]() |
ImageList und ToolBar
Hi Leute,
ich verstehe grad nur Bahnhof! Ich will einer ToolBar ein bestimmtes Bitmap aus einer ImageList hinzufügen. Das müsste doch so gehen:
Delphi-Quellcode:
oder auch:
var b: TBitmap;
begin b := TBitmap.Create; ImageList1.GetBitmap(5, b); ToolBar1.Images.AddMasked(b, clBlack); b.Free; end;
Delphi-Quellcode:
Führt aber beides zu einer Exception und ich verstehe es einfach nicht :gruebel:
var ico: TIcon;
begin ico := TIcon.Create; ImageList1.GetIcon(5, ico); ToolBar1.Images.AddIcon(ico); ico.Free; end; Wenn ich das ganze in ein TImage lade, funzen beide Codes ohne Probleme... //Edit: Wen's interressiert, das hier kommt: Zitat:
|
Re: ImageList und ToolBar
Schonmal geguckt, ob b <> nil?
|
Re: ImageList und ToolBar
Hallo Martin,
hast du der Toolbar zuvor eine (nicht notwendigerweise gefüllte) ImageList zugeordnet? Falls nicht, hat ToolBar1.Images den Wert NIL... Gruß Hawkeye |
Re: ImageList und ToolBar
Zitat:
Wie gasagt, in einem TImage wird's ganz normal angezeigt. Zitat:
Ich kann also erst ein Bitmap mit ToolBar1.AddMasked... einfügen, wenn ich der ToolBar eine ImageList zugeordnet habe??? |
Re: ImageList und ToolBar
Es ist natürlich unsaubere Programmierung, wenn dieses AddMask das nicht überprüft und im Notfall eine ImageList anlegt; allerdings solltest du dann selber machen und einfach eine auf den Klassenzeiger erstellen.
Also nicht unbedingt auf die Form erstellen und zuordnen, das gibt nur Durcheinander auf der Form, wenn du die Imagelist nicht bereits zur Designtime füllen willst. ;) |
Re: ImageList und ToolBar
Gibt es denn keine Möglichkeit, eine ImageList in einer Prozedur (also zur Laufzeit) zu erstellen, der ToolBar zuzuordnen und die ImageList danach wieder freizugeben?
...die ToolBar sollte dabei natürlich die Symbole behalten... |
Re: ImageList und ToolBar
wieso denn wieder freigeben?
Delphi-Quellcode:
Mensch, was willst du mehr?
Toolbar.Images := TImageList.Create;
|
Re: ImageList und ToolBar
Zitat:
Dann kann ich mir ja das hier komplett sparen:
Delphi-Quellcode:
//Edit:
var ImageList: TImageList;
begin ImageList := TImageList.Create; ToolBar1.Images := ImageList; .... end; ...ganz vergessen: Danke!!!! :thumb: |
Re: ImageList und ToolBar
....moment mal:
Delphi-Quellcode:
Da will er ja noch einen AOwner: TComponent haben...
Toolbar.Images := TImageList.Create;
Schreib ich da einfach NIL rein? |
Re: ImageList und ToolBar
Nur so als Hintergrundinfo: Auch das wäre kein Beinbruch, denn auch nach "Verfall" des lokalen Klassenzeigers "ImageList" hättest du in Toolbar.Images immer noch Zugriff auf den entsprechende Speicherbereich und könntest, solange die Toolbar noch existiert, die Imagelist freigeben bzw. dir den Klassenzeiger wieder holen, da die Tooblar die Imagelist höchstwahrscheinlich nicht selber freigibt.
Also, falls du die Tooblar aus welchem Grund auch immer freigeben willst, kannst du es so machen:
Delphi-Quellcode:
;)
procedure FreeToolbarAndAssociatedImageList(TB: TToolbar);
var IL: TImageList; begin IL := TB.Images; TB.Free; IL.Free; end; (Ja, eigentlich ist es Schwachsinn) //Roter Kasten: am besten die Form, oder die Toolbar. Wird der Owner freigegeben, wird das Eigentum ;) auch freigegeben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 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