Página 1 de 1

Eventos, como funciona.

Publicado: Vie Feb 06, 2009 1:30 pm
por rafa
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

Eventos, como funciona.

Publicado: Vie Feb 06, 2009 4:29 pm
por notengo
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

Eventos, como funciona.

Publicado: Mar Feb 10, 2009 6:26 pm
por rafa
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

Eventos, como funciona.

Publicado: Mié Feb 11, 2009 12:33 am
por notengo
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