Newsgroup: it.comp.lang.delphi
Titolo: Problemi con RichEdit

Ciao a tutti sono nuova del NG,
ho iniziato da poco con delphi e devo dire che rispetto ad altri 
linguaggi lo trovo molto elegante e potente.
Tornando all'oggetto di questo messaggio il problema è questo: sto 
facendo una mini applicazione dove attraverso il cmdline passo alla mia 
applicazione il nome di un  file RTF da visualizzare, dopo di chè, 
attraverso una voce di menù, permetto all'utente di stampare il 
documento visualizzato.
Fino a qui nessun problema. Il problema viene fuori durante la stampa in 
quanto non vengono stampati i salti pagina.
Di certo so che i documenti RTF caricati e visualizzati hanno il codice 
'\page' infatti se apro gli stessi documenti sia con WORD sia con 
OpenOffice i salti pagina esistono e sono gestiti anche durante la stampa.
Il codice sorgente è questo:
procedure TMainForm.FormActivate(Sender: TObject);
var
   cmdl : String;
begin
   cmdl := ParamStr(1);	//File RTF passato alla linea di comando
   if FileExists(cmdl) then  RichEdit1.Lines.LoadFromFile(cmdl);
   if RichEdit1.Lines.Text = ''  then  Close;
end;
end.
Ho provato anche con il sorgente qui sotto (reperito in internet) ma i 
risultati non cambiano:
procedure TMainForm.FormActivate(Sender: TObject);
var
   cmdl : String;
   TempStream : TStringStream;
   FileHandle: Integer;
   iFileHandle: Integer;
   iFileLength: Integer;
   iBytesRead: Integer;
   Buffer: PChar;
begin
   cmdl := ParamStr(1);
   if FileExists(cmdl) then
     begin
       iFileHandle := FileOpen(cmdl, fmOpenRead);
         iFileLength := FileSeek(iFileHandle,0,2);
         FileSeek(iFileHandle,0,0);
         Buffer := PChar(AllocMem(iFileLength + 1));
         iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength);
       FileClose(iFileHandle);
       TempStream := TStringStream.Create(Buffer);
       RichEdit1.PlainText := False;
       RichEdit1.Lines.LoadFromStream(TempStream);
       TempStream.Free;
     end;
   if RichEdit1.Lines.Text = ''  then  Close;
end;
end.
Scusate per la lunghezza del messaggio.
Grazie 1000 a tutti
Sabrina

 OpenOffice i salti pagina esistono e sono gestiti anche durante la stampa.
E il codice che usi per stampare?
Versione di Delphi? Versione del sistema operativo?
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Grazie per la risposta
Io uso Delphi 7 Enterprise su SO XP HE
Il codice per stampare è:
procedure TMainForm.FilePrint(Sender: TObject);
begin
   if PrintDialog.Execute then
   begin
     RichEdit1.Print(RichEdit1.Lines.GetNamePath);
   end;
end;
Grazie
Sabrina
ACSH ha scritto:


 Sabrina
Il wrapper VCL del richedit è abbastanza scarso, quindi molte
caratteristiche non sono implementate o sono sviluppate male.
In effetti il tuo problema è facilmente replicabile, ma risolvibile
altrettanto facilmente: per le mie cose ho sempre usato il richedit
presente nella suite di componenti free Jedi e, provando con un file rtf
qualunque contenente dei "page break", tutto viene stampato
in maniera corretta.
Quindi la soluzione più semplice è: non usare il richedit standard
ma quello che trovi qui: 
http://homepages.codegear.com/jedi/jvcl/
Ciao
-- 
ACSH
[TurboDelphi]
Chi fa da se', fatica il doppio