Hola Club.
Ya pude conseguir lo que necesitaba, gracias a dec y Roman, amigos muchas gracias por su tiempo y paciencia, lo que cambie fue lo que esta en negrita, y aparte de ese cambio no me habia dado cuenta pero el evento "OnCreate" del Form1 no estaba bien asignado por mi, es decir en el codigo estaba escrito pero no lo agrege desde el Inspector de Objetos, no se si me explique, solo le di doble click a "OnCreate" de TForm de modo que dicho evento se activara y funciona bien, se crea el caret. Y para que funcionara en modo "Overwritte" puse
Memo1.SelLength := 1; en el evento KeyPress del TMemo1.
Gracas nuevamente, este fue el codigo.
Código Delphi
[-]
unit memoxx;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Memo1Exit(Sender: TObject);
private
OldMemoWndProc: TWndMethod;
procedure MemoWndProc(var Msg: TMessage);
end;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
OldMemoWndProc := Memo1.WindowProc;
Memo1.WindowProc := MemoWndProc;
end;
procedure TForm1.Memo1Exit(Sender: TObject);
begin
DestroyCaret();
end;
procedure TForm1.MemoWndProc(var Msg: TMessage);
var
DC: HDC;
TM: TextMetric;
begin
OldMemoWndProc(Msg);
if Msg.Msg = WM_SETFOCUS then
begin
DC := GetDC(Handle);
GetTextMetrics(DC, TM);
ReleaseDC(Handle, DC);
CreateCaret(Memo1.Handle, 0, TM.tmAveCharWidth, TM.tmHeight);
ShowCaret(Memo1.Handle);
end;
end;
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
Memo1.SelLength := 1;
end;
end.