![]() |
TRichEdit Einzelne Zeile Formatieren
Hallo Zusammen,
Ja ich weis es gibt einige Beiträge dazu, aber keiner Hilft mir wirklich. Es geht darum, dass ich in einem Programm einen Test genereiere und nur Einzelne Zeilen Rechtsbündig setzen muss ... leder gelingt es mir nur das Ganze Richedit Rechtsbündig zu gestalten, und nicht nur eine einzelne Zeile. Ich Hoffe das ihr mir weiterhelfen könnt. Im Prinzip muss ich immer nur die gerade hinzugefügte Zeile formatieren. Gruß Manu |
Re: TRichEdit Einzelne Zeile Formatieren
Schau dir mal .SelStart und .SelCount an
|
Re: TRichEdit Einzelne Zeile Formatieren
Delphi-Quellcode:
begin
RichEdit1.SelStart := RichEdit1.Perform(EM_LINEINDEX, LineIndex-1, 0); // LineIndex ist die Zeilennummer der zu ändernden Zeile RichEdit1.Paragraph.Alignment := taRightJustify; end; |
Re: TRichEdit Einzelne Zeile Formatieren
Guten Abend,
habe mir jetzt einmal eine Eigene Prozedur gebastelt aber irgendwie haut das nicht hin. Der Fehler zeigt sich so das er das was er Rechtsbündig setzen sollte nicht macht oder erst eine Zeile zu Spät ich kann den Fehler leider nicht finden und hoffe das ihr mir helfen könnt.
Delphi-Quellcode:
schon mal vielen Dank im voraus
procedure ADDROW(RE : TRichedit; TEXT : String; Align : TAlignment);
var SEL1,SEL2 : Integer; begin SEL1 := 0; SEL2 := 0; SEL1 := length(RE.text); RE.Lines.add(TEXT); SEL2 := length(RE.text); RE.SelStart := SEL1; RE.SelLength := (SEL2-SEL1); RE.Paragraph.Alignment := Align; end; Gruß manu |
Re: TRichEdit Einzelne Zeile Formatieren
Na, dann probiere mal das hier:
Delphi-Quellcode:
procedure TfoTest19.FormShow(Sender:TObject);
var i : Integer; procedure AddRow(RE:TRichEdit;Text:String;Align:TAlignment); begin Re.Lines.Add(Text); Re.SelStart:=length(RE.Text)-1; RE.Paragraph.Alignment:=Align end; begin for i:=0 to 3 do if odd(i) then AddRow(RichEdit1,'Left',taLeftJustify) else AddRow(RichEdit1,'Right',taRightJustify) end; |
Re: TRichEdit Einzelne Zeile Formatieren
Hallo;
oder so:
Delphi-Quellcode:
SelStart muss nicht jedesmal gesetzt werden, wenn mehrere Zeilen hinzugefügt werden:
RichEdit1.SelStart := MAXINT;
RichEdit1.Paragraph.Alignment := taCenter; RichEdit1.Lines.Add('Center');
Delphi-Quellcode:
RichEdit1.SelStart := MAXINT;
RichEdit1.Paragraph.Alignment := taCenter; RichEdit1.Lines.Add('Center'); RichEdit1.Paragraph.Alignment := taRightJustify; RichEdit1.Lines.Add('Right'); |
Re: TRichEdit Einzelne Zeile Formatieren
Interessant, aber aus meiner Sicht ein etwas seltsames Verhalten.
Gibt es dafür eine Erklärung? |
Re: TRichEdit Einzelne Zeile Formatieren
Hallo,
add versetzt Selstart an das Ende der hinzugefügten Zeile. Die hinzugefügte Zeile schließt mit #13#10 ab, dahinter beginnt ein neuer Absatz. Mit der Zuweisung an Alignment wird der Absatz quasi vorformatiert. Oder meinst Du ein anderes seltsamens Verhalten? |
Re: TRichEdit Einzelne Zeile Formatieren
Moin, Moin.
Nein, genau das erschien mir seltsam :roll: Danke! |
Re: TRichEdit Einzelne Zeile Formatieren
Um euch das Problem einmal näher darzustellen werde ich hier Prozedur Aufruf und Ergebnis mal posten
Prouedur
Delphi-Quellcode:
Aufruf
procedure AddRow2(RE:TRichEdit;Text:String;Align:TAlignment);
begin Re.Lines.Add(Text); Re.SelStart:=length(RE.Text)-1; RE.Paragraph.Alignment:=Align end;
Delphi-Quellcode:
Ergebnis (Habe jetzt nur eins der beiden Richedits gepostet)
procedure TForm1.Button8Click(Sender: TObject);
var I: Integer; y: Integer; a: Integer; X: Integer; begin summe := 0; counter := 1; richedit1.Clear; richedit2.Clear; for X := 0 to Listbox1.items.Count - 1 do begin for I := 1 to stringgrid1.RowCount - 1 do begin for y := 0 to stringgrid1.ColCount - 1 do begin if (stringgrid1.Cells[y,i] = (listbox1.Items[X])) and (stringgrid1.Cells[y+1,i+1] <> ' ') then begin ADDROW2(Richedit1,(InttoStr(counter) +'.'+#9+listbox1.Items[X]),TaLeftJustify); ADDROW2(Richedit1,(' / ' +stringgrid1.Cells[y+3,i]),TaRightJustify); ADDROW2(Richedit2,(InttoStr(counter) +'.'+#9+listbox1.Items[X]),TaLeftJustify); ADDROW2(Richedit2,(' / ' +stringgrid1.Cells[y+3,i]),TaRightJustify); summe := (summe + StrToFloat(stringgrid1.Cells[y+3,i])); inc(counter); a := i+1; while (stringgrid1.cells[3,a] <> ' ') do begin if stringgrid1.cells[3,a] = 'FREE' then begin ADDROW(Richedit1,(stringgrid1.cells[4,a]),TaLeftJustify); richedit2.Lines.Add(#13); end else begin ADDROW2(Richedit1,(#9+stringgrid1.cells[3,a] + ' ' + stringgrid1.cells[4,a]),TaLeftJustify); ADDROW2(Richedit2,(#9+stringgrid1.cells[3,a]),TaLeftJustify); end; inc(a); end; richedit1.lines.Add(#13); richedit2.lines.Add(#13) end; end; end; end; ADDROW2(Richedit1,('_____/'+FloatTOStr(summe)),TaRightJustify); ADDROW2(Richedit2,('_____/'+FloatTOStr(summe)),TaRightJustify); end;
Delphi-Quellcode:
Alles Was mit (FALSCH) beschriftet ist sollte jeweils auf der Anderen Seite Bündig sein
1. (F) In welchem FL befindet sich die generelle Grenze zwischen dem oberen und unteren Luftraum?
/ 1 (FALSCH) (FALSCH) 2. (MC) Welche der genannten Luftraumklassen sind in Deutschland implementiert? / 2 (FALSCH) (FALSCH) a) Luftraumklasse A, B, C, D, E, F, G b) Luftraumklasse C, D, E, F, G c) Luftraumklasse A, C, D, E, F, G d) Luftraumklasse C, D, E, F, G, H, 3. (MC) Welcher FL definiert die Obergrenze des oberen kontrollierten Luftraum? / 1 (FALSCH) (Falsch) a) FL 600 b) FL 100 c) unlimited d) FL 245 4. (F) Ab welchem FL beginnt die Flugplanpflicht? / 1 (FALSCH) _____/5 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz