Hola
prueba de esta manera
use category
oCategory1=reccount()
oCategory3=oCategory1-12
oCategory4=oCategory3-12
for oCategory2 = 1 to oCategory1
go oCategory2
oNomCat=category->categoria
oNumeroCt=category->numero
bAction := genblock(oNumeroCt)
if oCategory2 <= 12
@ (0.5-1.5)+(oCategory2*1.5), 46 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20 ACTION eval(&(bAction))
elseif oCategory2 > 12 .and. oCategory2 <= 24
@ (0.5-1.5)+((oCategory2-12)*1.5), 61 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20 ACTION eval(&(bAction))
elseif oCategory2 > 24
@ (0.5-1.5)+((oCategory2-24)*1.5), 76 BUTTON alltrim(oNomCat) OF oDlg SIZE 80, 20 ACTION eval(&(bAction))
endif
next
close category
ACTIVATE DIALOG oDlg CENTERED
return
//=================================================================
function GenBlock( oNumeroCt )
return( "{ || categorias(oNumeroCt) }" )
//=================================================================
mira esto es parecido lo que haces a lo mejor te puede servir
do case
case cMSg = "CLIENTES"
nPosMenu := 1
aMsg := { { "&Proveedores" , .f., "{ || Proveedores() }", "" } }
case cMSg = "FACTURAS"
nPosMenu := 2
aMsg := { ;
{ "Facturas según Guías &Despacho",.f., "{ || FactSegunGuias() }" , "" },;
{ "&Ingresar OC" , .f.,"{ || OrdenCompra(chr(73)) }" , "" },;
{ "&Ingresar COT." , .f.,"{ || Cotizaciones(chr(73))}" , "" } }
case cMSg = "ESTADISTICAS"
nPosMenu := 6
aMsg := { ;
{ "&Margen por Depto" , .f., "{ || Estadisti2( .t. ) }", "BTN_BARRA" }}
case cMSg = "LIBROVTA"
nPosMenu := 5
aMsg := {{ "Libro &Compra" , .f., "{ || LibroCompra() }" , "BOOKCLOSE" },;
{ "Libro &Venta" , .f., "{ || LibroVenta() }" , "BOOKOPEN" },;
{ "Ventas por V&endedor" , .f., "{ || VentasVendedor()}" , "BTN_VTAVENDEDOR"},;
{ "Ventas por &Departamento" , .f., "{ || VentaDepto() }" , "" },;
{ "&Margen de venta por depto." , .f., "{ || VentasMargen() }" , "BTN_MARGENVTA" },;
{ "&Orden de Compras" , .f., "{ || RepOCompraDepto()}" , "" },;
{ "&Cotizaciones" , .f., "{ || RepCotizaciones()}" , "" }}
otherwise
return( .f. )
endcase
MENU oPopup POPUP
for i := 1 to len( aMsg )
MakeMenu( aMsg, i )
next i
ENDMENU
if cMsg = "SERV.TECNICO" .and. x:ClassName() == "TTOOLBAR"
ACTIVATE POPUP oPopup AT aRect[02], aRect[01] OF _oWnd
endif
return( oPopup )
//-----------------------------------------------------------------------------------------------------------
static function MakeMenu( aMsg, n )
if empty( aMsg[n] )
SEPARATOR
else
MENUITEM aMsg[n,1] ACTION Eval(&(aMsg[n,3])) WHEN aMsg[n,2] RESOURCE aMsg[n,4]
endif
return( NIL )
//-----------------------------------------------------------------------------------------------------------
Saludos
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl