![]() |
Memolines readonly ?
Hallo,
ich habe ein Memo mit 28 Lines. So nun möchte ich das Line 1 und Line 9 nicht mehr verändert werden können, aber der rest schon. Ich bin am verzweifeln. Könnt ihr mir helfen ? |
Re: Memolines readonly ?
Du könntest im OnSelection Change Ereigniss die aktuelle Zeile herausfinden und dann die RadOnly Eigenschaft entsprechend setzen. Dazu findest du hier sicher Code.
Florian |
Re: Memolines readonly ?
:wiejetzt: <-- finde den geil :D, ich suche seid 2 stunden, und finde nix passendes.
mit dem onselect hatte ich es auch probiert, aber klappte nicht, oder ich habe was falls gemacht. |
Re: Memolines readonly ?
Mal angenommen, du kennst den Code zum Herausfinden der aktuellen Zeile (Ich kenne ihn nicht, dürfte es aber in der DP geben), dann sollte dein OnSelectionChange Ereigniss in etwa so aussehen:
Delphi-Quellcode:
Florian
if (GetLine = 0) or (GetLine = 1) or (GetLine = 2) ... then//GetLine ist die Procedure zum herausfinden der Zeile und Zeile 0 ist die 1. Zeile
begin Memo1.ReadOnly := true end else begin Memo1.ReadOnly := false; end; |
Re: Memolines readonly ?
Wo findet man in einem Memo denn das OnSelectionChange? :such:
Eine nicht schöne aber funktionierende Möglichkeit:
Delphi-Quellcode:
procedure TForm1.memo_TestChange(Sender: TObject);
var mycaretpas: TPoint; begin with (Sender as TMemo) do begin mycaretpas := CaretPos; if (mycaretpas.Y < 9) then // Wenn der Caret in den Zeilen 0 bis 9 ist begin SendMessage(Handle, WM_UNDO, 0, 0); // Mache die Änderung rückgänig SelLength := 0; Perform(EM_EMPTYUNDOBUFFER, 0, 0); // und lösche den Undo-Buffer end; end; end; |
Re: Memolines readonly ?
Zitat:
Florian |
Re: Memolines readonly ?
Zitat:
Funzt aber, wenn man beim Memo einfach OnKeyDown und OnMouseDown benutzt und dort die Abfrage nach der Zeile macht :
Delphi-Quellcode:
Selbiges dann eben nochmal fuer OnMOuseDown :)
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if (Memo1.CaretPos.Y = 0) or (Memo1.CaretPos.Y = 8) then Memo1.ReadOnly := true else Memo1.ReadOnly := false; end; |
Re: Memolines readonly ?
Zitat:
funktioniert dein Code auch wenn ich mit der Mause in eine Zeile klicke und dann über ein Kontextmenü eine Einfüge/Überschreiben Funktion aufrufe? |
Re: Memolines readonly ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz