Ver Mensaje Individual
  #6  
Antiguo 30-06-2007
Avatar de LuNaTk
LuNaTk LuNaTk is offline
Miembro
 
Registrado: jun 2007
Posts: 19
Reputación: 0
LuNaTk Va por buen camino
Muchas gracias Roman!!

No me queda duda de que asi debe funcionar como deseo, pero tengo un problemita y de antemano pido disculpas si los llego a desesperar pero os repito que soy nuevo en este lenguaje, y me ha marcado un error en esta parte delcodigo que pongo en rojo, serias tan amable de indicarme donde estoy cometiendo el error o tal vez me falto declarar algo.

Gracias nuevamente.

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: TWndProc;
  procedure MemoWndProc(var Msg: TMessage);
  end;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
  // Guardamos una referencia al método original
  OldMemoWndProc := Memo1.WindowProc;
  // Reemplazamos el manejador de mensajes de Memo1 por el nuestro
  Memo1.WindowProc := MemoWndProc;
end;
procedure TForm1.Memo1Exit(Sender: TObject);
begin
  // Destruimos el cursor al salir del control
  DestroyCaret();
end;
{
  Manejador de mensajes para Memo1
}
procedure TForm1.MemoWndProc(var Msg: TMessage);
var
  DC: HDC;
  TM: TextMetric;
begin
  // Llamamos al manejador original
  OldMemoWndProc(Msg);
  // Si es el mensaje WM_SETFOCUS, crear el cursor
  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;
 
end.

Última edición por LuNaTk fecha: 30-06-2007 a las 21:15:39.
Responder Con Cita