FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour TGet y SetMargins
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
TGet y SetMargins
Posted: Tue Mar 24, 2015 11:31 AM
Buenos días,

estoy modificando la clase TGet para que cuando le añada una ACTION me dibuje el botón a la izquierda en lugar de la derecha como lo hace normalmente.
Para eso estoy modificando las coordenadas de creación del boton en el método CreateButton(), lo que es sencillo, peeeeeero.... No puedo cambiar el márgen izquierdo para que el texto del Get no quede debajo del botón. He puesto un ::SetMargins( ::nHeight, 1 ) en el método CreateButton, pero no me funciona.
En el diálogo la declaración del GET es
Code (fw): Select all Collapse
       // Botón normal, con '...' como texto
       @ nRow+13,55 GET oGet VAR cHost PICTURE "@;S50" OF oDlg SIZE 100,nGetHeight PIXEL UPDATE ;
                    VALID !Empty( cHost ) ;
                    ACTION MsgInfo('Hola' )


Y en el CreateButton
Code (fw): Select all Collapse
...
   if ValType( ::bAction ) == "B" .and. Upper( ::ClassName() ) == "TGET"
      if Empty( ::cBmpName )
         ::SetMargins( ::nHeight, 1 )
         @ 0, 0 BUTTONBMP ::oBtn OF Self ;
         ACTION ( Eval( oThis:bAction, oThis ), if( ::lKeepFocus, oThis:SetFocus(), nil ) ) ;
         SIZE ::nHeight - 4, ::nHeight - 4 PIXEL
         if Empty( ::oBtn:hBitmap )
            ::oBtn:SetText( "..." )
         endif
         DEBUG ::nHeight
      else
...


El boton se crea y funciona correctamente, pero el get se ve mal


Si el setmargin lo hago en el
Code (fw): Select all Collapse
 ACTIVATE DIALOG oDlg ON INIT oGet:SetMargins( oGet:nHeight, 1 )
funciona bien.

¿Como hago para que funcione en la clase? He visto que el SetMargin es un SendMessage(...) ¿Tendrá algo que ver?
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: TGet y SetMargins
Posted: Wed Mar 25, 2015 07:12 AM

Carlos,

Y si alineas el GET a la derecha ? Asi no se ocultará su texto

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: TGet y SetMargins
Posted: Wed Mar 25, 2015 09:19 AM

Hola Antonio,

Si es numérico estaría bien, pero para texto en general no lo veo correcto, sería un condicionante dificil de justificar para los diseñadores gráficos (Sí, tengo diseñadores gráficos que me indican como debo pintar los componentes :roll: ). Probablemente la solución pase por cambiar el parent del botón al parent del TGet y mover el Get.
La verdad es que me gustaría encontrar el porqué de este comportamiento extraño de Windows, debe ser una de esas cosas que tienen truco, y que no funcionan por algún detalle mínimo e insignificante.

Un saludo

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: TGet y SetMargins
Posted: Wed Mar 25, 2015 09:26 AM

Cáspita ! Carlos: diseñadores graficos pegaditos a tu silla diciendo esto si, esto no, este color....? jajajajaja
Luego, cuando tomeis cañas... hablareis de colorines.... jajajajaja

En serio... menudo nivelón de programas os tienen que salir...
Bueno, a ver si alineas el tema.

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: TGet y SetMargins
Posted: Wed Mar 25, 2015 09:29 AM

Carlos,

Llama al método SetMargin() desde el método Initiate() y solucionado :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: TGet y SetMargins
Posted: Wed Mar 25, 2015 11:33 AM
Antonio,

Creo que llegamos a soluciones parecidas.
Code (fw): Select all Collapse
METHOD SetFont(...) CLASS TGet
   ::Super:SetFont( ... )
   IF ::oBtn != NIL
      ::SetMargins( ::nHeight, 1 )
   ENDIF
RETURN NIL


El punto está en que cuando se cambian las fuentes, se resetean los márgenes :-) . En StackOverflow hay uno que tenia el mismo problema en Delphi, y terminó parchando la libreria en el cambio de fuente.

Bueno, de momento me quedo con el cambio en el setfont, por las dudas se cambie la fuente luego del init...

Gracias!
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: TGet y SetMargins
Posted: Wed Mar 25, 2015 11:47 AM
Paquito,

hmpaquito wrote:Cáspita ! Carlos: diseñadores graficos pegaditos a tu silla diciendo esto si, esto no, este color....? jajajajaja
Luego, cuando tomeis cañas... hablareis de colorines.... jajajajaja


en mi caso la creatividad se me puede llegar a dar con el código, porque con la estética gráfica... pff! Soy MUUUUY cuadrado!
Suerte que tenemos unos colegas que entienden de estética y nos asesoran y explican los errores que solemos cometer en el diseño, y nos mantienen a raya con la identidad empresarial y de marca y cosas como esas que a veces solemos pasar por alto. No hay como aprender de los que saben. Eso si, si hay cañas de por medio seguro que terminamos viendo las cosas de todos colores, jaja.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: TGet y SetMargins
Posted: Wed Mar 25, 2015 01:13 PM

Carlos,

Desde el Método Initiate() solo se llamará una vez

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: TGet y SetMargins
Posted: Wed Mar 25, 2015 02:07 PM

Antonio,

si, efectivamente, solo se llamará una vez, y no se reaplicará si se cambia una fuente, que es cuando se quita solo, por eso lo prefiero en el setfont.

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: TGet y SetMargins
Posted: Wed Mar 25, 2015 02:18 PM

ok, entendido :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: TGet y SetMargins
Posted: Wed Mar 25, 2015 03:29 PM

Antonio,

te dejo el enlace donde encontré la idea del SetFont

http://stackoverflow.com/questions/4217 ... -windows-7

Lo curioso es que es un problema de Win7 que no existe en XP :shock:

Hay cada historias...

Gracias!

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: TGet y SetMargins
Posted: Wed Mar 25, 2015 03:32 PM

gracias :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion