PDA

Ver la Versión Completa : Porque No Aparece?


ddd_ddd
27-10-2005, 21:19:16
tengo este codigo en el evento onclick de bitbtn1:



procedure TForm1.BitBtn1Click(Sender: TObject);
I:INTEGER;
begin
FORM2.QRMemo1.LINES.Clear;
FOR I:=1 TO MEMO1.LINES.Count DO
BEGIN
FORM2.QRMemo1.Lines:=(MEMO1.Lines);
END;
FORM2.QuickRep1.PREVIEW;
end;



al ciclo no le hagan mucho caso, yo lo usaba para otras cosas

mi pregunta es: ¿porque en la vista previa no aparece el contenido de qrmemo1?

cuando pongo un form2.show; si lo muestra. pero en la vista previa no

delphi.com.ar
27-10-2005, 21:24:56
Nooooo! Estas iterando con I pero... ¿Dónde usas I para obtener un item?


begin
QRMemo1.Lines.Assign(Memo1.Lines);
QuickRep1.PreviewModal;
end;


Saludos!

ddd_ddd
27-10-2005, 21:37:53
si lo pongo asi como tu dices me escribira todo lo que hay en el memo1 en una sola linea:

ejemplo:

si en memo1 tengo escrito esto:
no
se
puede

en qrmemo1 tendria en una sola linea no se puede

como yo lo tengo el qrmemo1 quedaria igual
no
se
puede

mi problema es que en la vista previa no aparece qrmemo1

delphi.com.ar
27-10-2005, 21:42:41
si lo pongo asi como tu dices me escribira todo lo que hay ¿Lo probaste o lo supones?

ddd_ddd
27-10-2005, 21:45:22
lo mio esta correcto ya lo hice. lo que pasa es que no me aparecia en la vista previa porque tenia dos qrband como title

delphi.com.ar
27-10-2005, 21:52:08
Ojo... tu código no solo no es correcto sino que es riesgoso.
Estas asignando un objeto TStrings perteneciente a un componente a otro TStrings perteneciente a otro. No creo que sea el caso, porque internamente hacen un Assign para mantener su misma lista, pero esta práctica, con algunas clases, puede producir que cuando uno de los dos componentes se destruya y destruya este TStrings, cuando el otro componente haga referencia a este TStrings produzca un Access Violation.
Por otro lado ciclas innecesariamente, porque no asignas los items del TStrings, sino asignas el mismo TStrings. Supongo que lo que quieres hacer es algo como:

var
i: Integer;
begin
Form2.QRMemo1.Lines.Clear;
for i := 0 TO Memo1.Lines.Count-1 do
Form.QRMemo1.Lines[i] :=(Memo1.Lines[i]);

Form2.QuickRep1.Preview;


Saludos!

ddd_ddd
27-10-2005, 22:07:07
si lo habia hecho asi, pero me marcaba error en los items

y si, ciclo inecesariamente

muchas gracias. por la advertencia, es cierto, ya lo habia pensado

roman
27-10-2005, 22:07:13
En todo caso quizá podría usar



Form2.QRMemo1.Lines.Clear;
Form2.QRMemo1.Lines.AddStrings(Memo1.Lines);


// Saludos