![]() |
Usando SetWindowLong / GetWindowLong
Hola amigos
Para quienes pueda servirle o desconozcan su uso, aquí les dejo algunas de las muchas utilidades que podemos darle a la función SetWindowLong.
Ejemplos de uso:
Saludos. :) |
Muuuy interesante, gracias :)
Espero no olvidarme cuando me haga falta :D |
Pues lo acabo de probar y solamente me funciona OnlyNumber.
Un Saludo. |
Hola Marcos.
Que extraño, tal vez sea la versión de Delphi aunque sería raro... , las pruebas las hice sobre Delphi 7. Pero por si acaso aca te pongo un demo con un Edit, un Memo y un LabeledEdit que aquí esta funcionando, a ver si sucede lo mismo. Un saludo. |
Para descartar toda posibilidad de que pudiera haber cometido un error, reproduje tu prueba usando tres Edits y sigue funcionando correctamente:
![]() A menos que esto tuviera que ver en tu caso: Cita:
Un saludo. |
A mí me funciona sólo onlynumber :confused:
D2007 |
Hola Casimiro.
No pude encontrar una referencia exacta a los usos de SetWindowLong con conflictos, pero encontré varias con casos similares. Aparentemente algunos usos sólo corren compiladas con versiones Delphi 2006 y anteriores. Pareciera que el problema se produce por que a partir de la versión 2007, algunos controles son manejados por la VCL. De las referencias de donde infiero esto destaco estas dos: Cita:
Cita:
Así que las funciones que puse arriba (exeptuando OnlyNumbers) aparentemente sólo funcionarían hasta la versión de Delphi 2006 (quedaría probarlas con esa versión para confirmarlo). Un saludo. |
La prueba la hice con D7, ahora me he descargado tu ejemplo y me ocurre lo mismo solamente funciona OnlyNumber.
Un Saludo. |
Cita:
Si no es mucho abusar de tu tiempo ¿ Podrías probar este ejecutable compilado en mi máquina ? (el archivo está limpio) Despues de enterarme que usas Delphi 7 estoy totalmente desconcertado... ya que me a mí todas la funciones me las ejecuta correctamente. :confused::confused::confused: Un saludo y gracias. Edito: Y ya a esta altura estoy intrigadísimo por encontrar el motivo ... :) |
Acabo de ejecutarlo y ocurre lo mismo, quizás obedezca a alguna configuración relacionada con el país.....
Un Saludo. |
Hola Marcos.
Muchisimas gracias por tu atención. Voy a investigar el por qué de tán extraño comportamiento... :confused:, y les comunico cualquier novedad. Un saludo y gracias nuevamente.:) |
Yo lo he ejecutado también con wine en ubuntu y funciona sólo onlynumber.
Y ahí no tiene nada que ver windows, delphi, ni nada de eso. Qué cosas más extrañas :) |
Hola amigos.
Acabo de pasar el código fuente a un colega que tiene Delphi XE y a él también le funciona correctamente. Cambié la configuración regional a España y de idioma a español tomando en cuenta la observación de Marcos y nada... sigue funcionando bién. Aunque estoy convencido que Marcos le está arrimando bastante al orígen del problema ya que el ejecutable en mi máquina funciona y en la de ustedes no. ;) Ante la imposibilidad reproducir que no funcione, ando dando palos a ciegas... :mad: Leí por ahí que usar InvalidateRect podría ser necesario en algunos casos Pero realmente no sé si solucionará algo por que en mi caso funciona del mismo modo. Ojalá algún compañero pueda justificar esta diferencia de comportamiento. La verdad es que no encuentro el por qué. :confused: Un desconcertado saludo. :) |
Pasa el código fuente del proyecto para compilarlo, a ver si es algo del compilador.
|
Hola Casimiro.
Está en el mensaje #4, si tenés algún inconveniente para verlo lo subo nuevamente. Un saludo. |
Perdón, no me había dado cuenta, sólo había visto el ejecutable.
Lo he compilado y ejecutado, el resultado es el mismo, sólo funciona onlynumber. He desempolvado un viejo equipo que tiene winxp y delphi 5, lo he ejecutado y sólo funciona onlynumber. :confused::confused::confused: |
Hola ecfisa:
Usando Delphi 7 Enterprise en un PC con Windows XP SP3 en ingles, solo funciona ES_NUMBER. Usando Delphi 7 Enterprise en un PC con Windows 7 Professional en ingles, todo funciona. Usando Delphi 7 Enterprise en un PC con Windows Vista Home Premium SP2 en Español, todo funciona. Por ser un API el funcionamiento depende del OS : http://www.delphi3000.com/articles/a...=SetWindowLong ¿Que OS tienen los PC donde funciono? Como nota adicional pruebas con los Edit styles : ES_PASSWORD, ES_READONLY y ES_UPPERCASE no funcionaron en ninguno de los anteriores OS. Ver estos links: http://www.delphigroups.info/3/3/144938.html http://www.autohotkey.com/docs/misc/Styles.htm#Edit Saludos, Nelson. |
acabo de testear el archivo compilado, Sobre un windows XP Profesional (Version 2002) SP3 y funciona correctamente.
saludos. PD: Configuracion Regional: Español Argentina. Numeros: Separador de miles "." de Decimales "," saludos. |
| La franja horaria es GMT +2. Ahora son las 16:55:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi