O mucho o poco
O mucho o poco
Hola amigos del foro. Soy nuevo en este foro, y espero seros util.
Por lo pronto tengo un problemilla, a ver si alguien puede ayudarme.
Resulta que estoy haciendo un browse propio para listar arrays multidimensiones, todo va bien. Ahora estoy creando el método de edicion de celdas, y me surge un problema del que no tengo ni idea de como solucionarlo. Resulta que para editar la ceda creo un DIALOGO del tamaño de la celda para poner un GET dentro. El problema es que si pongo un tamaño, el DIALOGO es 1 pixel demasiado grande y sobresale de la celda. Pero si le quito un pixel, se dibuja un pixel más pequeño que la celda y se queda corto (resulta feo). ¿Os lo podeis creer? He intentado de todo, cambiar el ::nWidth o el ::nRight, hacer un Move durante la inicialización, redimensionarla, etc, pero no hay solución.
¿Alguna sugerencia?
Gracias de antemano.
Por lo pronto tengo un problemilla, a ver si alguien puede ayudarme.
Resulta que estoy haciendo un browse propio para listar arrays multidimensiones, todo va bien. Ahora estoy creando el método de edicion de celdas, y me surge un problema del que no tengo ni idea de como solucionarlo. Resulta que para editar la ceda creo un DIALOGO del tamaño de la celda para poner un GET dentro. El problema es que si pongo un tamaño, el DIALOGO es 1 pixel demasiado grande y sobresale de la celda. Pero si le quito un pixel, se dibuja un pixel más pequeño que la celda y se queda corto (resulta feo). ¿Os lo podeis creer? He intentado de todo, cambiar el ::nWidth o el ::nRight, hacer un Move durante la inicialización, redimensionarla, etc, pero no hay solución.
¿Alguna sugerencia?
Gracias de antemano.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Gracias de todas formas, pero eso no me sirve de mucha ayuda.
El problema es que ya está todo diseñado para un DIALOGO. Principalmente la funcion que evalua el resultado del GET. El caso es que ese mismo método lo tenía hecho en FW Clipper y no teníe es probema.
Además, el WBrowse de FW utiliza un DIALOGO y no tiene ese inconveniente.
Si alguien conociera cúal es el origen Windows/Harbour del Problema, a lo mejor se podía solucionar.
Tanto este como otros. Por ejemplo porqué RECTANGLE y MOVETO/LINETO producen resultados diferentes.
Lo miemso ocurre con EXTTEXTOUT y DRAWTEXT que varian de DOS a CUATRO pixels tanto en ancho como en alto con respecto a las coordenadas LINETO. El origen de todos estos pequeños "bugs" debe de tener alguna relacion. A lo mejor quitar/añadir uno de cada x pixel o algo así, o poner algún SET a ON u OFF.
Pensaba que los Gurus del FW sabrían algo al respecto. Pero me conformaré. Tampoco es demasiado inconveniente.
Un saludo y gracias.
El problema es que ya está todo diseñado para un DIALOGO. Principalmente la funcion que evalua el resultado del GET. El caso es que ese mismo método lo tenía hecho en FW Clipper y no teníe es probema.
Además, el WBrowse de FW utiliza un DIALOGO y no tiene ese inconveniente.
Si alguien conociera cúal es el origen Windows/Harbour del Problema, a lo mejor se podía solucionar.
Tanto este como otros. Por ejemplo porqué RECTANGLE y MOVETO/LINETO producen resultados diferentes.
Lo miemso ocurre con EXTTEXTOUT y DRAWTEXT que varian de DOS a CUATRO pixels tanto en ancho como en alto con respecto a las coordenadas LINETO. El origen de todos estos pequeños "bugs" debe de tener alguna relacion. A lo mejor quitar/añadir uno de cada x pixel o algo así, o poner algún SET a ON u OFF.
Pensaba que los Gurus del FW sabrían algo al respecto. Pero me conformaré. Tampoco es demasiado inconveniente.
Un saludo y gracias.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Las funciones que comentas tan sólo hacen llamadas directas al API de Windows, por lo que esas diferencias son propias de Windows, no de FW.
Por otra parte, las dimensiones de un diálogo son en unidades lógicas y no en pixeles, de ahí que la modifiación tenga que hacerse desde la claúsula ON INIT para que sea en pixeles
Por otra parte, las dimensiones de un diálogo son en unidades lógicas y no en pixeles, de ahí que la modifiación tenga que hacerse desde la claúsula ON INIT para que sea en pixeles
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Este codigo funciona correctamente:
Code: Select all
#include "FiveWin.ch"
function Main()
local oDlg
DEFINE DIALOG oDlg
ACTIVATE DIALOG oDlg ;
ON INIT ( oDlg:nWidth := 50, oDlg:nHeight := 50 )
return nil
Lo intenté en su momento, pero me cambia el dialogo de sitio. Necesitaría calcular un nuevo nTop/nLeft, pero no me asegura que esas coordenadas se mantengan en otros ordenadores con otros Windows/resolucion.
Déjalo, me aguantaré así. Lo estraño es que con CLIPPER no me pasaba.
Gracias de todas formas.
Saludos
Déjalo, me aguantaré así. Lo estraño es que con CLIPPER no me pasaba.
Gracias de todas formas.
Saludos