Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.642 Beiträge
 
Delphi 2009 Professional
 
#1

Blinkende Cursor aus Memo-Feld entfernen

  Alt 30. Apr 2003, 10:33
Hallo Adminstrator,
ich weiss jetzt nicht ob es hier richtig ist einen Beitrag zur Code-Library zu posten. (Feedback wäre nicht schlecht)

Es geht um folgendes Thema :
Code-Library -> Library: VCL-Komponenten
Blinkende Cursor aus Memo-Feld entfernen
Link

Hier habe ich eine mit D6 getestete Lösung, wie beim einem ReadOnly Memo
der Cursor verschwindet und man trotzdem noch markieren und kopieren kann

Lösung:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Menus;

type
  TForm1 = class(TForm)
    Memo11: TMemo;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    FWndProc : TWndMethod;
    procedure MemoWndProc(var Msg: TMessage);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.MemoWndProc(var Msg: TMessage);
begin
  if Msg.Msg = WM_SETFOCUS then
  begin
    HideCaret(Memo11.Handle); // Cursor verstecken
    Msg.Result := 0;
  end else
    FWndProc(Msg); // alte Fensterproceure aufrufen
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  FWndProc := Memo11.WindowProc; // alte Fensterproceure merken
  Memo11.WindowProc := MemoWndProc; // Fensterproceure auf eigene Fensterprocedure umbiegen
end;


end.
Achtung: ReadOnly muss auf True stehen un HideSelection auf False

[edit=Matze]Code formatiert. Mfg, Matze[/edit]
[edit=flomei]Link zum Ursprungsthema eingefügt. Mfg, flomei[/edit]
  Mit Zitat antworten Zitat