Fórum Salvar Compente que Estiver Num Form #323176
10/06/2006
0
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
Curtir tópico
+ 0Posts
10/06/2006
Agsilva
https://www.devmedia.com.br/visualizaComponente.aspx?comp=1183&site=3
:wink:
Gostei + 0
10/06/2006
Pedih
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.
Gostei + 0
10/06/2006
Agsilva
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.
Gostei + 0
10/06/2006
Pedih
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;
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.
Gostei + 0
10/06/2006
Agsilva
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.
Gostei + 0
10/06/2006
Agsilva
// inclua IniFiles na cláusula Uses
É no plural.
:wink:
Gostei + 0
10/06/2006
Pedih
// inclua IniFiles na cláusula Uses
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:
Gostei + 0
10/06/2006
Agsilva
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.
Gostei + 0
10/06/2006
Pedih
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)