Problemas de 'TClase'

Post Reply
User avatar
Xevi
Posts: 168
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Problemas de 'TClase'

Post by Xevi »

Bien, sigo con mis pinitos y siguiendo con mi 'forma' de programar...

veo que esto...
@ 5.6, 1.6 BUTTON "&Menu1" OF oWnd SIZE 100, 30 ACTION menu( oWnd )
@ 7.8, 1.6 BUTTON "&Menu1 2007" OF oWnd SIZE 100, 30 ACTION menu2007( oWnd )
es lo mismo que hacer
TButton():New( 100, 10, "&Menu", oWnd, {|| menu( oWnd )}, 100, 30,,, .F., .T., .F.,, .F.,,, .F.,, .F. )
TButton():New( 140, 10, "&Menu 2007", oWnd, {|| menu2007( oWnd )}, 100, 30,,, .F., .T., .F.,, .F.,,, .F.,, .F. )
segun he visto en el .ppo

Bien, pero como 'mi costumbre' que tengo adquirido, es sobre la misma clase ir añadiendo las propiedades i eventos que voy definiendo segun el caso, pues vendria a ser como...

WITH OBJECT oBtn1 := TButton():New()
:SetBounds( 110, 100, 210, 130 )
:cCaption := "&Menu"
:bAction := {|| menu(oWnd) }
END

WITH OBJECT oBtn2 := TButton():New()
:SetBounds( 110, 140, 210, 170 )
:bAction := {|| menu2007(oWnd) }
:cCaption := "&2007"
END

Pues, no!!!
coje bien posicion y medidas SetBounds()
también el bloque de acción a tomar bAction
PERO NO ASÍ EL TEXTO cCaption
y deja el texto Button1 que veo que es el DEFAULT que toma al crearse el objeto en la clase

He estado mirando, pero no veo que me puedo dejar.

Una ayudita!!!

Un Saludo,
Xevi.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Problemas de 'TClase'

Post by cnavarro »

Prueba asi

Code: Select all

      :SetText( "Test" )
      //      :SetFont( oFont )
 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
Xevi
Posts: 168
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Problemas de 'TClase'

Post by Xevi »

Ahora si.

Gracias.


Un Saludo,
Xevi.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
Posts: 168
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Problemas de 'TClase'

Post by Xevi »

Cristobal,

he estado haciendo pruebas con los distintos tipos de menues, y veo que si establecemos un tipo 2007, 2010, 2013 o 2015, el ancho que ocupa este menu és muy 'desorbitado', por decirlo de una manera. Vaya, que el espaciado que hay a la derecha es tremendamente largo.

Puedes verlo en este ejemplo...

#include "FiveWin.ch"

Static oWnd

//------------------------------------------------------------------------//

function Main()
Local oIcon, oBtn1, oBtn2

SET CENTURY ON
SET DATE FRENCH
SET DELETE ON

DEFINE ICON oIcon NAME "citroen"

DEFINE WINDOW oWnd FROM 1, 1 TO 600, 800 ;
TITLE "Prova FWH amb xEdit!" ;
ICON oIcon PIXEL

* @ 5.6, 1.6 BUTTON "&Menu" OF oWnd SIZE 100, 30 ACTION menu( oWnd, oBtn2:nTop + oBtn2:nHeight )
* @ 7.8, 1.6 BUTTON "&Menu 2007" OF oWnd SIZE 100, 30 ACTION menu2007( oWnd, oBtn2:nTop + oBtn2:nHeight )
TButton():New( 100, 10, "Menu", oWnd, {|| menu( oWnd, oBtn2:nTop + oBtn2:nHeight )}, 100, 30,,, .F., .T., .F.,, .F.,,, .F.,, .F. )
TButton():New( 140, 10, "Menu 2007", oWnd, {|| menu2007( oWnd, oBtn2:nTop + oBtn2:nHeight )}, 100, 30,,, .F., .T., .F.,, .F.,,, .F.,, .F. )

WITH OBJECT oBtn1 := TButton():New()
:SetBounds( 110, 100, 210, 130 )
* :cCaption := "Menu 2010"
:SetText( "Menu 2010" )
:bAction := {|| menu2010( oWnd, oBtn2:nTop + oBtn2:nHeight ) }
END

WITH OBJECT oBtn2 := TButton():New()
:SetBounds( 110, 140, 210, 170 )
:SetText( "Menu 2013" )
:bAction := {|| menu2013( oWnd, oBtn2:nTop + oBtn2:nHeight ) }
END

WITH OBJECT oBtn2 := TButton():New()
:SetBounds( 210, 140, 310, 170 )
:SetText( "Menu 2015" )
:bAction := {|| menu2015( oWnd, oBtn2:nTop + oBtn2:nHeight ) }
END

ACTIVATE WINDOW oWnd CENTERED

return nil

//------------------------------------------------------------------------//

FUNCTION menu( oWnd, nTop )
LOCAL oMenu

MENU oMenu POPUP
MENUITEM "Tancar " ACTION oWnd:end() RESOURCE "exitbmp"
MENUITEM "TancarJPG" RESOURCE "exitjpg"
MENUITEM "TancarPNG" RESOURCE "exitpng"
SEPARATOR
MENUITEM "Missatges Rebuts/Enviats en la sesió" RESOURCE "sendbmp"
MENUITEM "Fitxer de Dossiers Exportats" RESOURCE "servicebmp"
ENDMENU

ACTIVATE POPUP oMenu AT nTop,0 OF oWnd

RETURN NIL

//------------------------------------------------------------------------//

FUNCTION menu2007( oWnd, nTop )
LOCAL oMenu

MENU oMenu POPUP 2007
MENUITEM "Tancar " ACTION oWnd:end() RESOURCE "exitbmp"
MENUITEM "Tancar " ACTION oWnd:end() RESOURCE "exitbmp"
MENUITEM "TancarJPG" RESOURCE "exitjpg"
MENUITEM "TancarPNG" RESOURCE "exitpng"
SEPARATOR
MENUITEM "Missatges Rebuts/Enviats en la sesió" RESOURCE "sendbmp"
MENUITEM "Fitxer de Dossiers Exportats" RESOURCE "servicebmp"
ENDMENU

ACTIVATE POPUP oMenu AT nTop,0 OF oWnd

RETURN NIL

//------------------------------------------------------------------------//

FUNCTION menu2010( oWnd, nTop )
LOCAL oMenu

MENU oMenu POPUP 2010
MENUITEM "Tancar " ACTION oWnd:end() RESOURCE "exitbmp"
MENUITEM "Tancar " ACTION oWnd:end() RESOURCE "exitbmp"
MENUITEM "TancarJPG" RESOURCE "exitjpg"
MENUITEM "TancarPNG" RESOURCE "exitpng"
SEPARATOR
MENUITEM "Missatges Rebuts/Enviats en la sesió" RESOURCE "sendbmp"
MENUITEM "Fitxer de Dossiers Exportats" RESOURCE "servicebmp"
ENDMENU

ACTIVATE POPUP oMenu AT nTop,0 OF oWnd

RETURN NIL

//------------------------------------------------------------------------//

FUNCTION menu2013( oWnd, nTop )
LOCAL oMenu

MENU oMenu POPUP 2013
MENUITEM "Tancar " ACTION oWnd:end() RESOURCE "exitbmp"
MENUITEM "Tancar " ACTION oWnd:end() RESOURCE "exitbmp"
MENUITEM "TancarJPG" RESOURCE "exitjpg"
MENUITEM "TancarPNG" RESOURCE "exitpng"
SEPARATOR
MENUITEM "Missatges Rebuts/Enviats en la sesió" RESOURCE "sendbmp"
MENUITEM "Fitxer de Dossiers Exportats" RESOURCE "servicebmp"
ENDMENU

ACTIVATE POPUP oMenu AT nTop,0 OF oWnd

RETURN NIL

//------------------------------------------------------------------------//

FUNCTION menu2015( oWnd, nTop )
LOCAL oMenu

MENU oMenu POPUP 2015
MENUITEM "Tancar " ACTION oWnd:end() RESOURCE "exitbmp"
MENUITEM "Tancar " ACTION oWnd:end() RESOURCE "exitbmp"
MENUITEM "TancarJPG" RESOURCE "exitjpg"
MENUITEM "TancarPNG" RESOURCE "exitpng"
SEPARATOR
MENUITEM "Missatges Rebuts/Enviats en la sesió" RESOURCE "sendbmp"
MENUITEM "Fitxer de Dossiers Exportats" RESOURCE "servicebmp"
ENDMENU

ACTIVATE POPUP oMenu AT nTop,0 OF oWnd

RETURN NIL


son 5 botones con vision del mismo menu en los cinco tipos existendes...
Veras que el ancho del primer menu es correcto, los demás, son muy, muy anchos y con mucho espaciado a la derecha "vacio"


Un Saludo,
Xevi.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Problemas de 'TClase'

Post by cnavarro »

Configúralo a tu gusto

Code: Select all

.../...
function Main()
Local oIcon, oBtn1, oBtn2

SET CENTURY ON
SET DATE FRENCH
SET DELETE ON

GetnWidthItem( 0.82 )       //Por defecto tiene valor 1

.../...

 
o define un Font en el menu

Code: Select all

Static oFont

function Main()
Local oIcon, oBtn1, oBtn2

SET CENTURY ON
SET DATE FRENCH
SET DELETE ON

DEFINE FONT oFont NAME "Calibri" SIZE 0, -12

.../...

FUNCTION menu2007( oWnd, nTop )
LOCAL oMenu

MENU oMenu POPUP 2007 FONT oFont
.../...
 
Utiliza el boton "Code" al escribir post con código para que sea más sencillo copiar y pegar lo que escribes :D
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Problemas de 'TClase'

Post by nageswaragunupudi »

Code: Select all

WITH OBJECT oBtn1: = TButton (): New ()
: SetBounds (110, 100, 210, 130) 
: cCaption: = "& Menu" 
: bAction: = {|| menu (oWnd)} 
END 
 
This approach does not work with all / many classes.
The reason is that many of the parameters of the New() method should be provided in the New() method for proper construction of the Control.

We strongly recommend using command syntax and we retain compatibility with command syntax in future versions.


Even if you directly use TClass():New( <params> ), we advise you to pass all the parameters in the New() method. Then only the control (in some cases, corresponding Windows' control) is created using these parameters. So, for obvious reasons, creating a class by TClass():New() and then later assigning important parameters as datas to the object does not work.
Regards

G. N. Rao.
Hyderabad, India
Post Reply