Muchas gracias por explicarme cómo pegar código.
Lo siento pero no consigo que el código funcione.
A continuación pego lo que he escrito:
Código:
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//
static inline void ValidCtrCheck(TSRichEdit *)
{
new TSRichEdit(NULL);
}
//---------------------------------------------------------------------------
__fastcall TSRichEdit::TSRichEdit(TComponent* Owner)
: TRichEdit(Owner)
{
}
//---------------------------------------------------------------------------
namespace Srichedit
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TSRichEdit)};
RegisterComponents("Samples", classes, 0);
}
}
//---------------------------------------------------------------------------
void __fastcall TSRichEdit::SelectionChange (TObject *Sender)
{
ShowMessage("Hola Quillo 1aaaaa");
inherited SelectionChange(TObject *Sender);
//TCustomRichEdit::SelectionChange(); // Esto tampoco funciona
}
Defino la función SelectionChange y recibo el warning de que estoy tapando a la virtual de TCustomRichEdit.
Pero cuando ejecuto el código y ocurre un evento OnSelectionChange solo se ejecuta el código de usuario y no el interno de mi componente.
Tras ver ese post de pista que ofreciste, se me ocurrio sencillamente suplantar al WndProc y capturar el mensaje EN_SELCHANGE, y tras esto ejecutar mi código y luego llamar al WndProc del TWinControl. Esto último ya lo he hecho con otro tipo de mensajes y funciona pero el mensaje EN_SELCHANGE no consigo capturarlo.
Así que de nuevo estoy estancado. Como puedes ver en el código e intentado usar lo de Inherited y esa parece ser la única forma en que compila y la linea que hay más abajo comentada es (según creo yo) otra forma de hacer lo mismo pero que tampoco funciona.
Ah otra cosa, viendo que no funcionaba miré esto:
Cita:
Empezado por Marto
begin
if Assigned(OnSelectionChange) then OnSelectionChange(Self);
|
E intenté implantarlo en el constructor de mi objeto de la siguiente manera:
Código:
if (OnSelectionChange==NULL)
OnSelectrionChange=SelectrionChange;
y también lo intenté con el Self que parece no reconocerlo de ninguna manera.
Tal y como lo veo ahora tengo dos opciones: intentar seguir por el camino que me marcó Marto, o instentar capturar el mensaje EN_SELCHANGE. Cualquiera de las dos soluciones me serviría. Aunque preferiría poder usar la de Marto ya que me parece la más sencilla de las dos (en cuanto a la estructura del programa).
Muchas Gracias