Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-01-2019
mak8888 mak8888 is offline
Miembro
 
Registrado: sep 2003
Posts: 40
Poder: 0
mak8888 Va por buen camino
Guardar componentes del formulario a un archivo

Buenos días. Tengo una utilidad en la cual el usuario inserta dinámicamente objetos dentro de un Panel.
El problema radica en que me gustaría que pueda guardar la distribución de componentes inserta (y posicionada en el panel) a un archivo, de cara a poder restaurarlos posteriormente.
Aquí he visto un ejemplo en el que guardan un componente y posteriormente lo cargan, lo cual se aproxima mucho a lo que yo quiero.
Tengo dos problemas.
1. He intentado modificar la función de guardado para que guarde todos los componentes del Panel, pero solo guarda el último. Imagino que será por el "Memstrem.position := 0;", pero no sé porqué habría que cambiarlo.
Código Delphi [-]
procedure SaveComponentToFile(Component: TComponent; const FileName: TFileName);
var
  FileStream : TFileStream;
  MemStream : TMemoryStream;
  i : integer;
begin
  MemStream := nil;

  if not Assigned(Component) then
    raise Exception.Create('Component is not assigned');

  FileStream := TFileStream.Create(FileName,fmCreate);
  try
    MemStream := TMemoryStream.Create;
    for I := Form1.Panel1.ControlCount - 1 downto 0 do
        MemStream.WriteComponent(Form1.Panel1.Controls[i]);
    MemStream.Position := 0;
    ObjectBinaryToText(MemStream, FileStream);
  finally
    MemStream.Free;
    FileStream.Free;
  end;
end;

2. Al cargar el archivo de texto con el componente, por medio de la función LoadComponentFromFile, me da un error diciendo "property glyph data does not exists". Es decir, no consigue cargar el glyph del TBitBtn que previamente insertó el usuario y que se veía perfectamente cuando lo insertó.
Os muestro el código que guarda la función "SaveComponentToFile" y que posteriormente no es capaz de cargar la función "LoadComponentFromFile".

Cita:
object M1: TBitBtn
Left = 20
Top = 10
Width = 79
Height = 41
Caption = 'M1'
Glyph.Data = {
360C0000424D360C000000000000360000002800000020000000200000000100 ......
¿Se os ocurre cómo solucionarlo?
Gracias de antemano a todos.
Un saludo.
Responder Con Cita
  #2  
Antiguo 15-01-2019
mak8888 mak8888 is offline
Miembro
 
Registrado: sep 2003
Posts: 40
Poder: 0
mak8888 Va por buen camino
Al final lo solucioné gracias al código de esta publicación.
Gracias a todos.
Responder Con Cita
  #3  
Antiguo 15-01-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Los componentes RXlib también tienen opción para hacerlo, aunque ya lo has resuelto con el que indicas.
Responder Con Cita
  #4  
Antiguo 16-01-2019
mak8888 mak8888 is offline
Miembro
 
Registrado: sep 2003
Posts: 40
Poder: 0
mak8888 Va por buen camino
Gracias Casimiro.
Un saludo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar y Leer fotos directamente a una base de datos sin antes guardar como archivo rmeckbell Desarrollo en Delphi para Android 6 26-06-2017 18:24:20
Error al tratar de guardar los datos de un formulario whitesnakevm PHP 7 11-12-2012 01:11:10
Guardar Config. del formulario en BD DANY OOP 5 01-06-2006 17:48:22
Guardar en un archivo el vector de componentes de una form Majo Varios 33 19-02-2004 19:28:51


La franja horaria es GMT +2. Ahora son las 20:08:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi