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 Uwe Raabe
Uwe Raabe

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

AW: Image.Data / ImageList in DFM

  Alt 26. Aug 2012, 19:12
Wo nimmt die ImageList die Info her daß das Image, in diesem Falle, 16x16 ist ?
Die Default-Werte für Width und Height sind 16, deswegen stehen die nicht in der DFM.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 26. Aug 2012, 19:19
Wenn du den ImageIndex eines Buttons setzt, muss dieser ja auch irgendwie eine Referenz zur ImageList haben (z.B. beim ToolButton die über die Toolbar). In diesem Fall werden aber beim Setzen des ImageIndex die Bildchen in der Dropdown-Liste angezeigt. Ist das bei dir nicht so?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Image.Data / ImageList in DFM

  Alt 26. Aug 2012, 19:49
Danke erst mal...
Zitat:
Ist das bei dir nicht so
bei manchen Komponenten ja, bei manchen nicht (z.B. AdvGlowButton)

inzwischen habe ich folgendes gefunden:
Zitat:
First isolate the Object section:

Object ilMain: TImageList
..down to:
end

then use ReadComponent to read the object just like delphi does.
ich quäle mich gerade damit. Bekomme immer "Ungültiges Stream Format"
  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
 
#4

AW: Image.Data / ImageList in DFM

  Alt 26. Aug 2012, 22:00
ich quäle mich gerade damit. Bekomme immer "Ungültiges Stream Format"
Machst du aus dem Text-DFM denn auch ein Binary-DFM? Schau mal nach ObjectTextToBinary.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Image.Data / ImageList in DFM

  Alt 27. Aug 2012, 07:19
Danke für die Info...

...aber das hatte ich schon getan. Ich vermute, daß es daran liegt, daß mehrere gleiche TPngImageList vorhanden sind und es sich um die DFM eines DataModuls handelt. Wenn ich den Stream als Datamodule "einlese" bekomme ich die Meldung daß die Klasse TPngImageList nicht bekannt ist. Logisch, denn mein dynamisch erzeugtes Datamodule hat keine uses...

Ich habe dann erst mal abgebrochen... Für Ideen bin ich dankbar.

Versuchslabor:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
  FFileStream:= TFileStream.Create('D:\Projekte\Delphi Unicode\eAV3\Arbeitskopie\Quelltext\dm_ImageLists.dfm',fmOpenRead);
  FMemoryStream:= TMemoryStream.Create;
  pngil16:= TPngImageList.Create(nil); // Namen vom Standard auf die Namen in der DFM geändert
  dmImageLists:= TDataModule.Create(nil);
  try
    ObjectTextToBinary(FFileStream,FMemoryStream);
    //FMemoryStream.LoadFromStream(FFileStream);
    FMemoryStream.Position:= 0;
    FMemoryStream.ReadComponent(pngil16); // auch Versuch das komplette DataModule einzulesen incl. ReadComponentRes
    //FImageList:= dmImageLists.FindComponent('pngil16') as TPngImageList;
    btn1.Images:= pngil16; //FImageList
    btn1.ImageIndex:= 100;
  finally
    FFileStream.Free;
    FMemoryStream.Free;
    pngil16.Free;
    dmImageLists.Free;
  end;
end;

Geändert von haentschman (27. Aug 2012 um 07:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Image.Data / ImageList in DFM

  Alt 27. Aug 2012, 08:59
Alle Componenten aus in der DFM müssen vorher registriert werden, sonst geht da nichts.
Delphi-Referenz durchsuchenRegisterClass.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

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
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:29 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