Page 1 of 1

Problemas de 'TClase'

PostPosted: Wed Dec 13, 2017 10:59 pm
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.

Re: Problemas de 'TClase'

PostPosted: Wed Dec 13, 2017 11:19 pm
by cnavarro
Prueba asi

Code: Select all  Expand view

      :SetText( "Test" )
      //      :SetFont( oFont )
 

Re: Problemas de 'TClase'

PostPosted: Wed Dec 13, 2017 11:29 pm
by Xevi
Ahora si.

Gracias.


Un Saludo,
Xevi.

Re: Problemas de 'TClase'

PostPosted: Wed Dec 13, 2017 11:37 pm
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.

Re: Problemas de 'TClase'

PostPosted: Wed Dec 13, 2017 11:55 pm
by cnavarro
Configúralo a tu gusto

Code: Select all  Expand view

.../...
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  Expand view

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

Re: Problemas de 'TClase'

PostPosted: Fri Dec 15, 2017 3:36 am
by nageswaragunupudi
Code: Select all  Expand view
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.