Page 1 of 1

Dudas en Buttonbar

PostPosted: Sat Jan 05, 2008 4:58 pm
by yadira
Hola, molestandolos nuevamente, como puedo hacer para poner "divisiones" o rayas verticales en un buttonbar (para separar segun funciones) es decir poner 2 botones una raya y luego 3 mas.

como estoy trabajando con mdi, como inhabilito y habilito un boton del mismo buttonbar (para evitar q lo abran muchas veces), es decir al abrir una ventana child, se deshabilite el boton que la llamo y al cerrarla se vuelva a habilitar.

como defino la posicion de esa ventana child ?
saludos a todos y feliz año nuevo

PostPosted: Sun Jan 06, 2008 7:35 am
by Antonio Linares
Para separar un grupo con una línea vertical:

DEFINE BUTTON OF oBar GROUP ...

Para deshabilitarlo y habilitarlo:

DEFINE BUTTON oBtn OF oBar GROUP ACTION ( oBtn:Disable(), <acción>, oBtn:Enable() )

Posición de la ventana CHILD:
Code: Select all  Expand view
   DEFINE WINDOW oChild TITLE "Test" MDICHILD

   WndTop( oChild:hWnd, 30 )  // cambia 30 por tus valores
   WndLeft( oChild:hWnd, 30 )  //    "

return nil

PostPosted: Mon Jan 07, 2008 5:14 pm
by yadira
Antonio, muchas gracias por tu valiosa ayuda, tengo una duda mas:

DEFFINE BUTTON oF oBar FILE "User.Bmp" NOBORDER;
ACTION (oBtn:Disable(), WinExec ("Calc"), oBtn:Enable() )


al compilar y enlazar me manda este error:
"VARIABLE DOES NO EXIST: oBtn"


Que hice mal ??
Saludos

PostPosted: Mon Jan 07, 2008 8:27 pm
by Antonio Linares
Te faltó definirlo aqui:

DEFFINE BUTTON oBtn oF oBar FILE "User.Bmp" NOBORDER;
ACTION (oBtn:Disable(), WinExec ("Calc"), oBtn:Enable() )

PostPosted: Mon Jan 07, 2008 10:16 pm
by yadira
antonio ya no marca ningun error pero no deshabilita el boton
:(

PostPosted: Mon Jan 07, 2008 10:20 pm
by Antonio Linares
Falta una cosa:

DEFFINE BUTTON oBtn oF oBar FILE "User.Bmp" NOBORDER;
ACTION (oBtn:Disable(), oBtn:Refresh(), WinExec ("Calc"), oBtn:Enable() )

PostPosted: Mon Jan 07, 2008 10:22 pm
by Antonio Linares
Un detalle más:

WinExec() no produce una ejecución modal. Es decir, no _espera_ a que termine el proceso, luego la ejecución continua tras llamar a WinExec() y el botón vuelve a habilitarse.

Si quieres que se espere entonces usa WaitRun() en vez de WinExec()

PostPosted: Wed Jan 09, 2008 7:40 pm
by yadira
Antonio, mil disculpas la accion de "calc" que puse fue solo un ejemplo en realidad abre una ventana child, ya intente lo que me sugeriste pero no lo deshabilita, aun poniendo obTn:Refresh(), cuando abro la ventana child no lo inhabilita, si solo pongo como accion oBtn:Disable(), Catalogo()
si lo inhabilita, pero ahora no se como habilitarlo cuando cierro la ventana child

saludos y disculpa mi novatez :oops:

PostPosted: Wed Jan 09, 2008 7:43 pm
by Antonio Linares
Es debido a que la ejecución de la ventana child no es modal.

La mejor manera de volver a habilitar el botón es desde el VALID de la ventana hija:

ACTIVATE WINDOW oWnd ;
VALID ( oBtn:Enable(), .T. )

PostPosted: Fri Jan 18, 2008 6:46 pm
by servicomver
Antonio:
Puedo evitar que una ventana CHILD le aparezca el boton de MAXIMIZAR ??

PostPosted: Fri Jan 18, 2008 7:47 pm
by Antonio Linares
Revisa fw\samples\TestMdi5.prg