Wlasny format pliku??

0

Czesc
Mam problem tworze aplikacje MDI i na oknie MDICHild tworze dynamicznie komponenty TImage (takie puzle) i chce zapisac caly uklad do pliku tak abu pozniej mozna bylo wczytac ten plik i cos w niem pozmieniac.

Da sie cos takiego zrbic? Wie ktos jak?

0

Da sie cos takiego zrbic?

tak.

Wie ktos jak?

Ktos tam wie.

No ale pomijajać te pytania to najlepiej uzyć pliku Ini albo jeśli będizesz miał stałą ilośc tych Imagów to mozesz użyć prehistorycznych plików typowanych :d ( w artykułach masz fajnie wszysko opisane)

0

No wilasnie nie mam stalej liczby elementow ;)

0

No to zrób sobie plik z takimi polami:

Liczba imagow : integer;

Image0 position :TPoint
Image0 BitmapSize: integer
Image0 contents: TBitmap
...
Imagen position:TPoint
Imagen BitmapSize:Integer
Imagen contents: TBitmap

i użyj write i Blockwrite /read blockread do zapisu.

Przypominam, że bezposredni zapis do pliku zmiennej typu TBitmap (jak również TImage, string i wielu innych) jest bez sensu, bo zapisze Ci się tylko wskaźnik. Do TBitmap proponuję SaveToStream i zapisać ze Streamu przy pomocy BlockWrite. Odczyt też chyba najlepiej poprzez stream. (TMemoryStream)

0

e ? A nie można całego MDICHild do strumienia TFileStream ?

Zapis komponentu:

var
 FileStream : TFileStream;
begin
 if FileExists('setup.txt') then 
  FileStream := TFileStream.Create('setup.txt', fmOpenWrite) else
 FileStream := TFileStream.Create('setup.txt', fmCreate); 
 FileStream.WriteComponent(NazwaKomponentu); 
 FileStream.Free;

Odczyt komponentu:

procedure TMainForm.FormCreate(Sender: TObject);
var
 FileStream : TFileStream;
begin
 if not FileExists('setup.txt') then Exit; 
 FileStream := TFileStream.Create('setup.txt', fmOpenRead);
 FileStream.ReadComponent(NazwaKomponentu);
 FileStream.Free;
end;

Powinno zadziałać.

0

Dzieki wszystko dziala tylko i tak jest problem
W tym przypadku musze podac nazwe konkretnego komponentu a ja na formie MDIChild moge miec dowolna ilosc komponentow, sa one tworzone dynamicznie i nie koniecznie znam ich nazwy.

Jak mozna zliczyc komponentu i pobrac ich nazwy??

0
Form1.ComponentCount;
form1.Components[numer].Name;
0

Wszystko fajnie dziala ale nie na MDICHild :-/ Jak mozna zapisac zawartosc calej formy MDIChild do pliku ? POMOCY !!!

0

szukasz te wszystkie komponenty i sprawdzasz czy parentem jest ten Twoj mdichild..

0

No chyba straszny glup jestem bo nie wiem jak mam sprawdzic parenty!
Komponenty tworze w ten sposob:

begin
TImage.create(self).name:='obrazek'+IntToStr(licznik);
with TImage(FindComponent('obrazek'+IntToStr(licznik))) do
    begin
         parent:= (ActiveMDIChild as TMDIChild);
         height:=50;
         width:=50;
         top:=0; left:=0; picture.loadfromfile('bmp/1.bmp');
         stretch:=true;
         licznik:=licznik+1;
         onMouseMove:=Image1.OnMouseMove;
         onMouseDown:=Image1.OnMouseDown;
         onMouseUp:=Image1.OnMouseUp;
    end; 
end;

I za kazdym razem jak chce zliczyc to wyskakuje mi 0. Jak moge zapisac wszystko z formy MDIChild do pliku HELP !!

1 użytkowników online, w tym zalogowanych: 0, gości: 1