AGB  ·  Datenschutz  ·  Impressum  







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

Image.Data / ImageList in DFM

Ein Thema von haentschman · begonnen am 26. Aug 2012 · letzter Beitrag vom 28. Aug 2012
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.429 Beiträge
 
Delphi 12 Athens
 
#1

AW: Image.Data / ImageList in DFM

  Alt 27. Aug 2012, 19:35
Soooo...

@himitsu:
das mit dem RegisterClass brachte mich schon mal einen Schritt weiter. Der Quelltext läuft durch. A enthällt die richtige Anzahl der enthaltenen Images... Nur der Button weigert sich den Index anzuzeigen...

Was habe ich nun vergessen ?
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var A: Integer;
begin
  FFileStream:= TFileStream.Create('D:\Projekte\Delphi Unicode\eAV3\Arbeitskopie\Quelltext\dm_ImageLists.dfm',fmOpenRead);
  FMemoryStream:= TMemoryStream.Create;
  pngil16:= TPngImageList.Create(nil);
  dmImageLists:= TDataModule.Create(nil);
  try
    ObjectTextToBinary(FFileStream,FMemoryStream);
    RegisterClass(TPngImageList);
    RegisterClass(TGDIPPictureContainer);
    FMemoryStream.Position:= 0;
    FMemoryStream.ReadComponent(dmImageLists);
    pngil16:= dmImageLists.FindComponent('pngil16') as TPngImageList;
    A:= pngil16.Count;
    btn1.Images:= pngil16;
    btn1.ImageIndex:= 10;
  finally
    FFileStream.Free;
    FMemoryStream.Free;
    pngil16.Free;
    dmImageLists.Free;
  end;
end;
Nachtrag: Diese Vorgehensweise funktioniert doch nur, wenn man weiß welche Objekte (Klassen) enthalten sind. Wie macht das denn die IDE ? Irgendwie verstehe ich das nicht...

Geändert von haentschman (27. Aug 2012 um 19:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.603 Beiträge
 
Delphi 12 Athens
 
#2

AW: Image.Data / ImageList in DFM

  Alt 27. Aug 2012, 19:47
Nachtrag: Diese Vorgehensweise funktioniert doch nur, wenn man weiß welche Objekte (Klassen) enthalten sind. Wie macht das denn die IDE ? Irgendwie verstehe ich das nicht...
Die IDE registriert die Komponenten beim Laden der diversen Packages. Wenn du deine App mit Packages compilierst, kannst du das auch nutzen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#3

AW: Image.Data / ImageList in DFM

  Alt 27. Aug 2012, 19:50
Delphi speichert sich das schon beim Kompilieren, wo der Compiler die entsprechende Typenliste zusammenstellt, anhand der Typen, welche im aktuellen Scope zu finden sind und die er in der DFM entdeckt.

Du könntes vorher über TReader die binäre DFM durchgehn, alle Klassennamen auslesen und diese über die RTTI suchen.

Eindeutig ist das aber nicht, da diese Typenbezeichner nicht eindeutig sind und es mehrere Typen mit dem selben Namen geben könnte.

@Uwe Raabe: Das ist auch nicht eindeutig.
Siehe z.B. mein TNTHack für's TDE, wo im Scope des Formulars andere Typen deklariert werden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (27. Aug 2012 um 19:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.429 Beiträge
 
Delphi 12 Athens
 
#4

AW: Image.Data / ImageList in DFM

  Alt 28. Aug 2012, 20:05
ich weiß, daß ich nerve

Nach vielen Versuchen im Labor... obiger Code läd die korrekte Anzahl an Komponenten (DataModule.ComponentCount), die korrekte Anzahl an Images in den ImageListen (Imagelist.Count)

Leider will der Button das Icon (png) nicht anzeigen. Wo ist der Trick ? Als würde die Imagelist zwar die Images laden aber ohne Bildinformationen...

Also Jungs... war wohl für euch zu einfach und für mich zu spät

wenn ich nach der Zuweisung im finally die ImageList freigebe kann logischerweise kein Bildchen da sein... Wenn ich den erwische der auf diese doofe Idee gekommen ist.

Geändert von haentschman (28. Aug 2012 um 20:48 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:25 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 by Thomas Breitkreuz