AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ImageList und ToolBar

Ein Thema von Martin K · begonnen am 17. Mai 2006 · letzter Beitrag vom 17. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#1

ImageList und ToolBar

  Alt 17. Mai 2006, 19:17
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:
var b: TBitmap;
begin
  b := TBitmap.Create;
  ImageList1.GetBitmap(5, b);
  ToolBar1.Images.AddMasked(b, clBlack);
  b.Free;
end;
oder auch:
Delphi-Quellcode:
var ico: TIcon;
begin
  ico := TIcon.Create;
  ImageList1.GetIcon(5, ico);
  ToolBar1.Images.AddIcon(ico);
  ico.Free;
end;
Führt aber beides zu einer Exception und ich verstehe es einfach nicht

Wenn ich das ganze in ein TImage lade, funzen beide Codes ohne Probleme...


//Edit:
Wen's interressiert, das hier kommt:
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00444ED8 in Modul 'Project1.exe'. Lesen von Adresse 00000030'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: ImageList und ToolBar

  Alt 17. Mai 2006, 19:43
Schonmal geguckt, ob b <> nil?
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: ImageList und ToolBar

  Alt 17. Mai 2006, 19:51
Hallo Martin,

hast du der Toolbar zuvor eine (nicht notwendigerweise gefüllte) ImageList zugeordnet? Falls nicht, hat ToolBar1.Images den Wert NIL...

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: ImageList und ToolBar

  Alt 17. Mai 2006, 20:20
Zitat von Spider:
Schonmal geguckt, ob b <> nil?
Nee, b ist nicht nil.
Wie gasagt, in einem TImage wird's ganz normal angezeigt.


Zitat von Hawkeye219:
Hallo Martin,

hast du der Toolbar zuvor eine (nicht notwendigerweise gefüllte) ImageList zugeordnet? Falls nicht, hat ToolBar1.Images den Wert NIL...

Gruß Hawkeye
Das wird's wohl sein...

Ich kann also erst ein Bitmap mit ToolBar1.AddMasked... einfügen,
wenn ich der ToolBar eine ImageList zugeordnet habe???
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: ImageList und ToolBar

  Alt 17. Mai 2006, 20:25
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.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: ImageList und ToolBar

  Alt 17. Mai 2006, 20:31
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...
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: ImageList und ToolBar

  Alt 17. Mai 2006, 20:37
wieso denn wieder freigeben?

Toolbar.Images := TImageList.Create; Mensch, was willst du mehr?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: ImageList und ToolBar

  Alt 17. Mai 2006, 20:45
Zitat von DGL-luke:
Toolbar.Images := TImageList.Create; Mensch, was willst du mehr?
uuups....

Dann kann ich mir ja das hier komplett sparen:
Delphi-Quellcode:
var ImageList: TImageList;
begin
  ImageList := TImageList.Create;
  ToolBar1.Images := ImageList;
 ....
end;
//Edit:
...ganz vergessen:
Danke!!!!
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: ImageList und ToolBar

  Alt 17. Mai 2006, 20:49
....moment mal:
Toolbar.Images := TImageList.Create; Da will er ja noch einen AOwner: TComponent haben...
Schreib ich da einfach NIL rein?
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#10

Re: ImageList und ToolBar

  Alt 17. Mai 2006, 20:55
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.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  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 18:38 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