AGB  ·  Datenschutz  ·  Impressum  







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

LeftIndent für markierten text

Ein Thema von Xeno-Sebi · begonnen am 27. Mär 2004 · letzter Beitrag vom 27. Mär 2004
Antwort Antwort
Xeno-Sebi

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

LeftIndent für markierten text

  Alt 27. Mär 2004, 07:57
Hi!
Ich habe folgendes Problem:
Ich will einen markierten Text in einem RichEdit auf knopfdurck einen leftindent verpassen.
ist das möglich?
mfg Xeno-Sebi
  Mit Zitat antworten Zitat
rebugger

Registriert seit: 29. Okt 2002
Ort: Auerbach
190 Beiträge
 
Delphi 7 Professional
 
#2

Re: LeftIndent für merkierten text

  Alt 27. Mär 2004, 08:36
Willste Leerzeichen einfügen, oder einen Tab ?

Bei Leerzeichen:
RichEdit1.SelText := ' ' + RichEdit1.SelText;
  Mit Zitat antworten Zitat
Xeno-Sebi

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

Re: LeftIndent für merkierten text

  Alt 27. Mär 2004, 09:40
ich habe ein memo durch ein richedit ersetzt. vorher habe ich das auch so gemacht, was jetzt aber nciht mehr geht:
  • -leerzeichen werden "verschluckt", da richedit anscheinend ne trimfunktion hat
    -ich will mehrere zeilen einrücken
    -es soll der inhalt des re nicht geändert werden (also sollen keine zeichen hinzugefügt werden)
ich überlege in diese richtung:
markierten text in ein tempRE cutten
text hinter der markierung in ein tempRE2 cutton
absatz mit indent erstellen
temp1 einfügen
absatz beenden
temp2 einfügen

geht das?
mfg Xeno-Sebi
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

Re: LeftIndent für merkierten text

  Alt 27. Mär 2004, 10:16
Hi!

Zeig am Besten mal deinen Code, der im Memo das gemacht, was du haben wolltest. Dann ist es wahrscheinlich einfacher zu verstehen.


Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Markus K.

Registriert seit: 26. Jan 2004
Ort: Halle
346 Beiträge
 
Delphi 2005 Personal
 
#5

Re: LeftIndent für merkierten text

  Alt 27. Mär 2004, 10:29
Hallo Xeno-Sebi,
die RichEdit-Komponente besitzt dafür eine Methode, mit welcher es ganz einfach sein sollte den Text einen linken Einzug zu verpassen.
RichEdit1.Paragraph.LeftIndent:=...; Tschüß Markus
  Mit Zitat antworten Zitat
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
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#7

Re: LeftIndent für markierten text

  Alt 27. Mär 2004, 16:14
Hi!

Mach am besten für die neue Frage ein neues Topic auf, dann wird es schneller gefunden.


Ciao fkerber
Frederic Kerber
  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 15:36 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