Zitat von
Christian Seehase:
Moin Sharky,
nur mal so als Idee:
Prüfe doch im OnKeyDown ab, wo sich das Caret befindet (Zeile), und lösche das eingegebene Zeichen einfach wieder. Anschliessend das Caret auf den Anfang des zugelassenen Bereiches setzen.
Oder aber mach das ganze zweigeteilt:
Oben ein Memo, dessen Inhalt nicht geändert werden darf, unten eines wo Änderungen zulässig sind.
Letzters fände ich persönlich sauberer.
Moin Christian,
an das OnKeyDown hatte ich auch gedacht. Aber dann muss ich es natürlich auch noch im OnMouseDown machen.
Das mit den zwei Memos hatte ich zuerst. Das Problem ist aber das es ohne Problem 8-10 Zeilen Text sein können die aus der Datenbank kommen.
Darum müsste auch das obere scrollbar sein. Sieht aber nicht gut aus finde ich.
Zur Zeit löse ich das ganz im OnChange-Event:
Code:
procedure TFRM_Neu_Vorgang.Memo1Change(Sender: TObject);
var
sel_start : LongInt;
begin
sel_start := SendMessage(memo1.Handle, EM_LINEFROMCHAR, memo1.SelStart, 0);
If (sel_start <= art_bezeichnung_zeilen-1) then
begin
Memo1.Perform (EM_UNDO,0,0);
Memo1.Perform (EM_EMPTYUNDOBUFFER,0,0);
end;
end;
Wobei
art_bezeichnung_zeilen die Anzahl der Zeilen angibt die aus der Datenbank kommen.
P.S.: Wie kann ich eigentlich meinen Quellcode im Forum formatieren?
Stephan B.
"Lasst den Gänsen ihre Füßchen"