O mucho o poco

Post Reply
antolin
Posts: 475
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

O mucho o poco

Post 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.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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
regards, saludos

Antonio Linares
www.fivetechsoft.com
jvargas
Posts: 63
Joined: Sun Apr 08, 2007 9:50 pm
Location: Lima Perú

Post 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
FW-705, xHarbour 0.99.71 (SimpLex) , bcc55
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

> Qué se pone en Clausula "OF"

el browse sobre el que queremos mostrarlo:

... OF oBrowse
regards, saludos

Antonio Linares
www.fivetechsoft.com
antolin
Posts: 475
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Post 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.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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
regards, saludos

Antonio Linares
www.fivetechsoft.com
antolin
Posts: 475
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Post by antolin »

Desde ON INIT tampoco va. Pero Gracias de todas formas
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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
regards, saludos

Antonio Linares
www.fivetechsoft.com
antolin
Posts: 475
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Post 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
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Post 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.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
antolin
Posts: 475
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Post by antolin »

El caso no es centrar el dialogo, sino hacerlo coincidir con las dimensiones de la Celda del Listbox.
Post Reply