Fórum Salvar Compente que Estiver Num Form #323176

10/06/2006

0

Caros,
preciso salvar componentes, que podem ser inseridos em Runtime, para que depois possam ser restaurados numa outra situacao.
Preciso salvar as caracteristicas do componente, tais como:

Name, Top, Left, Widh, Parent, Color, Tag, Heigth, etc...

Detalhe,
o Parent, pode variar, pode ser um Form, um Panel, um QuickReport...

resumindo, o componente que poderá ser inserido, pode ter um parent que nao é padrao um ´FORM´.

Alguem ???

Obrigado.


Pedih

Pedih

Responder

Posts

10/06/2006

Agsilva

Cara, use arquivos INI. Procurei e achei esse artigo aqui da DevMedia pra você:

https://www.devmedia.com.br/visualizaComponente.aspx?comp=1183&;site=3

:wink:


Responder

Gostei + 0

10/06/2006

Pedih

Cara, use arquivos INI. Procurei e achei esse artigo aqui da DevMedia pra você: https://www.devmedia.com.br/visualizaComponente.aspx?comp=1183&;site=3 :wink:


Olá AgSilva.
li a materia, porem, precisava de algo diferente.

o usuario insere um componente, em runtime, num panel por exemplo.

quando clicar em gravar, preciso que grave todas as propriedades deste componente que ele inserir no panel. (todas)... inclusive o Parent, que pode variar ... derepente, em vez de um panel, pode ser uma banda de um relatorio no fortesreport por exemplo, entendeu ???

mesmo assim,.obrigado pela dica.


Responder

Gostei + 0

10/06/2006

Agsilva

Uhm. Você pode definir procedimentos para a criação de buttons, edits, etc.. Por exemplo:

var
  button : TButton;
begin
  button := TButton.Create(Form); 
  with button do 
  begin 
    parent := Form; 
    caption := ´Click em mim!´;
    height := 32; 
    width := 128;
    left := 10;
    top := 50;
  end;
end;


Ok? Tenta lá. E mesmo depois disso, você pode armazenar as configurações num arquivo INI.


Responder

Gostei + 0

10/06/2006

Pedih

Uhm. Você pode definir procedimentos para a criação de buttons, edits, etc.. Por exemplo:
var
  button : TButton;
begin
  button := TButton.Create(Form); 
  with button do 
  begin 
    parent := Form; 
    caption := ´Click em mim!´;
    height := 32; 
    width := 128;
    left := 10;
    top := 50;
  end;
end;
Ok? Tenta lá. E mesmo depois disso, você pode armazenar as configurações num arquivo INI.



Agsilva... blz ??

tá .. entendi.

partindo deste acima que vc citou ... como eu salvaria estas propriedades num .INI ??
desculpe..mas nao consigui entender.

possui msn ou skype ???

No aguardo, grato pela atencao.. valeu mesmo.


Responder

Gostei + 0

10/06/2006

Agsilva

Bom, segue abaixo um exemplo. Leia todos os comentários que estão explicando passo a passo para que serve cada instrução:

var
  // inclua IniFile na cláusula Uses
  configurations : TIniFile;
  name: String;
  left : integer;
  top : integer;
  visible : boolean;
begin
  // variáveis recebendo os valores das propriedades
  name := Button2.Name;
  left := Button2.Left;
  top := Button2.Top;
  enabled := Button2.Enabled;
  visible := Button2.Visible;

  // criando um simples arquivo arquivo INI
  configurations := TIniFile.Create(´C:\Configurations.ini´);

  // abaixo, criando as seções e seus respectivos valores
  // note que o primeiro valor (seção) recebe a variável name

  // gravando valores inteiros através do WriteInteger
  configurations.WriteInteger(name,´Left´,left);
  configurations.WriteInteger(name,´Top´,top);

  // gravando valores boolean através do WriteBool
  configurations.WriteBool(name,´Enabled´,enabled);
  configurations.WriteBool(name,´Visible´,visible);

  configurations.Free;


Beleza cara? Qualquer coisa, só retornar.


Responder

Gostei + 0

10/06/2006

Agsilva

Corrigindo o primeiro comentário [i:c70fff3d1a]// inclua IniFile na cláusula Uses[/i:c70fff3d1a], para:

// inclua IniFiles na cláusula Uses


É no plural.

:wink:


Responder

Gostei + 0

10/06/2006

Pedih

Corrigindo o primeiro comentário [i:81e51c593a]// inclua IniFile na cláusula Uses[/i:81e51c593a], para:
// inclua IniFiles na cláusula Uses
É no plural. :wink:



var
// inclua IniFile na cláusula Uses
configurations : TIniFile;
name: String;
left : integer;
top : integer;
visible : boolean;
heigth : integer;
color : TColor;
FontName : String;
Parent : String;
begin
// variáveis recebendo os valores das propriedades
name := Label1.Name;
left := Label1.Left;
top := Label1.Top;
enabled := Label1.Enabled;
visible := Label1.Visible;
heigth := Label1.Height;
Color := Label1.Color;
FontName := Label1.Font.Name;
Parent := Label1.Parent.Name;

// criando um simples arquivo arquivo INI
configurations := TIniFile.Create(´C:\Configurations.ini´);

// abaixo, criando as seções e seus respectivos valores
// note que o primeiro valor (seção) recebe a variável name

// gravando valores inteiros através do WriteInteger
configurations.WriteInteger(name,´Left´,left);
configurations.WriteInteger(name,´Top´,top);
configurations.WriteInteger(name,´Heigth´,heigth);
configurations.WriteInteger(name,´Color´,color);

configurations.WriteString(name,´Font´,FontName);
configurations.WriteString(name,´Parent´,Parent);


// gravando valores boolean através do WriteBool
configurations.WriteBool(name,´Enabled´,enabled);
configurations.WriteBool(name,´Visible´,visible);

configurations.Free;



blz...

executei o seu codigo mais algumas coisas que acrescentei.

ficou do jeito que eu preciso..

agora, como eu restauro deste .INI ???

Desculpe te encher tanto.. heee :oops:


Responder

Gostei + 0

10/06/2006

Agsilva

Relaxa cara, a comunidade é pra isso mesmo.

Bom, é só fazer o contrário, isto é, trocar os Read por Write. Veja o exemplo só com a propriedade Top (não se esqueça de alterar a posição Top do Button2 antes de compilar, pra conferir o resultado):

var
  configurations : TIniFile;
  name : String;
  top : integer;
begin
  name := Button2.Name;

  // apesar de estranho, isso recupera o arquivo criado
  // ou seja, não será criado outro arquivo por cima
  configurations := TIniFile.Create(´C:/Configurations.ini´);

  // o contrário é ReadInteger
  top := configurations.ReadInteger(name,´Top´,top);
  Button2.Top := top;
end;


Bom, o resto das propriedades é contigo. Espero ter ajudado na sua empreitada. Qualquer coisa, só retornar.

[]s.


Responder

Gostei + 0

10/06/2006

Pedih

[quote=´agsilva´]Relaxa cara, a comunidade é pra isso mesmo.

Bom, é só fazer o contrário, isto é, trocar os Read por Write. Veja o exemplo só com a propriedade Top (não se esqueça de alterar a posição Top do Button2 antes de compilar, pra conferir o resultado):

var
  configurations : TIniFile;
  name : String;
  top : integer;
begin
  name := Button2.Name;

  // apesar de estranho, isso recupera o arquivo criado
  // ou seja, não será criado outro arquivo por cima
  configurations := TIniFile.Create(´C:/Configurations.ini´);

  // o contrário é ReadInteger
  top := configurations.ReadInteger(name,´Top´,top);
  Button2.Top := top;
end;


agsilva.
blz...
ja que esta diposto a me ajudar.. agradeco.. ae vai ...

mas veja o detalhe, no qual me esbarrei numa outra tentativa diferente desta sua

pra restaurar...
configurations := TIniFile.Create(´C:\Configurations.ini´);
---aqui pega o parent que ta o INI.
parent := configurations.ReadString(name,´Parent´,Parent);
b := TLabel.Create(Self);
b.Parent := ..... (como eu coloca uma string aqui...?)

Obrigado.

Abracos.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar