Delphi - Guardar componentes en archivo

   
Vista:

Guardar componentes en archivo

Publicado por Roberto Garcia (21 intervenciones) el 12/08/2008 09:40:46
Hola

Estoy intentado guardar algunos componentes en un archivo binario para guardar la configuracion de un machote para cartas en los cuales se puede modificar el logotipo y las caracteristicas del nombre de la empresa, direccion etc. etc. es decir que para el nombre de la empresa se puede modificar el tipo de fuente, tamaño, estilo alineacion etc. etc. y asi para cada uno de los elementos del machote.

Primero lo hice utilizando el registro de windows pero se me hizo muy complicado porque para cada elemento tendria una entrada en el registro por ejemplo para el nombre de la empresa tendria una entrada que se llmaria Titulo1 y ahi todos los valores para ese elemento como Fuente, tamanio, color, subrayado, negrita, italica etc, etc y asi para todos los demas elementos.

Pero me di cuenta que pues todas esas caracteristicas ya estaban implementadas en el componente Tlabel y para el logo el componente Timage, pero por alguna razon parece que no se guardan estos componenete he aqui la implementacion

TregMachote=record
Titulo1:Tlabel;
Titulo2:Tlabel;
Titulo3:Tlabel;
Logotipo:Timage;

Fecha:Tlabel;

Linea1:Tlabel;
Linea2:Tlabel;
end;

TarchivoMachote=file of TregMachote;

var
ArchivoMachote:TarchivoMachote;

Luego al momento de abrir el editor del machote tengo esto

assignFile(archivoMachote,ruta+'archivosmachote.dat');
{$i-}
reset(archivoMachote);
{$i+}
if ioresult <> 0 then begin
crearMachote;
end;

cargarValores

Luego dentro de crearMachote esta esto ( Vmachote : TregMachote )

rewrite(archivoMachote);

vMachote.Titulo1:=Tlabel.Create(Self);
.......

with vMachote.Titulo1 do begin
Caption:='Nombre de su Empresa';

with font do begin
size:=14;
style:=[FsBold];
Name:='Arial';
color:=0;
end;
Alignment:=taCenter;
visible:=True;
end;

..........

write(archivoMachote,vMachote);

Y en Cargar valores

vMachote.Titulo1:=Tlabel.Create(Self);
.........

seek(archivoMachote,0);
read(archivoMachote,vMachote);

image1.Picture:=vreceta.Logotipo.Imagen.Picture;

with vMachote.Titulo1 do begin
cabeza1.Caption:=caption;
cabeza1.Font:=font;
cabeza1.Visible:=visible;
end;

..............

La primera vez que se crea el archivo .dat si se ven las cadenas de inicializacion (como "Nombre de su Empresa") con los colores, tamaños y tipos de fuentes especificados y durante la primera vez si cierro el editor y se vuelve a abrir ahi estan los cambios y todo pero si cierro el programa y luego al volverlo a ejecutar se abre el editor de machote ya no aparecen las cadenas al parecer si se guardan los componenetes pero por ejemplo el campo caption esta vacio al igual que el campo picture de la imagen.

Alguien podria decirme a que se debe

Muchas gracias

Roberto
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Guardar componentes en archivo

Publicado por E.T. (1105 intervenciones) el 12/08/2008 18:25:23
Te sería mejor usar un archivo INI, checa esta página:

http://delphiallimite.blogspot.com/2006/08/guardando-y-cargando-opciones.html

Ya que no puedes guardar así tan simple componentes en un archivo, en la variable vMachote si se guardan todas las propiedades del label, pero en esta linea:

write(archivoMachote,vMachote);

No te va a escribir en un archivo todas sus propiedades, checa el articulo que te dejo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar