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/)
-   -   Komponente daten ablegen (https://www.delphipraxis.net/152535-komponente-daten-ablegen.html)

Kellerassel 26. Jun 2010 07:53

Komponente daten ablegen
 
Hi

mal wieder ne Komponenten Frage :roll:

Wenn ich eine Image Komponente auf mein Formular ziehe, und dann ein Bitmap lade, das Projekt abspeicher, so ist bei nächsten laden des Projektes das Bild des Image wieder da.
Das Bild des Image wird in der dfm datei abgelegt.

Nun Habe ich eine eigene Komponente, in der ich mit einem Bitmap arbeite, lade ich ein Bitmap, speichere ich das Projekt, ist das Bitmap beim reload des Projekts weg.
Nun gehe ich hin und speicher einfach das Bitmap wenn es im Objektinspektor zugewiesen wird unter dem KomponentNamen.bmp (FBitmap.SaveToFile(Name);

Wenn das Projekt aber nicht gespeichert ist, wird das BMP auf dem desktop gespeichert. ich weiß ja auch zu dieser Zeit nicht wo das Projekt gespeichert wird.
Wie kann ich es erreichen das das BMP erst gespeichert wird, wenn das Projekt gespeichert wird, ich also den Projekt Pfad weiss?:cry:


oder mache ich das ganze zu kompliziert?

über tips wäre ich dankbar

LG

Uwe Raabe 26. Jun 2010 08:39

AW: Komponente daten ablegen
 
Es ist sicher auch möglich, die Komponente so zu schreiben, daß das Bitmap in der DFM gespeichert wird. Dazu bräuchten wir allerdings mal etwas Code.

Kellerassel 26. Jun 2010 09:21

AW: Komponente daten ablegen
 
Delphi-Quellcode:
type
  THobel = class(TCustomControl)
  private
     FHobel_Bitmap           :Tbitmap;

   ....
function GetBitmap:Tbitmap;
procedure SetBitmap(bmp:TBitmap);
   ....



published
     property HG_Bitmap           :TBitmap       read GetBitmap               write SetBitmap;





procedure THobel.SetBitmap(bmp: TBitmap);
begin
 if FHobel_Bitmap=nil then FHobel_Bitmap:=TBitmap.Create;
 FHobel_Bitmap.Assign(bmp);
end;



function THobel.GetBitmap: Tbitmap;
begin
 if FHobel_Bitmap=nil then begin
   result:=nil;
   exit;
 end;
 result:=Tbitmap.Create;
 result.Assign(FHobel_Bitmap);
 FHobel_Bitmap.SaveToFile(Name);
end;


Wobei hier nur zum Testen das Bitmap in ' FHobel_Bitmap.SaveToFile(Name); ' gespeichert wird.

Sobald jetzt die Komponente auf das Form gezogen wird, wird das Bitmap gespeichert(zu der zeit ist es noch nil) weise ich dann im Objekt inspektor ein Bitmap zu,
wird es auf dem Desktop (Aktueller windows Pfad) abgespeichert.

Das ist ja auch alles völlig klar.

Ich habe mir halt nur angeschaut wie das in der Image Komponente gemacht wird, und die Funktioniert:-D.
Dort wird es wie gesagt erst beim speichern des Projekts in der DFM abgelegt.

Nur wie erreiche ich das zu dem Zeitpunkt innerhalb der komponente ?


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