AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Richedit.Lines Frage

Ein Thema von thomas2009 · begonnen am 28. Feb 2009 · letzter Beitrag vom 1. Mär 2009
Antwort Antwort
thomas2009
(Gast)

n/a Beiträge
 
#1

Richedit.Lines Frage

  Alt 28. Feb 2009, 16:06
Hallo

ich verwende momentan diesen Code für eine Zeile mit Edit Komponent
TextOut(dc, 10, 10, PChar(Edit1.Text), Length(Edit1.Text)); Nun möchte ich mehrere Zeillen verwenden z.B. mit einem Richedit
Die Zeillen müssen nicht einandern überdecken :
TextOut(dc, x1, y1 ... Dafür muss die Texthöhe für jede Zeile von Richedit (die am grüssten) ausgelesen werden

Ich habe versucht mit Richedit mit einer zeile. Es hat aber nicht geklappt:
TextOut(dc, 10, 180, PChar(RichEdit1.Lines[0]), Length(RichEdit1.Lines[0])); was ist hier falsch ?

Warum klappt es mit Edit und mit Richedit nicht ?
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#2

Re: Richedit.Lines Frage

  Alt 28. Feb 2009, 16:17
probier mal mit RichEdit1.lines[1], ich glaub der zählt da normal und fängt nicht bei 0 an, bin mir aber gerade nicht ganz sicher
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Richedit.Lines Frage

  Alt 28. Feb 2009, 16:45
Nein nein, die fangen schon bei 0 an, aber ich habe das Problem immer noch nicht verstanden .
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Richedit.Lines Frage

  Alt 28. Feb 2009, 16:55
Könnte es daran liegen, dass das RichEdit RTF Formatierungen enthält?
Thomas
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Richedit.Lines Frage

  Alt 28. Feb 2009, 16:58
Er meint wohl, das er mehrere Zeilen ausgeben will, die sich nicht überlappen dürfen.

Also der abgebildete Code scheint korrekt, da musst Du woanders etwas geändert haben, was die Ausgabe verhindert.

€: Lines sind aber ohne Formatierung, oder?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Richedit.Lines Frage

  Alt 28. Feb 2009, 17:08
Ich habe das gerade mal ausprobiert. So erfolgt keine Ausgabe:Textout(Canvas.Handle,10,10,PChar(redt1.Lines[0]),Length(redt1.Lines[0])); So aber schon:Textout(Canvas.Handle,10,10,PChar(redt1.Lines[0]),StrLen(PChar(redt1.Lines[0]))); Wobei bei einem direkten Vergleich beide Zahlen gleich sind. Komisch
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
thomas2009
(Gast)

n/a Beiträge
 
#7

Re: Richedit.Lines Frage

  Alt 28. Feb 2009, 19:41
Hier ist mein Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var y, x : Integer;
    dc : HDC;
begin
    dc := canvas.handle;
    SetBkMode(dc,transparent);
    BeginPath(dc);

  //TextOut(dc, 10, 180, PChar(RichEdit1.Lines[0]), Length(RichEdit1.Lines[0]));
  Textout(Canvas.Handle,10,10,PChar(RichEdit1.Lines[0]),StrLen(PChar(RichEdit1.Lines[0])));
    EndPath(dc);
    SelectClipPath(dc, RGN_COPY);
    BitBlt(dc, 30, 180, Image1.clientWidth, image1.clientHeight, image1.picture.bitmap.canvas.handle, 0, 0, SRCCOPY);

  
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Richedit.Lines Frage

  Alt 28. Feb 2009, 22:01
Ja und? Geht es damit oder nicht? Im Übrigen ist das wohl das Beispiel aus dem MSDN, wenn ich das richtig in Erinnerung habe.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#9

Re: Richedit.Lines Frage

  Alt 1. Mär 2009, 07:29
Den RichEdit Inhalt kannst du so auf einen Canvas malen:

Delphi-Quellcode:
uses
  RichEdit;

procedure RichEditToCanvas(RichEdit: TRichEdit; Canvas: TCanvas; PixelsPerInch: Integer);
var
  ImageCanvas: TCanvas;
  fmt: TFormatRange;
begin
  ImageCanvas := Canvas;
  with fmt do
  begin
    hdc:= ImageCanvas.Handle;
    hdcTarget:= hdc;
    // rect needs to be specified in twips (1/1440 inch) as unit
    rc:= Rect(0, 0,
                ImageCanvas.ClipRect.Right * 1440 div PixelsPerInch,
                ImageCanvas.ClipRect.Bottom * 1440 div PixelsPerInch
              );
    rcPage:= rc;
    chrg.cpMin := 0;
    chrg.cpMax := RichEdit.GetTextLen;
  end;
  SetBkMode(ImageCanvas.Handle, TRANSPARENT);
  RichEdit.Perform(EM_FORMATRANGE, 1, Integer(@fmt));
  // next call frees some cached data
  RichEdit.Perform(EM_FORMATRANGE, 0, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   RichEditToCanvas(RichEdit1, Image1.Canvas, Self.PixelsPerInch);
   Image1.Refresh;
end;
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:31 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