![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Estaba preparando un ejemplo, pero veo que ya resolviste el problema. Aún así lo dejo.
Fíjate en este código basado en el tuyo. Es un componente visual que debes instalar: Menu->Component->Intall Component Código:
//---------------------------------------------------------------------------
#ifndef NewScrollBoxH
#define NewScrollBoxH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class PACKAGE TNewScrollBox : public TScrollBox
{
public:
__fastcall TNewScrollBox(TComponent* Owner);
private:
TNotifyEvent FOnVerticalScroll;
TNotifyEvent FOnHorizontalScroll;
private:
void __fastcall WMHScroll(TMessage& Msg);
void __fastcall WMVScroll(TMessage& Msg);
__published:
__property TNotifyEvent OnVerticalScroll =
{read=FOnVerticalScroll,
write=FOnVerticalScroll};
__property TNotifyEvent OnHorizontalScroll =
{read=FOnHorizontalScroll,
write=FOnHorizontalScroll};
public:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_HSCROLL, TMessage, WMHScroll)
MESSAGE_HANDLER(WM_VSCROLL, TMessage, WMVScroll)
END_MESSAGE_MAP(TScrollBox)
};
//---------------------------------------------------------------------------
#endif
Código:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "NewScrollBox.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//
static inline void ValidCtrCheck(TNewScrollBox *)
{
new TNewScrollBox(NULL);
}
//---------------------------------------------------------------------------
__fastcall TNewScrollBox::TNewScrollBox(TComponent* Owner)
: TScrollBox(Owner)
{
}
void __fastcall TNewScrollBox::WMHScroll(TMessage& Msg)
{
if (FOnHorizontalScroll != NULL)
{
FOnHorizontalScroll(this);
}
TScrollBox::Dispatch(&Msg);
}
void __fastcall TNewScrollBox::WMVScroll(TMessage& Msg)
{
if (FOnVerticalScroll != NULL)
{
FOnVerticalScroll(this);
}
TScrollBox::Dispatch(&Msg);
}
//---------------------------------------------------------------------------
namespace Newscrollbox
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TNewScrollBox)};
RegisterComponents("Samples", classes, 0);
}
}
//---------------------------------------------------------------------------
Saludos. Última edición por escafandra fecha: 03-10-2014 a las 11:55:41. |
|
#2
|
||||
|
||||
|
Pues como yo lo hice jejeje. Me costó porque nunca habia hecho algo asi pero es muy util saberlo hacer.
|
|
#3
|
||||
|
||||
|
El tratamiento de mensajes podría hacerse reescribiendo la función virtual WndProc de TNewScrollBox directamente. El resultado es el mismo.
Saludos. |
|
#4
|
||||
|
||||
|
Hola.
Si escafandra, si se va a aplicar eventualmente a un control, esta última opción que mencionas la considero mas práctica por lo sencilla de implementar . header Código PHP:
Código PHP:
Es decir, si voy a usar algo una vez en una aplicación y muy rara vez nuevamente, escribiría el código mas corto y simple si con él obtengo el mismo resultado (pero es mi humilde opinion). Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#5
|
||||
|
||||
|
ecfisa, no hablo de cambiar la función sino de sobreescribir la función virtual WndProc del control que estamos creando, derivado de un descendente TWinControl. Es mi técnica preferida.
Saludos. |
|
#6
|
||||
|
||||
|
interesante, ¿Como seria eso amigo? ¿Puedes crear un ejemplo básico?
|
|
#7
|
||||
|
||||
|
Cita:
No veo en línea al amigo escafandra, pero te pongo un ejemplo muy básico de lo que creo a que se refiere (luego me corregirá si me equivoco): header: Código PHP:
Código PHP:
![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| ¿Existe algún error en FireMonkey en el evento OnClosePopup de un ComboBox? | RedVenom | FireMonkey | 0 | 10-02-2014 18:56:43 |
| Frames. ¿Existe un evento similar a onActivate? | adebonis | Varios | 19 | 21-11-2008 13:26:50 |
| Comprobar en evento OnExit si valor de campo ya existe | JMGR | Conexión con bases de datos | 9 | 18-05-2008 03:42:31 |
| Llamar evento desde otro evento | nachito_tuc | OOP | 1 | 23-08-2006 21:37:43 |
| Existe ? | Descendents | Varios | 1 | 20-10-2003 18:04:25 |
|