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
