Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Imagelist behält die hinzugefügten Bitmaps nicht (https://www.delphipraxis.net/102577-imagelist-behaelt-die-hinzugefuegten-bitmaps-nicht.html)

dot 31. Okt 2007 10:18


Imagelist behält die hinzugefügten Bitmaps nicht
 
Hallo Leute,

habe das Problem, dass meien Imagelist die ihr hizugefügten Bitmaps nicht behält.
Ich habe im Designmodus meine Imagelist, die auf einem Datenmodul "dm_fkal_ico" liegt mit 10 Bitmaps gefüllt.
Wenn ich nun zur laufzeit die Imagelist mit weiteren Bitmaps fülle, bleibe diese nicht drin, nur unmittelbar nach dem laden sind die vorhanden.
Delphi-Quellcode:
//Laden:
var sFile : String;

Bitmap := TBitmap.create;
Bitmap.width := 28;
Bitmap.height := 28;
sFile := Opendialog1.FileName;
Bitmap.loadFromFile(sFile);
Bitmap.Transparent := True;
Bitmap.TransparentMode := tmAuto;
fDM_FKAL_ICO.Imagelist1.AddMasked(Bitmap , Bitmap.TransparentColor);
brauche Rat :cry:

[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen - Mfg, SirThornberry[/edit]

Klaus01 31. Okt 2007 10:22

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
Hallo,

wie meinst Du das direkt nach dem Laden sind sie noch da?
Verschwinden die Bilder während des Programmlaufs oder nachdem Du
das Programm neu gestartet hast?

Grüße
Klaus

dot 31. Okt 2007 10:49

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
ich habe ein formular wo ich mit dem button "hinzufügen" die bilder zusätzlich in die Imagelist1 einfüge, wie oben gesehen, anschließend zeige ich die bilder in einem stringgrid.
Diese sind noch da und werden angezeigt.
wenn ich das formular schließe und wieder aufrufe und die Imagelist1 wieder abfrage sind die geladenen bilder weg???
das versteh ich nicht

Bernhard Geyer 31. Okt 2007 10:51

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
Zitat:

Zitat von dot
wenn ich das formular schließe und wieder aufrufe und die Imagelist1 wieder abfrage sind die geladenen bilder weg???

Mit einer neuen Instanz deines Formulares?

dot 31. Okt 2007 11:07

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
mit:
Delphi-Quellcode:
FO_ICONS := TFO_ICONS.Create(self);
  try
    if FO_ICONS.ShowModal = mrOK then
rufe ich mein Formular auf wo sofort mein Stringgrid mit den Werten der Imagelist1(die auf dem Datenmodul "dm_fkal_ico" liegt)
geladen wird.

nach erneutem aufruf wird mein stringdrid nur mit den 10 bildern, die ich während des Entwurfs in der Imagelist1 gespeichert habe gefüllt.
Es scheint mir so, als ob die Bilder nach dem hinzufügen nicht behalten werden, ich will ja das die Bilder dann fest drin sind und z.b auch im Entwurfsmodus sichtbar sind, da ich diese Imagelist1 auf anderen Formularen zur Darstellung meiner Icons verwende!?

[edit=sakura] [delphi]-Tags. Mfg, sakura[/edit]

mkinzler 31. Okt 2007 11:09

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
Die zur Laufzeit hinzugefügten Bilder werden auch nicht automatisch in der dfm gespeichert, sondern nur die zur Designzeit hinzugefügten.

Bernhard Geyer 31. Okt 2007 11:14

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
Zitat:

Zitat von mkinzler
Die zur Laufzeit hinzugefügten Bilder werden auch nicht automatisch in der dfm gespeichert, sondern nur die zur Designzeit hinzugefügten.

Können auch systembedingt gar nicht gespeichert werden. Sowohl NT/Vista-Sicherheitseinschränkungen als auch nervöse Virenscanner würde das unterbinden. Du mußt dir ein anderes Speicherkonzept für diese Informationen (Ini/Registry/XML-Datei/...) überlegen.

dot 31. Okt 2007 11:20

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
mit anderen worten mein user hat überhaupt keine möglichkeit seine bilder in meine Imagelist hinzuzufügen die dann auch dauerhaft drin bleiben?
muss ich die vom user hinzugefügten bilder erst in einem ordner alle ablegen und dann meine Imagelist jedesmal beim zugriff auf meine dm_fkal_ico mit den bildern aus dem ordner füllen?
ich bin echt verzweifelt :(

Deep-Sea 31. Okt 2007 11:28

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
Zitat:

Zitat von dot
mit anderen worten mein user hat überhaupt keine möglichkeit seine bilder in meine Imagelist hinzuzufügen die dann auch dauerhaft drin bleiben?

Doch, hat er schon, wenn du es so umsetzt.

Zitat:

Zitat von dot
muss ich die vom user hinzugefügten bilder erst in einem ordner alle ablegen [...]
ich bin echt verzweifelt :(

Nein, es würde ya reichen, wenn du dir die Pfade merkst.


PS: Ich hoffe, du gibst "FO_ICONS" auch wieder frei ?! ;)

mkinzler 31. Okt 2007 11:30

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
Der Ordner dürfte dann aber unter Vista nicht im Programmverzeichnis sein, weil die UAC auch dann zuschlägt.

dot 31. Okt 2007 11:44

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
danke für die Antworten euch allen, ich habe nun dies gemacht:

jedesmal wenn ich auf meine Imageliste auf dem fdm_fkal_ico zugreife, lade ich diese neu mit:

Delphi-Quellcode:
procedure TDM_FKAL_ICONS.DataModuleCreate(Sender: TObject);
begin
  Laden;
end;

//**************************************************
procedure TDM_FKAL_ICONS.Laden;
var
  FS : TFileStream;
  Filename : String;
  AppPath : String;
begin
  AppPath:=ExtractFilePath(ParamStr(0));
  AppPath:=IncludeTrailingBackSlash(AppPath);
  Filename:=AppPath+'Imageliste.iml';
  FS:=TFileStream.Create(Filename,fmOpenRead);
Try
  FS.ReadComponent(Imageliste1);
Finally
  FS.Free;
end;
end;
//***************************************************
beim Freigeben des DM mache ich dies:

procedure TDM_FKAL_ICONS.DataModuleDestroy(Sender: TObject);
begin
  Speichern;
end;

procedure TDM_FKAL_ICONS.Speichern;
var
  FS : TFileStream;
  Filename : String;
  AppPath : String;
begin
  AppPath:=ExtractFilePath(ParamStr(0));
  AppPath:=IncludeTrailingBackSlash(AppPath);
  Filename:=AppPath+'Imageliste.iml';
  FS:=TFileStream.Create(Filename,fmCreate);
Try
  FS.WriteComponent(Send_lad);
Finally
  FS.Free;
end;
end;
somit ist meine liste immer abgespeichert.

und dann habe ich das mit dem Hinzufügen so gelöst, dass ich nach dem "Hinzufügen" des Bitmap auf dem FO_ICONS sage:

fdm_FKAL_ICO.Speichern

[edit=sakura] [delphi]-Tags. Mfg, sakura[/edit]

mkinzler 31. Okt 2007 11:48

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
das was du machst ist wie erwähnt gefährlich unter Vista und wird unter XP ohne adminrechte u.U. auch fehlschlagen. benutzer haben/sollten keine Schreibrechte im Programmverzeichnis haben!

dot 31. Okt 2007 13:31

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
ja dann werd ich wohl die liste nicht im Programmverzeichnis speichern müssen :lol:

dot 31. Okt 2007 13:33

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
achja oben stehts ja schon, habs übersehen

gilt es denn dann für das gesamte Programmverzeichnis also:

/Programme/Mein Programm --> hier liegt die Exe
oder
kann ich das in

/Programme/Mein Programm/SystemOrdner/
speichern???

sakura 31. Okt 2007 13:36

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
@dot: Ich habe zwei Deiner Beiträge editiert und [delphi]-Tags eingefügt. Erledige dieses bitte in Zukunft selbständig :) Dazu einfach den Delphi-Code einfügen, markieren und den Button Delphi-Code über dem Editfeld klicken.

Danke,
...:cat:...

sakura 31. Okt 2007 13:37

Re: Imagelist behält die hinzugefügten Bitmaps nicht
 
Zitat:

Zitat von dot
/Programme/Mein Programm --> hier liegt die Exe
oder
kann ich das in

/Programme/Mein Programm/SystemOrdner/

Alles unterhalb /Programme geht nicht ;) Nutze dazu den Pfad Application Data im Benutzerverzeichnis. In der Code-Library findest Du Funktionen um dieses Systempfade zu ermitteln.

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:26 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