![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
TFieldGetTextEvent
Hola:
Tengo un problema al llamar desde un evento a un procedimiento. He estado revisando el foro y hay un ejemplo de como formatear campos usando el evento TFieldGetTextEvent. Mi procedimiento lo declaro como: procedure FormatearFechaHoraEDI(Sender: TField; var Text: string; DisplayText: Boolean); Pero cuando lo llamo desde una tabla, desde esta forma: mitabla.ongettext := formatearFechaHora; El compilador me devuleve el siguiente error: [Pascal Error] pedidos_entrada.pas(183): E2010 Incompatible types: 'TFieldGetTextEvent' and 'Pointer' ¿Qué error cometo?. Gracias, JL |
#2
|
||||
|
||||
Bueno pues asi a simple vista...
Tu dices que el procedimiento tiene como nombre FormatearFechaHoraEDI pero estas asignando otro llamado formatearFechaHora, ademas de que lo estas asignando a un procedimiento llamado ongettext y asumo de que la tabla se llama mitabla y en ese caso pues las tablas no tienen dicho evento desde la fabrica.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#3
|
||||
|
||||
además de lo dicho, tu procedimiento debe estar declarado así:
procedure TForm1.FormatearFechaHoraEDI(Sender: TField; var Text: string; DisplayText: Boolean); TForm1, TFormXXX, lo que quieras, pero dentro de una clase. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#4
|
|||
|
|||
De eventos a procedures
Hola:
He comprobado que me he equivocado en el nombre de función, pero ha sido un error. Aquí teneís un ejemplo más claro:
.....
He comprobado que la función FormatearEstadoEdi, solo funciona cuando la declaro dentro de la clase TfchilpedidoEntrada. ¿Por que no la puedo poner en otro unit?. Gracias. JL Lo Edite para arreglar las etiquetas delphi Última edición por jhonny fecha: 06-03-2007 a las 17:26:51. |
#5
|
|||
|
|||
Llamar a un procedimiento desde un evento
Hola:
Para llamar un evento que esta en otro unit, se debe crear una clase llamada "dumy class", consulta la página siguiente: http://delphi.about.com/cs/adptips20...ltip1003_5.htm Cuando el evento y el procedimiento están dentro de la misma clase es mucho más sencillo, ya que no hay que hacer nada. Saludos, JL |
#6
|
||||
|
||||
A ver, y digo yo. Ya tienes la tabla dentro de una ventana, useasé la clase TfChildPedidoEntrada, ¿por qué no creas el evento ahí mismo y después dentro, llamas a la rutina que más te guste?, reusas código, no creas un objeto que no necesitas, y reusas la rutina, vamos, algo tan simple como esto:
El por qué no te deja compilar es bien simple. un evento está declarado como: Y un procedimiento fuera de una clase como:
La diferencia es que se usan técnicas distintas para identificar a cada uno de ellos, por tanto, da el error de tipos distintos. Para quien quiera saberlo: - Para identificar un procedure se usa un puntero de 4 bytes (32 bits) - Para identificar un procedure of object se usa dos punteros de 4 bytes (64 bits). Saludos Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#7
|
|||
|
|||
Hola:
Pues tambien funciona. Gracias. JL |
![]() |
|
|
![]() |
|