Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Richedit mit formatierten text füllen und drucken (https://www.delphipraxis.net/51176-richedit-mit-formatierten-text-fuellen-und-drucken.html)

BastardOp 7. Aug 2005 20:23


Richedit mit formatierten text füllen und drucken
 
Hallo

ich hab ein rich edit und möchte die auf Buttoclick mit formatierten text füllen. Also das gewissen text stellen farbig sind oder fet oder wie auch immer.
Diese formatierten text möchte ich nun auch noch drucken (das drucken an sich funzt schon) nur weiß ich nicht wie ich ein richedit mit formatiertem text füllen und mit diesen Formatierungen auch drucke.

Im mom drucke ich mit folgenen Code
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var
  i: Integer;
begin
IF printdialog1.Execute THEN
  with Printer do
    begin
      BeginDoc;
     WITH Printer.Canvas.Font DO
BEGIN
  Name := Richedit1.Font.Name;
  Size := Richedit1.Font.Size;
  Color :=Richedit1.Font.Color;
END;
      for i := 0 to Memo1.Lines.Count do
Canvas.TextOut(200,200 + (i *Canvas.TextHeight(Richedit1.Lines.Strings[i])),Richedit1.Lines.Strings[i]);

      EndDoc;
    end;
end;
ich hoffe mal ihr könnt mir helfen.

MfG
BastardOp

marabu 7. Aug 2005 20:49

Re: Richedit mit formatierten text füllen und drucken
 
Wenn du eh einen eigenen print job für die Ausgabe deines Textes aufmachst, dann könntest du auch die Methode Print der Komponente TRichEdit aufrufen.

marabu

BastardOp 7. Aug 2005 20:56

Re: Richedit mit formatierten text füllen und drucken
 
wenn ich richedit1.print(''); verwende habe ich aber keinen Rand und es passt nich der gesamte text auf die Seite.
Das drucken funzt mit dieser methode ja schon schon. Aber ich weiß halt nicht wie ich das richedit mit formatierten text füllen und mit diesen formatierungen auch drucke. oder kann ich mit der print methode vom roch edit die formatierungen mit drucken? wenn ja wie kann ich da den rand einstellen.

marabu 8. Aug 2005 07:55

Re: Richedit mit formatierten text füllen und drucken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn du RichEdit.Print() verwendest, dann wird dein Text mit allen Auszeichnungen gedruckt und auch über mehrere Seiten korrekt umgebrochen. Für das interaktive Auszeichnen deines Textes existiert - zumindest in meiner D7 Installation - ein Demo-Projekt namens RICHEDIT. Alternativ kannst du mit einem RTF-Editor formatierte Texte laden.

Die print margins setze ich mit einem Code von Chris Bray.

Grüße vom marabu

alf.stefan 8. Aug 2005 08:13

Re: Richedit mit formatierten text füllen und drucken
 
Hallo

versuch mal mit RichEdit1.PageRect den Rand bzw. Druckbereich einzustellen.

Gruß

Stefan

marabu 8. Aug 2005 08:27

Re: Richedit mit formatierten text füllen und drucken
 
Hallo Stefan,

vielen Dank für den Hinweis. Genau so wird das im angehängten Beispiel-Code gemacht.

marabu

BastardOp 8. Aug 2005 14:14

Re: Richedit mit formatierten text füllen und drucken
 
Hi
dickes thx der code funzt nach bissel rumprobieren bestens in meinem Projekt. Allerdings weiß ich immer noch nicht wie ich meine Rich edit mit einem vordefiniertem formatiertem text füllen, in dem auch zur laufzeit fesgelegte variablen füllen kann. ich hoffe da weiß auch wer etwas.

marabu 8. Aug 2005 14:27

Re: Richedit mit formatierten text füllen und drucken
 
Ich bemühe mich, aber dein offenes Problem verstehe ich wohl nicht so recht. Da existieren RTF-Dokumente, die du anzeigen möchtest und in denen an bestimmten Stellen der Inhalt von Programmvariablen eingesetzt werden soll?

marabu

BastardOp 8. Aug 2005 14:34

Re: Richedit mit formatierten text füllen und drucken
 
also ich weiß wie ich einem rich edit über den OE einen standart text geben kann und ich kann halt wenn das proggie läuft text ins feld eingeben.
Aber ich möchte nun text in dem gewisse stellen fet oderr größer sind und in dem Variablen vorkommen. Aber ich weiß nicht wie ich diese automatisch im richedit laden kann.als rtf-datei habe ich es momantan nicht da ich nichtz weiß ob ich da drin varibalen verwenden kann

marabu 8. Aug 2005 14:52

Re: Richedit mit formatierten text füllen und drucken
 
Hast du dir schon die Demo angesehen, von der ich in meinem Posting heute morgen um 08:55 geschrieben habe? Kurzfassung: Gib etwas Text in dein RichEdit ein, markiere eine beliebige Zeichenkette und führe über einen Button folgenden Code aus, dann hast du deinen Text fett ausgezeichnet. Das mit den Variablen müsstest du noch besser erklären.

Delphi-Quellcode:
procedure TRichForm.BoldButtonClick(Sender: TObject);
begin
  with RichEdit.SelAttributes do
    Style := Style + [fsBold];
end;
Ganz zum Schluß läuft wahrscheinlich alles darauf hinaus, dass du besser den WebBrowser anstelle vom RichEdit verwendest und HTML anstelle von RTF...

marabu

Sidorion 8. Aug 2005 15:16

Re: Richedit mit formatierten text füllen und drucken
 
Ich hab ein ähnliches Problem:
Ich will über Programmcode dem RichEdit eine neue Zeile zufügen, die dann z.B.: so aussehen soll:
'Dies ist eine Testzeile'
Ich habs damit probiert:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
  iLoop: Integer;
  iSection: Integer;
begin
  iLoop:=1;
  iSection:=1;
  While iLoop <= Length(Edit1.Text)
  Do Begin
    If Edit1.Text[iLoop]='/'
    Then Begin
      Inc(iLoop);//eat /
      If Edit1.Text[iLoop]='c' //color
      Then Begin
        Inc(iLoop);//eat c
        If Edit1.Text[iLoop]='1'
        Then RichEdit1.SelAttributes.Color:=clBlue
        Else If Edit1.Text[iLoop]='0'
        Then RichEdit1.SelAttributes.Color:=clBlack;
        Inc(iLoop); //eat number
      End;
    End;
    RichEdit1.Text:=RichEdit1.Text+Edit1.Text[iLoop];
    Inc(iLoop);
  End;
end;
Im Beispiel ist edit1.text='Dies ist /c1eine /c0Testzeile' und das 'eine' sollte eigentlich blau dargestellt werden, wirds aber nicht.
Das Problem ist wohl,dass sobald man RichEdit1.Text aufruft, der gesamte Text alle Formatierungen verliert(das gleiche gilt für RichEdit1.Lines[index]).

Sidorion 8. Aug 2005 15:50

Re: Richedit mit formatierten text füllen und drucken
 
!!!!!!!!EUREKA!!!!!!!!!!!
das Tauschen dieser Zeile:
Delphi-Quellcode:
    RichEdit1.Text:=RichEdit1.Text+Edit1.Text[iLoop];
mit dieser Zeile:
Delphi-Quellcode:
    RichEdit1.SelText:=Edit1.Text[iLoop];
funktioniert!
@BastardOp: hier kannst Du auch deine Variablen einfügen:
Delphi-Quellcode:
    RichEdit1.SelText:=MyStringVar;
wenn nix markiert ist, fügt er den SelText hinten an.

Lannes 8. Aug 2005 15:54

Re: Richedit mit formatierten text füllen und drucken
 
Hallo,
Zitat:

Zitat von BastardOp
also ich weiß wie ich einem rich edit über den OE einen standart text geben kann und ich kann halt wenn das proggie läuft text ins feld eingeben.
Aber ich möchte nun text in dem gewisse stellen fet oderr größer sind und in dem Variablen vorkommen. Aber ich weiß nicht wie ich diese automatisch im richedit laden kann.als rtf-datei habe ich es momantan nicht da ich nichtz weiß ob ich da drin varibalen verwenden kann

eine andere Möglichkeit/Lösung ist dort zum gleichen Problem zu finden:DF: Formatierten Text an Richedit übergeben?

BastardOp 8. Aug 2005 16:36

Re: Richedit mit formatierten text füllen und drucken
 
also irgendwei werd ich aus euren antworten nicht schlau. Ich habe einfach einen text den ich meintewegen auch als rtf speicher und diese möchte ich erstmal ins Richedit einfügen. Dabei sollen die formatierungen die ich vorher angegeben habe beibehalten werden, wenn ich dann in dem text stellen durch zeichen wie & makieren sollen diese später durch variablen ertsezte werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz