TGet y SetMargins

TGet y SetMargins

Postby Carlos Mora » 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: Select all  Expand view  RUN

       // 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: Select all  Expand view  RUN

...
   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
Image

Si el setmargin lo hago en el
Code: Select all  Expand view  RUN
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"
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: TGet y SetMargins

Postby Antonio Linares » Wed Mar 25, 2015 7:12 am

Carlos,

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: TGet y SetMargins

Postby Carlos Mora » Wed Mar 25, 2015 9: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"
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: TGet y SetMargins

Postby hmpaquito » Wed Mar 25, 2015 9: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.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: TGet y SetMargins

Postby Antonio Linares » Wed Mar 25, 2015 9:29 am

Carlos,

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: TGet y SetMargins

Postby Carlos Mora » Wed Mar 25, 2015 11:33 am

Antonio,

Creo que llegamos a soluciones parecidas.
Code: Select all  Expand view  RUN

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 :shock: . 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"
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: TGet y SetMargins

Postby Carlos Mora » 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"
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: TGet y SetMargins

Postby Antonio Linares » Wed Mar 25, 2015 1:13 pm

Carlos,

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: TGet y SetMargins

Postby Carlos Mora » Wed Mar 25, 2015 2: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"
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: TGet y SetMargins

Postby Antonio Linares » Wed Mar 25, 2015 2:18 pm

ok, entendido :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: TGet y SetMargins

Postby Carlos Mora » Wed Mar 25, 2015 3: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"
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: TGet y SetMargins

Postby Antonio Linares » Wed Mar 25, 2015 3:32 pm

gracias :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 20 guests