Ver Mensaje Individual
  #15  
Antiguo 23-03-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
Cita:
Intento con una variable TStrings a la que asigno el memo y me da un error de acceso y si lo intento con una variable String me devuelve el error de incompatibilidad entre tipos String y TStrings.
No he entendido a que te refieres

Para guardar los memos tendrías que hacer algo así:
Código:
// Si el usuario decide guardar todo y salir de la aplicación

const MaxMemos = 5 ; // tendrás alguna forma de saber cuantos hay.
// lo más lógico sería guardarlo en un archivo ini
// Busca en el foro por "TiniFile"

var i,j,k:Integer;
    v : TLMDListItem;
begin
for k := 0 to MaxMemos do   // para cada memo
begin
  j:=  LMDStringList1.Add(v);  // vamos a guardarlo en este TString
    LMDStringList1.Items[j].Items.Assign(Memos[i].lines);
    LMDStringList1.SaveToFile('c:\mismemos.txt'); 
end;

end;
Memos[i]
========
De alguna forma tienes que saber cuantos memos hay creados, para poder acceder a ellos en tiempo de ejecución. Lo que se me ocurre de momento, es tener un array de TMemos, y hacer que apunte a los memos del PageControl.

Desde mi punto de vista, si optas por usar un LMDSTRINGLIST, ya tienes resulto el problema de guardar 4 o 40 memos. Ahora el problema sería mantener una lista de los TabSheet que hay abiertos.

Código:
var  Memos : array of TMemo; // creamos un array de memos
procedure CargarDesdeArchivo;
begin
  setlength(Memos, MaxMemos); // un array de 5 Memos

//   cuando creas un memo en tiempo de ejecución  tendrías que hacer algo parecido a esto:

  LMDStringlist1.loadfromfile('c:\Mismemos.txt');
  for i:=0 to MaxMemos do
  begin
    MisMemos[i]:= MemoCreadoEnEjecucion; // mismemos[i] apuntará al memo creado
    MisMemos[i].Lines.Assign(LMDstringList1.items[i].items);
  end;
end;
Que conste que lo he escrito de memoria... y tiene inconvenientes, ya que de momento el array contiene tantos memos como se cargan al inicio del programa; cuando se crea un nuevo memo, habría que crear espacio en el array MisMemos y añadirlo. Igualmente cuando se elimina uno... o sea, DEMASIADO trabajo de "mantenimiento". Mas facil puede resultar un TObjectList, (busca por el foro, hay algunos temas). Igual me estoy yendo por los cerros de Úbeda, (como decimos por mi tierra).

Lo que comenta Roman del ClientDataset, no lo he mirado, pero desde luego, puede ser la solución a implementar el programa con componentes nativos de delphi, en lugar de recurrir a componentes de terceros (LMDStringList)

Saludos
Responder Con Cita