Page 1 of 1
O mucho o poco
Posted: Sat Jun 16, 2007 11:54 am
by antolin
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.
Posted: Sat Jun 16, 2007 4:27 pm
by Antonio Linares
Prueba a cambiarle el tamaño al diálogo desde la claúsula ON INIT del diálogo:
ACTIVATE DIALOG oDlg ON INIT oDlg:nWidth := ...
Otra opción que puedes considerar es crear un GET directamente en vez de un diálogo
Posted: Sun Jun 17, 2007 4:43 pm
by jvargas
Hola Amigos
Antonio:
"Otra opción que puedes considerar es crear un GET directamente en vez de un diálogo"
Pregunta: Cómo se crea un Get sin Dialogo, Qué se pone en Clausula "OF"
Gracias.
Saludos
Jorge Vargas
Posted: Sun Jun 17, 2007 8:26 pm
by Antonio Linares
> Qué se pone en Clausula "OF"
el browse sobre el que queremos mostrarlo:
... OF oBrowse
Posted: Mon Jun 18, 2007 9:07 am
by antolin
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.
Posted: Mon Jun 18, 2007 9:18 am
by Antonio Linares
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
Posted: Tue Jun 19, 2007 7:24 pm
by antolin
Desde ON INIT tampoco va. Pero Gracias de todas formas
Posted: Tue Jun 19, 2007 8:37 pm
by Antonio Linares
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
Posted: Sat Jun 23, 2007 9:40 am
by antolin
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
Posted: Wed Jun 27, 2007 8:20 pm
by sysctrl2
Antolin,
a mi me gustan los dialogos al centro sin importar el tipo de resolucion de las pantallas,
para centrar el dialogo siempre uso el metodo CENTERED
ACTIVATE DIALOG oDlg CENTERED
Saludos.
Posted: Thu Jun 28, 2007 2:18 pm
by antolin
El caso no es centrar el dialogo, sino hacerlo coincidir con las dimensiones de la Celda del Listbox.