Autor Beitrag
Dibelius
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Mo 18.06.07 11:22 
Hallo,

ich sitze gerade an einem Programm, was den Inhalt von Textdateien auslesen kann. Soweit nicht Besonderes. Da es sich bei den Textdateien aber um "Code" handelt, der von einem anderen Programm eingelesen wird, möchte ich eine Zeilennummerierung im TRichEdit erreichen (TRichEdit deshalb, weil ich bestimmte Code-Fragmente später noch per Highlighting hervorheben möchte).

Das ganze soll nach dem Muster aussehen (durch das Code-Tag hier passiert ja imgrunde das gleiche):

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Zeile 1
Zeile 2
Zeile 3
...
...
...
...
...
...
Zeile 10


Mir fehlt jetzt irgendwie noch die passende Idee zur Umsetzung. Ich hab es mit dieser Schleife probiert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  for i:=0 to REdit.Lines.Count do begin
    with REdit do begin
      Lines.Insert(i,IntToStr(i+1)+': ');
      SelAttributes.Color:= clRed;
    end;
  end;

Nur sieht das ganze...
a) nicht so toll aus, weil die Einrückungen unterschiedlich sind. Wenn eine Zahl aus mehr als einer Ziffer besteht, möchte ich es gern so rechtsbündig haben, wie in dem Beispiel oben... aus maximal 3 Ziffern kann eine Zahl bestehen (bis Zeile 999)
und...
b) stimmt irgend etwas an der Schleife noch nicht, denn die 1. Zeilen-Nr bleibt schwarz und nur der Rest wird rot.

Anmerkungen: Das RichEdit ist auf ReadOnly gesetzt; Die Zeilennummerierungen sollen beim Speichern der Datei natürlich wieder gelöscht werden, sodass nur das Code stehen bleibt.

Zusatzfrage: Wie bekomme ich eine Art "Spalteneinteilung" hin, sodass die Nummern in Spalte 1 und der Inhalt in Spalte 2 steht? Am besten optisch auch getrennt durch eine vertikale Linie.

jo, das war's auch schon für's erste :P
Bin Dankbar für jeden Tipp.

MfG
Dibelius
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mo 18.06.07 11:30 
Deine Zahlen könntest Du mit Format auffüllen, falls Dir das was nützt.
ausblenden Delphi-Quelltext
1:
Caption:=Format('%.03d', [MeineZahl]);					

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mo 18.06.07 12:00 
Schau dir mal das Suche in: Delphi-Forum, Delphi-Library SYNEDIT an, da sind Highlightning und Zeilennummerierung direkt eingebaut.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Dibelius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Mo 18.06.07 12:24 
SynEdit kenn ich schon. Ich weiß aber leider bis heute noch nicht, wie ich es installieren muss. :(

€: Selbst ist der Mann. hat sich gerade erledigt.
jetzt frage ich mich nur, wie ich es anwende (?)
Dibelius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Mo 18.06.07 21:03 
whatever... ich lass es mit SynEdit sein. :x

Ich glaub bald, es ist besser, wenn ich es mit Hilfe von ListView mache, oder? Das hat zumindest den Vorteil, dass ich für jede Codezeile eine extra Zelle habe und sie so einzeln selektieren kann (wenn das mal gehen würde, denn irgendwie kann ich dort nur die "Haupt"zellen selektieren, den Rest nicht)

Mich stört eigentlich bloß an der Komponente, dass die Spaltenbreite fest vorgegeben ist und auch eine horizontale Scrollbar überhaupt nichts bringt, wenn die Codezeile etwas länger ist als die Spalte.
Und ich schätze mal, dass ich den Text im ListView nicht highlighten kann, oder? :?
Comp-Freak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 89



BeitragVerfasst: Di 19.06.07 01:55 
customdraw ?
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Di 19.06.07 06:11 
Was klappt denn nicht mit SynEdit ?
Was ist es denn für Code den Du highlighten willst ?
Vieleicht könnten etwas mehr Informationen nicht schaden.

Edit:

Code anzeigen - SynEdit auf die Form, für Delphi Code, Pas Highlighter auf die Form und im SynEdit unter Highlighter verknüpfen - Fertig.
Zeilen nummerieren - SynEdit unter Gutter ShowLineNumbers auf True - Fertig.
Aktive Zeile Rot hinterlegen - SynEdit1.ActiveLineColor:=clred; - Fertig.

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)