Estoy haciendo un port de los sockets de delphi a Xailer, recién
empiezo, y la idea es desarrollar el mismo sistema de clases de Delphi,
pero para Xailer, y tengo una duda que no se como continuar;
Esto en Delphi;
TSocketNotifyEvent = procedure (Sender: TObject) of object;
FOnCreateHandle: TSocketNotifyEvent;
property OnCreateHandle: TSocketNotifyEvent read FOnCreateHandle write
FOnCreateHandle;
procedure DoCreateHandle; dynamic;
procedure TBaseSocket.Open;
DoCreateHandle;
end;
En Xailer, no se como implementar este funcionamiento, creo que debería
comportarse saltando a un evento OnCreateHandle(), pero no
tengo ni idea de como hacerlo.
¿ Algún alma en mi ayuda ?
Despues , a ver si alguien explica exactamente que significa en la
declaracion de clases como RESERVED, PE_EDITOR, etc.. que he visto y no
tengo la pajotera idea ... y he buscado en la ayuda ....
Saludos
Rafa Carmona
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Eventos, como funciona.
Eventos, como funciona.
rafa,
> En Xailer, no se como implementar este funcionamiento, creo que debería
> comportarse saltando a un evento OnCreateHandle(), pero no
> tengo ni idea de como hacerlo.
Si necesitas lanzar un evento sólamente necesitas un método que lo dispare:
METHOD DoCreateHandle()
::OnCreateHandle( ... )
RETURN Nil
No conozco Delphi lo suficiente para saber si es lo que necesitas...
> Despues , a ver si alguien explica exactamente que significa en la
> declaracion de clases como RESERVED, PE_EDITOR, etc.. que he visto y no
> tengo la pajotera idea ... y he buscado en la ayuda ....
Los métodos RESERVED: son métodos normales pero que usualmente sólo se usan
internamente en su clase. Piensa en el método WMPaint() de un control, es
un candidado a método RESERVED: puesto que no lo vas a llamar desde ninguna
parte, sólo lo va a lanzar el sistema cuando necesite repintar el control.
Las clases PE_ son los editores de propiedades (similares a los de Delphi)
y son los que se encargan de la comunicación entre el inspector de objetos
y el componente que tengas seleccionado.
Tengo el artículo sobre el diseño de componentes casi listo y estoy
terminando otro explicando qué son los editores de propiedades, cómo
utilizarlos y cómo crear un editor de propiedades personalizado.
En cuanto los publique confío en que despejarán esas dudas
Saludos,
José Lalín
> En Xailer, no se como implementar este funcionamiento, creo que debería
> comportarse saltando a un evento OnCreateHandle(), pero no
> tengo ni idea de como hacerlo.
Si necesitas lanzar un evento sólamente necesitas un método que lo dispare:
METHOD DoCreateHandle()
::OnCreateHandle( ... )
RETURN Nil
No conozco Delphi lo suficiente para saber si es lo que necesitas...
> Despues , a ver si alguien explica exactamente que significa en la
> declaracion de clases como RESERVED, PE_EDITOR, etc.. que he visto y no
> tengo la pajotera idea ... y he buscado en la ayuda ....
Los métodos RESERVED: son métodos normales pero que usualmente sólo se usan
internamente en su clase. Piensa en el método WMPaint() de un control, es
un candidado a método RESERVED: puesto que no lo vas a llamar desde ninguna
parte, sólo lo va a lanzar el sistema cuando necesite repintar el control.
Las clases PE_ son los editores de propiedades (similares a los de Delphi)
y son los que se encargan de la comunicación entre el inspector de objetos
y el componente que tengas seleccionado.
Tengo el artículo sobre el diseño de componentes casi listo y estoy
terminando otro explicando qué son los editores de propiedades, cómo
utilizarlos y cómo crear un editor de propiedades personalizado.
En cuanto los publique confío en que despejarán esas dudas

Saludos,
José Lalín
Eventos, como funciona.
José Lalín escribió:
>
>
> No conozco Delphi lo suficiente para saber si es lo que necesitas...
Tampoco yo, jejeje..
Bueno, haciendo pruebas he llegado a la siguiente conclusión;
Cuando queramos controlar un evento desde un formulario, por ejemplo;
CLASS TForm1 FROM TForm
COMPONENT oSocket
METHOD CreateForm()
METHOD FormCreate( oSender )
METHOD CreateHandle( oSender )
ENDCLASS
METHOD CreateHandle( oSender ) CLASS TForm1
MsgINfo( oSender:Classname() ) // TBaseSocket
RETURN NIL
//---------------------------------------------------------- --------------------
METHOD FormCreate( oSender ) CLASS TForm1
::oSocket := TBaseSocket():Create()
::oSocket:OnCreateHandle := "CreateHandle"
::oSocket:lActive := .T.
RETURN Nil
Para hacer esto, he realizado lo siguiente en la clase xBaseSocket;
CLASS XBASESOCKET FROM TCOMPONET
EVENT OnCreateHandle()
ENDCLASS
METHOD DoCreateHandle() CLASS xBaseSocket
if ::FlActive .and. !Empty( ::OnCreateHandle )
::OnCreateHandle( self )
endif
RETURN NIL
¿ Es necesario pasar Self o no , o si tengo que pasar más parámetros ?
Por ejemplo;
::OnCreateHandle( Self, cPar1, cPar2 )
También estoy viendo que Xailer no tiene nada implementado funciones
como WSAGetLasError(), socket(), etc... o si están , lo logro encontrarlas.
De todas manera voy a ver si es posible usar la libreria TIP de xHarbour
para ello, menos trabajo.
>
>> Despues , a ver si alguien explica exactamente que significa en la
>> declaracion de clases como RESERVED, PE_EDITOR, etc.. que he visto y no
>> tengo la pajotera idea ... y he buscado en la ayuda ....
>
> Los métodos RESERVED: son métodos normales pero que usualmente sólo se
> usan internamente en su clase. Piensa en el método WMPaint() de un
> control, es un candidado a método RESERVED: puesto que no lo vas a
> llamar desde ninguna parte, sólo lo va a lanzar el sistema cuando
> necesite repintar el control.
¿ Esto no sería PROTECTED o HIDDEN ?
> Las clases PE_ son los editores de propiedades (similares a los de
> Delphi) y son los que se encargan de la comunicación entre el inspector
> de objetos y el componente que tengas seleccionado.
>
> Tengo el artículo sobre el diseño de componentes casi listo y estoy
> terminando otro explicando qué son los editores de propiedades, cómo
> utilizarlos y cómo crear un editor de propiedades personalizado.
>
> En cuanto los publique confío en que despejarán esas dudas
Esperándolo como agua de mayo
Saludos
Rafa Carmona
>
>
> No conozco Delphi lo suficiente para saber si es lo que necesitas...
Tampoco yo, jejeje..
Bueno, haciendo pruebas he llegado a la siguiente conclusión;
Cuando queramos controlar un evento desde un formulario, por ejemplo;
CLASS TForm1 FROM TForm
COMPONENT oSocket
METHOD CreateForm()
METHOD FormCreate( oSender )
METHOD CreateHandle( oSender )
ENDCLASS
METHOD CreateHandle( oSender ) CLASS TForm1
MsgINfo( oSender:Classname() ) // TBaseSocket
RETURN NIL
//---------------------------------------------------------- --------------------
METHOD FormCreate( oSender ) CLASS TForm1
::oSocket := TBaseSocket():Create()
::oSocket:OnCreateHandle := "CreateHandle"
::oSocket:lActive := .T.
RETURN Nil
Para hacer esto, he realizado lo siguiente en la clase xBaseSocket;
CLASS XBASESOCKET FROM TCOMPONET
EVENT OnCreateHandle()
ENDCLASS
METHOD DoCreateHandle() CLASS xBaseSocket
if ::FlActive .and. !Empty( ::OnCreateHandle )
::OnCreateHandle( self )
endif
RETURN NIL
¿ Es necesario pasar Self o no , o si tengo que pasar más parámetros ?
Por ejemplo;
::OnCreateHandle( Self, cPar1, cPar2 )
También estoy viendo que Xailer no tiene nada implementado funciones
como WSAGetLasError(), socket(), etc... o si están , lo logro encontrarlas.
De todas manera voy a ver si es posible usar la libreria TIP de xHarbour
para ello, menos trabajo.
>
>> Despues , a ver si alguien explica exactamente que significa en la
>> declaracion de clases como RESERVED, PE_EDITOR, etc.. que he visto y no
>> tengo la pajotera idea ... y he buscado en la ayuda ....
>
> Los métodos RESERVED: son métodos normales pero que usualmente sólo se
> usan internamente en su clase. Piensa en el método WMPaint() de un
> control, es un candidado a método RESERVED: puesto que no lo vas a
> llamar desde ninguna parte, sólo lo va a lanzar el sistema cuando
> necesite repintar el control.
¿ Esto no sería PROTECTED o HIDDEN ?
> Las clases PE_ son los editores de propiedades (similares a los de
> Delphi) y son los que se encargan de la comunicación entre el inspector
> de objetos y el componente que tengas seleccionado.
>
> Tengo el artículo sobre el diseño de componentes casi listo y estoy
> terminando otro explicando qué son los editores de propiedades, cómo
> utilizarlos y cómo crear un editor de propiedades personalizado.
>
> En cuanto los publique confío en que despejarán esas dudas

Esperándolo como agua de mayo

Saludos
Rafa Carmona
Eventos, como funciona.
rafa,
> ¿ Es necesario pasar Self o no , o si tengo que pasar más parámetros ?
No hace falta pasar el Self, lo hace Xailer automáticamente.
> También estoy viendo que Xailer no tiene nada implementado funciones
> como WSAGetLasError(), socket(), etc... o si están , lo logro encontrarlas.
Creo que algo tenemos hecho pero no estoy seguro...
> ¿ Esto no sería PROTECTED o HIDDEN ?
No, PROTECTED/HIDDEN impiden que sean visibles fuera de la clase y RESERVED
simplemente se aplica a métodos públicos que normalmente no se van a llamar
directamente.
> Esperándolo como agua de mayo
;-)
Saludos,
José Lalín
> ¿ Es necesario pasar Self o no , o si tengo que pasar más parámetros ?
No hace falta pasar el Self, lo hace Xailer automáticamente.
> También estoy viendo que Xailer no tiene nada implementado funciones
> como WSAGetLasError(), socket(), etc... o si están , lo logro encontrarlas.
Creo que algo tenemos hecho pero no estoy seguro...
> ¿ Esto no sería PROTECTED o HIDDEN ?
No, PROTECTED/HIDDEN impiden que sean visibles fuera de la clase y RESERVED
simplemente se aplica a métodos públicos que normalmente no se van a llamar
directamente.
> Esperándolo como agua de mayo

;-)
Saludos,
José Lalín