Einzelnen Beitrag anzeigen

Xeno-Sebi

Registriert seit: 14. Mär 2004
Ort: Witterschlick (bei Bonn)
51 Beiträge
 
Delphi 6 Professional
 
#6

Re: LeftIndent für merkierten text

  Alt 27. Mär 2004, 11:06
ja ist auch ganz einfach...also das hat sich erledigt, aber ein neues, viel schlimmeres prob taucht auf:
Delphi-Quellcode:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
text.Paragraph.FirstIndent:=TrackBar1.Position;
end;
(funzt supa)
ABER: ich benutze einen timer, der alle 3 sec. ein syntaxhighligh aktuallisiert. dazu wird der inhalt des "text"es (TRichEdit) in ein anderes verschoben. Dabei geht der indent verloren und alles ist wieder links am rand.

hier der Code:
Delphi-Quellcode:
procedure TForm1.syntaxtimerTimer(Sender: TObject);
var textselstart,textsellength:integer;
var codetext:TRichEdit;
var temptext:TStringList;
Begin
textselstart:=text.SelStart;
textsellength:=text.SelLength;
temptext:=TStringList.Create;
codetext:=TRichEdit.Create(Form1);
temptext.Text:=text.Text;
temptext.Text:=StringReplace(temptext.text, '}', '[zU]', [rfReplaceAll]);
temptext.Text:=StringReplace(temptext.text, '{', '[aUF]', [rfReplaceAll]);

codetext.text:='{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil MS Sans Serif;}}{\colortbl ;\red0\green0\blue255;\red100\green0\blue100;\red0\green200\blue0;\red150\green150\blue150;\red0\green150\blue150;}\viewkind4\uc1\pard\f0\fs16';
codetext.text:=codetext.text+StringReplace(temptext.Text, '<', '\cf1<', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '>', '>\cf0', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '//', '\cf4//\cf0', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '/*', '\cf4/*\cf0', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '*/', '\cf4*/\cf0', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '<script', '\cf2<script', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '</script>', '\cf2</script>\cf0', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '<!--', '\cf2<!--', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '-->', '\cf2-->\cf0', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, 'function', '\b function\b0 ', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, 'if', '\b if\b0 ', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, 'else', '\b else\b0 ', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, 'while', '\b while\b0 ', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, 'for', '\b for\b0 ', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, 'foreach', '\b foreach\b0 ', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, 'var', '\b var\b0 ', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, 'array', '\b array\b0 ', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '"', '\b "\b0 ', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '<?', '\cf3<?', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '?>', '\cf3?>\cf0', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '[zU]', '{\}}', [rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '[aUF]', '{\{}', [rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, chr(13), '\par', [rfIgnoreCase,rfReplaceAll])+'}';
text.text:=codetext.Text;
text.SelStart:=textselstart+1000;
text.SelStart:=textselstart;
text.SelLength:=textsellength;
codetext.Destroy;
temptext.Destroy;
end;
bis auf dieses problem geht alles...
ich glaube ich muss direkt im "text" die replace sachen machen...
aber wenn ich es so mache:
Delphi-Quellcode:
text.text:=StringReplace(text.Text, '<', '\cf1<', [rfIgnoreCase,rfReplaceAll]);
usw...
Dann wird der formatierungskram als text in des re reingeschrieben UND wie ich jetzt sehe, verschwindet der indent auch...mist

Edit No.3:
soll ich den indent für jede einzelne zeile speichern???
mfg Xeno-Sebi
  Mit Zitat antworten Zitat