![]() |
Problem mit ImageList.GetBitmap
Ok ich hab ein Problem mit der TImageList Komponente.
Ich will ein Bild aus einer TImageList in ein TImage kopieren.
Delphi-Quellcode:
Ich habe 4 Konstanten erstellt ähnlich:
ilIcons.GetBitmap(Icon, iIcon.Picture.Bitmap);
BILD1 = 1; BILD2 = 2; Wenn ich in dem oben gezeigten Code Icon durch eine Zahl ersetze, oder eben eine Konstante funktioniert alles wunderbar. Ich hab das ganze in eine procedur gepackt. Wenn ich nun eine Zahl für Icon übergebe funktioniert es, übergebe ich allerdings eine Konstante, funktioniert es nicht. Wieso funktioniert es nicht? Wo könnte der Fehler liegen? |
Re: Problem mit ImageList.GetBitmap
Hai Brainstalker,
wenn ich es richtig sehe musst darfst Du doch nicht .Bitmap übergeben sondern .Icon. |
Re: Problem mit ImageList.GetBitmap
Ne das mit .Bitmap ist schon richtig, da es sich hierbei um ein Bitmap handelt. Vielleicht haben dich die Variablennamen irritiert. Wie ich geschrieben habe, funktioniert es in drei von vier Fällen.
ilIcons: TImageList iIcon: TImage 1. Fall (direkter Aufruf mit Zahl):
Delphi-Quellcode:
Mir wird das richtige Bitmap angezeigt.
ilIcons.GetBitmap(2, iIcon.Picture.Bitmap);
2. Fall (direkter Aufruf mit Konstante):
Delphi-Quellcode:
Hier wird auch das richtige Icon angezeigt.
const
I_ICON = 2; ilIcons.GetBitmap(I_ICON, iIcon.Picture.Bitmap); 3. Fall (aufrufen der Funktion mit Zahl):
Delphi-Quellcode:
Funktioniert auch!
function blabla(Icon: integer);
begin ilIcons.GetBitmap(Icon, iIcon.Picture.Bitmap); end; blabla(2); 4. Fall (aufrufen der Funktion mit Zahl):
Delphi-Quellcode:
Funktioniert nicht!!!
function blabla(Icon: integer);
begin ilIcons.GetBitmap(Icon, iIcon.Picture.Bitmap); end; blabla(I_ICON); Ich rufe die Funktion aus einer anderen Unit auf. Die Konstanten stehen in der Unit mit der Funktion. Warum zum :evil: funktioniert das nicht? |
Re: Problem mit ImageList.GetBitmap
So ein ähnliches Probl. hatte ich auch schon einmal, als ich verschiedene Bitmaps aus einer ImageList
in eine Listbox kopieren wollte. (schohn länger her) :gruebel: Hatte dann folgende Lösung:
Delphi-Quellcode:
function GetFromImageList(AnyImageList: TImageList; IconIndex: Integer): TBitmap;
var Bmp: TBitmap; begin Bmp := TBitmap.Create; AnyImageList.GetBitmap(IconIndex, Bmp); GetFromImageList := Bmp; Bmp.Free; end; ... for i:=0 to 10 do Dings[i].Bitmap := GetFromImageList(ImageList1, i); ... |
Re: Problem mit ImageList.GetBitmap
Grundsätzlich würde ich mich hüten, Veriablennamen mit reservierten Wörtern (wie Index) oder Schlagwörtern (wie 'Icon') zu benutzen. Wer weiss, was der Kompiler draus macht. Ich verwende z.B. 'aIcon' oder, grammatikalisch korrekt, 'anIcon', 'aBitmap', oder 'anIndex', 'aIndex' etc.
Klassen-Felder haben effs am Anfang ('fField','fData','fIndex'). Ich finde das Problem sehr komisch. Bringt es denn was, die Parameter umzubenennen? Kann ich mir zwar nicht vorstellen, aber wer weiss. Dein 4.Fall: I_ICON ist eine Variable?, eine Konstante? oder was? |
Re: Problem mit ImageList.GetBitmap
@Brainstalker: bin auch der Meinung, dass du deine Konstanten überdeckst - code insight müsste dir bereits sagen, woher dein I_ICON genommen wird - wenn ich nicht irre.
[off-topic] Zitat:
Grüße vom marabu |
Re: Problem mit ImageList.GetBitmap
Zitat:
Zitat:
|
Re: Problem mit ImageList.GetBitmap
Hallo alzaimar,
danke für diesen Insider-Gag - werde ihn bei nächster Gelegenheit als spontane Eigen-Kreation verbauen. marabu |
Re: Problem mit ImageList.GetBitmap
Hab jetzt alles ausprobiert, aber nichts hat geholfen. Das mit der Namensgebung der Variablen werde ich mir zu Herzen nehmen, lag aber leider nicht daran.
Ich habs jetzt mit globalen und lokalen Konstanten probiert, auch da kein unterschied. Wie gesagt wenn ich ne Zahl übergebe gehts, bei ner Konstanten nicht. |
Re: Problem mit ImageList.GetBitmap
Zitat:
marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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