Newsgroup: it.comp.lang.delphi
Titolo: loadfromfile e savetofile in stringgrid

 
i metodi loadfromfile e saveto file sono comodissimi per molti
componeneti, purtroppo non riesco ad implementarne in una stringgrid
mi piacerebbe salvare le ipmpostazioni dell ecelle, dimensioni, font,
etc.. ma non riesco a trovare una soluzione efficiente.
Mi sembra troppo compolesso salvare le porprietą cella per cella.
Avete un consiglio?
Grazie!

 ha scritto nel messaggio
news:3bd6f52...@news.tiscalinet.it...

i metodi in generale di loadfromfile servono per leggere dati e salvare dati
e non impostazioni
cmq.. potresti provare a vedere i seguenti metodi (presi dall'help di
delphi)
il primo passato un componete lo salva su una stringa
e quindi potresti salvare la stringa su file
function ComponentToString(Component: TComponent): string;
var
  BinStream:TMemoryStream;
  StrStream: TStringStream;
  s: string;
begin
  BinStream := TMemoryStream.Create;
  try
    StrStream := TStringStream.Create(s);
    try
      BinStream.WriteComponent(Component);
      BinStream.Seek(0, soFromBeginning);
      ObjectBinaryToText(BinStream, StrStream);
      StrStream.Seek(0, soFromBeginning);
      Result:= StrStream.DataString;
    finally
      StrStream.Free;
    end;
  finally
    BinStream.Free
  end;
end;
questo presa una stringa di crea un Tcomponet.
function StringToComponent(Value: string): TComponent;
var
  StrStream:TStringStream;
  BinStream: TMemoryStream;
begin
  StrStream := TStringStream.Create(Value);
  try
    BinStream := TMemoryStream.Create;
    try
      ObjectTextToBinary(StrStream, BinStream);
      BinStream.Seek(0, soFromBeginning);
      Result := BinStream.ReadComponent(nil);
    finally
      BinStream.Free;
    end;
  finally
    StrStream.Free;
  end;
end;
Li ho utilizzati qualche volta  sono un pņ rigidi ma possono risultare utili
nel caso in cui hai molte proprietą da salvare.
prova a vedere se funziona
ciao

ho messo su una form due bottoni, uno salva, uno carica e gli ho
associato due procedure.
Ho messo pure una stringgrid da salvare....
unit USALVACOMP;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
  StdCtrls, Buttons, Grids;
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}
function ComponentToString(Component: TComponent): string;
var
  BinStream:TMemoryStream;
  StrStream: TStringStream;
  s: string;
begin
  BinStream := TMemoryStream.Create;
  try
    StrStream := TStringStream.Create(s);
    try
      BinStream.WriteComponent(Component);
      BinStream.Seek(0, soFromBeginning);
      ObjectBinaryToText(BinStream, StrStream);
      StrStream.Seek(0, soFromBeginning);
      Result:= StrStream.DataString;
    finally
      StrStream.Free;
    end;
  finally
    BinStream.Free
  end;
end;
function StringToComponent(Value: string): TComponent;
var
  StrStream:TStringStream;
  BinStream: TMemoryStream;
begin
  StrStream := TStringStream.Create(Value);
  try
    BinStream := TMemoryStream.Create;
    try
      ObjectTextToBinary(StrStream, BinStream);
      BinStream.Seek(0, soFromBeginning);
questa riga dà errore : identifier expect on line 1
      Result := BinStream.ReadComponent(nil);
    finally
      BinStream.Free;
    end;
  finally
    StrStream.Free;
  end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
VAR
F:TEXTFILE;
Begin
ASSIGNFILE(F,'NOMEFILE');
REWRITE(F);
WRITE(F,COMPONENTTOSTRING(STRINGGRID1 as tstringgrid));
CLOSEFILE(F);
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
VAR
F:TEXTFILE;
S:STRING;
begin
ASSIGNFILE(F,'NOMEFILE');
RESET(F);
READLN(F,S);
STRINGGRID1:=STRINGTOCOMPONENT(S) as tstringgrid;
CLOSEFILE(F);
end;
end.