AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: VCL / WinForms / Controls Delphi Blinkende Cursor aus Memo-Feld entfernen

Blinkende Cursor aus Memo-Feld entfernen

Ein Thema von Jens Schumann · begonnen am 30. Apr 2003 · letzter Beitrag vom 20. Nov 2010
Antwort Antwort
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
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

AW: Blinkende Cursor aus Memo-Feld entfernen

  Alt 20. Nov 2010, 16:46
Hier noch eine andere Möglichkeit, das Caret zu verstecken. Dabei läßt sich, im Gegensatz zur oben gezeigten Methode, Text weiterhin markieren.

Delphi-Quellcode:
unit MyRichEdit;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, ComCtrls, Messages;

type
  TMyRichEdit = class(TRichEdit)
  private
    FShowCaret: Boolean;
    procedure SetShowCaret(const Value: boolean);
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LButtonDown;
    procedure WMKeyDown(var Message: TWMKeyDown); message WM_KeyDown;
    procedure HideTheCaret;
  protected
  public
    constructor Create(AOwner: TComponent); override;
  published
    property ShowCaret: Boolean read FShowCaret write SetShowCaret;
  end;

procedure Register;

implementation

uses Windows;

procedure Register;
begin
  RegisterComponents('Samples', [TMyRichEdit]);
end;

{ TMyRichEdit }

procedure TMyRichEdit.HideTheCaret;
begin
  if not FShowCaret then
    CreateCaret(Handle, 0, 0, 0);
end;

constructor TMyRichEdit.Create(AOwner: TComponent);
begin
  inherited;
  FShowCaret := False;
end;

procedure TMyRichEdit.SetShowCaret(const Value: boolean);
begin
  FShowCaret := Value;
end;

procedure TMyRichEdit.WMKeyDown(var Message: TWMKeyDown);
begin
  inherited;
  if Assigned(Parent) then
    HideTheCaret;
end;

procedure TMyRichEdit.WMLButtonDown(var Message: TWMLButtonDown);
begin
  inherited;
  if Assigned(Parent) then
    HideTheCaret;
end;

procedure TMyRichEdit.WMPaint(var Message: TWMPaint);
begin
  inherited;
  if Assigned(Parent) then
    HideTheCaret;
end;
Thomas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2017 by Daniel R. Wolf