ich brauch' ein Memo/RichEdit bei dem ich links die Zeilennummer anzeigen
kann. Dabei soll die Zeilennummer read-only sein und der Rest beschreibbar.
Gibt es dafür eine fertige Komponente (habe keine auf der DSP gefunden). Wie
könnte man das Ganze selbst programmieren? Ein Lösungsansatz wäre die
Verwendung von 2 Controls, die genau nebeneinander positioniert werden.
Problematisch wird jedoch die Synchronisation des sichtbaren Bereichs (keine
Properties mit diesen Informationen). Kann mir jemand weiterhelfen?
Dankeschön.
--
MfG
Steffen Liersch
****************************************************************
IVS Language Controller for Delphi 3, 4 and 5
Please visit http://www.ivs-solutions.de/products/tools/langcontrol
****************************************************************
>
> ich brauch' ein Memo/RichEdit bei dem ich links die Zeilennummer anzeigen
> kann. Dabei soll die Zeilennummer read-only sein und der Rest
beschreibbar.
> Gibt es dafür eine fertige Komponente (habe keine auf der DSP gefunden).
Mit dem RichEdit von den RXTools lässt sich sowas machen. (glaub ich
zumindest)
mfg
-Ivo
HI Steffen,
>ich brauch' ein Memo/RichEdit bei dem ich links die Zeilennummer
>anzeigen kann. Dabei soll die Zeilennummer read-only sein und
>der Rest beschreibbar. Gibt es dafür eine fertige Komponente
>(habe keine auf der DSP gefunden). Wie könnte man das Ganze
>selbst programmieren? Ein Lösungsansatz wäre die Verwendung von
>2 Controls, die genau nebeneinander positioniert werden.
>Problematisch wird jedoch die Synchronisation des sichtbaren
>Bereichs (keine Properties mit diesen Informationen). Kann mir
>jemand weiterhelfen? Dankeschön.
das ist in 10 min selber geschrieben:
type
TMyRichEdit = class(TCustomControl)
private
FCount: TEdit;
FRich: TRichEdit;
procedure WMSize(var message: TWMSize);
message WM_SIZE;
procedure FRichKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState); reintroduce;
public
constructor Create(AOwner: TComponent); override;
end;
Im Create werden FCount/FRich erzeugt und initialisiert. In WMSize
werden ihre Positionen festgelegt. Außerdem legst Du dort mittels
FRich.OnKeyUp:=FRichKeyUp; den Event-Handler fest:
procedure TMyRichEdit.FRichKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
t: integer;
begin
t:=FRich.perform(EM_LINEFROMCHAR, FRich.SelStart, 0);
FCount.Text:=inttostr(t+1);
inherited KeyUp(key, Shift);
end;
Wenn Du zusätzlich Zugriff auf das RichEdit brauchst, musst Du
<schlechter Workaround>
FRich im public-Teil deklarieren
</schlechter Workaround>.
Das entspricht aber IMHO auf keinen Fall guter OOP.
So long,
Stephan R.
--
Wenn der Glaube stirbt
Bist du ein Mensch ohne Herr
Die Wahrheit ist wortlos
Ihr Weg tränenschwer
Kann ich immer nur wieder empfehlen: PlusMemo von Electro Concept Mauricie.
http://www.concept.itr.qc.ca/
Helli
> >ich brauch' ein Memo/RichEdit bei dem ich links die Zeilennummer
> >anzeigen kann. Dabei soll die Zeilennummer read-only sein und
> >der Rest beschreibbar.
> das ist in 10 min selber geschrieben:
>
> type
> TMyRichEdit = class(TCustomControl)
> private
> FCount: TEdit;
> FRich: TRichEdit;
> procedure WMSize(var message: TWMSize);
> message WM_SIZE;
> procedure FRichKeyUp(Sender: TObject; var Key: Word;
> Shift: TShiftState); reintroduce;
> public
> constructor Create(AOwner: TComponent); override;
> end;
Ich moechte jedoch dass es folgendermassen aussieht:
1 Text1
2 Text2
3 Text3
Nr. ....
Somit sollte anstelle eines FCount: TEdit; ein TMemo oder TStringList
verwendet werden.
Wie kann nun die Zeilennummerierungsliste immer richtig aktualisiert
(gescrollt) werden ?
z.B. wenn das Fenster verkleinert wird und nur die Textzeilen 54 bis 56
sichtbar sind.
----------
54 Text
55 Text
56 Text
----------
Gruss
Bruno