ButtonBar od DIALOG

ButtonBar od DIALOG

Postby avista » Sun Jan 04, 2015 9:00 pm

Hi,

Is it possible to define buttonbar od dialog like on window. (not on INIT)
I have much buttons an more than hundred private variables, i dont want to send tehm all in function for creating buttonbar
and i dont want to declare them public

Regards,
User avatar
avista
 
Posts: 301
Joined: Fri Jun 01, 2007 9:07 am
Location: Macedonia


Re: ButtonBar od DIALOG

Postby avista » Mon Jan 05, 2015 9:36 am

Enrico,
Thanks for reply

Any other solution ?
If i define WINDOW in place of DIALOG than i must change size of all objects :(

Best regards,
User avatar
avista
 
Posts: 301
Joined: Fri Jun 01, 2007 9:07 am
Location: Macedonia

Re: ButtonBar od DIALOG

Postby cnavarro » Mon Jan 05, 2015 10:18 am

You can create a dialog with TAB hidden folder and create the BAR in the folder dialog
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: ButtonBar od DIALOG

Postby avista » Mon Jan 05, 2015 11:14 am

cnavarro,
Thanks for reply

Little sample if you can please ?

Best regards,
User avatar
avista
 
Posts: 301
Joined: Fri Jun 01, 2007 9:07 am
Location: Macedonia

Re: ButtonBar od DIALOG

Postby joseluisysturiz » Mon Jan 05, 2015 3:21 pm

Nose si esto te ayude, estoy ahorita haciendo algo a lo que quieres con folder...saludos... :shock:

Code: Select all  Expand view


#include "FiveWin.ch"
#include "XBrowse.ch"

MEMVAR oDatos

STATIC oWndGrupos, oBrw, aBtnBar[10], oBar, lNew, oFldx

FUNCTION mgrupos() // MAESTRO DE GRUPOS

   LOCAL oDlg, oError, cQry, oQry, aCampos := {}, aVar[3], aGet[3]

   lNew := .t.

   TGet():lDisColors := .f.

   cQry := "SELECT * FROM inv_grupos " +;
      "WHERE empresa_id = '" + oDatos:emp_codigo +;
      "' ORDER BY gru_codigo, gru_nombre ASC"

   TRY
      oQry := TDolphinQry():New( cQry, oDatos:oConex )

   CATCH oError
      MSGSTOP( oError:description() + CRLF + CRLF + ;
               "Error Ejecución de Sentencia en Tabla(inv_grupos): " + ;
               CRLF + CRLF + cQry, oDatos:cTitMsg )

      RETURN NIL

   END

   IF oWndGrupos == NIL
// DEFINO WND
      DEFINE WINDOW oWndGrupos BORDER SINGLE MDICHILD ;
         STYLE nOr( WS_CAPTION, WS_VISIBLE, WS_SYSMENU, WS_MINIMIZEBOX ) ;
         FROM 0, 1.0 TO 30.0, 107.0 ;
         TITLE oDatos:cTit + "- Maestro de Grupos" ;
         OF oDatos:oWndPPAL

// DEFINO BARRA DE BOTONES Y BOTONES
      DEFINE BUTTONBAR oBar SIZE 50, 50 OF oWndGrupos 2010
      oBar:bRClicked := {|| NIL }

      DEFINE BUTTON aBtnBar[1] OF oBar NOBORDER GROUP ;
         RESOURCE "NUEVO32" ;
         Tooltip "Crear Registro" ;
         ACTION ( lNew := .t., cargadata( oQry, aVar, aGet ) ,;
            oFldx:aDialogs[2]:aEvalwhen(), oFldx:SetOption(2) )

      DEFINE BUTTON aBtnBar[2] OF oBar NOBORDER ;
         RESOURCE "MODIFI32" ;
         Tooltip "Modificar Registro" ;
         ACTION ( lNew := .f., cargadata( oQry, aVar, aGet ) ,;
            oFldx:aDialogs[2]:aEvalwhen(), oFldx:SetOption(2) ) ;
         WHEN ( oQry:RecCount() > 0 )

      DEFINE BUTTON aBtnBar[3] OF oBar NOBORDER ;
         RESOURCE "ELIMI32" ;
         Tooltip "Eliminar Registros" ;
         ACTION ( eliminar( oQry, oBrw, "gru_codigo" ), inivar( aVar ) ,;
            iniget( aGet ), oFldx:aDialogs[2]:aEvalwhen(), oFldx:SetOption(1) ) ;
         WHEN ( oQry:RecCount() > 0 )

      DEFINE BUTTON aBtnBar[4] OF oBar NOBORDER ;    // ESTA PENDIENTE...
         RESOURCE "CANCEL32" ;
         Tooltip "Cancelar Registros" ;
         ACTION Alert("Cancelar...Pendiente...")

      DEFINE BUTTON aBtnBar[5] OF oBar NOBORDER ;
         RESOURCE "SALVAR32" ;
         Tooltip "Grabar los Datos" ;
         ACTION ( grabagrupo( oQry, aVar ), inivar( aVar ), iniget( aGet ) )

      DEFINE BUTTON aBtnBar[6] OF oBar NOBORDER ;
         RESOURCE "EXPOR32" ;
         Tooltip "Exportar los Datos" ;
         ACTION ( MSGINFO("Botones de la BAR") ) ;
         WHEN ( oQry:RecCount() > 0 )

      DEFINE BUTTON aBtnBar[9] OF oBar NOBORDER GROUP ;
         RESOURCE "PRINT32" ;
         Tooltip "Imprimir Listado" ;
         ACTION ( oBrw:REPORT() ) ;
         WHEN ( oQry:RecCount() > 0 )

      DEFINE BUTTON aBtnBar[10] OF oBar NOBORDER GROUP ;
         RESOURCE "SALIR32" ;
         Tooltip "Salir al Menu" ;
         ACTION ( lNew := NIL, oWndGrupos:END() )

      aBtnBar[10]:lCancel := .t.

      SET MESSAGE OF oWndGrupos TO " Inventario - Maestro de Grupos" 2007

// DEFINO DLG
      DEFINE DIALOG oDlg RESOURCE "DLG_NOWAIT" OF oWndGrupos

// DEFINO FOLDER
      REDEFINE FOLDEREX oFldx ID 401 OF oDlg ;
         PROMPT "Listado", "Datos" ;
         BITMAPS "CONFIG16", "GRUPO16" ;
         DIALOGS "INV_BROWSE", "INV_CORTOS"

// DIALOGO 1
      aCampos := {"gru_codigo", "gru_nombre"}

      oBrw := TXBrowse():New( oFldx:aDialogs[1] )

      WITH OBJECT oBrw
         :SetDolphin( oQry, .t., .t., aCampos )
         :nMarqueeStyle       := MARQSTYLE_HIGHLROW
         :nStretchCol         := STRETCHCOL_LAST
         :lColDividerComplete := .t.
         :lAllowColHiding     := .f.
         :nHeaderHeight       := 30
         :lFooter             := .t.
         :lRecordSelector     := .t.
         :bClrStd := {|| IF( oQry:RecNo() % 2 == 0, {CLR_BLACK, CLR_WHITE} ,;
                             {0, RGB(203,226,254)} ) }

      END WITH

      WITH OBJECT oBrw:aCols[1]
         :cHeader       := "Código"
         :bEditValue    := {|| IIF( oQry:LastRec() == 0, SPACE(10) ,;
                                    oQry:gru_codigo ) }
         :nHeadStrAlign := AL_CENTER
         :nDataStrAlign := AL_LEFT
         :nWidth        := 100

      END WITH

      WITH OBJECT oBrw:aCols[2]
         :cHeader       := "Nombre / Descripción"
         :bEditValue    := {|| IIF( oQry:LastRec() == 0, SPACE(10) ,;
                                    oQry:gru_nombre ) }
         :nHeadStrAlign := AL_CENTER
         :nDataStrAlign := AL_LEFT
         :nWidth        := 200

      END WITH

      oBrw:CreateFromResource(100)
      oBrw:GOTOP(); oBrw:REFRESH()

// DIALOGO 2
      REDEFINE GET aGet[1] VAR aVar[1] ID 4004 PICTURE "@!" OF oFldx:aDialogs[2] UPDATE ;
         VALID ( existe( oQry, aVar[1], aGet[1], "gru_codigo" ) ) ;
         WHEN ( lNew )

      REDEFINE GET aGet[2] VAR aVar[2] ID 4005 OF oFldx:aDialogs[2] UPDATE ;
         VALID ( novacio( aVar[2] ) ) ;
         WHEN ( !EMPTY( aVar[1] ) )

      REDEFINE GET aGet[3] VAR aVar[3] MEMO ID 199 OF oFldx:aDialogs[2] UPDATE ;
         WHEN ( !EMPTY( aVar[2] ) )

      ACTIVATE DIALOG oDlg NOWAIT ON CLICK oDlg:UPDATE ;
         ON INIT ( oDlg:MOVE( oBar:nHeight, 0 ) ) ;
         VALID( !GETKEYSTATE( 27 ) )//VALID ( .f. )

      ACTIVATE WINDOW oWndGrupos ;//ON INIT ( oFldx:SetFocus() ) ;
         ON INIT ( oWndGrupos:SetSize( oDlg:nWidth, oDlg:nHeight, .t. ) ) ;
         VALID ( oWndGrupos := NIL, .t. )

   ELSE
      oWndGrupos:Restore()
      oWndGrupos:SetFocus()

   ENDIF

RETURN NIL
 


Este es el resultado...

[img]
Image
[/img]
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: ButtonBar od DIALOG

Postby James Bott » Mon Jan 05, 2015 5:17 pm

The only way I know to put a buttonbar on a dialog is with the ON INIT clause.

You can solve your PRIVATE vars issue by creating a class and declaring all the vars as DATA. Then you can just pass the class object. The object will then be holding all the data.

Think OOP.

You really shouldn't be using PRIVATEs or PUBLICs anymore. They will cause bugs that are hard to find.

James
User avatar
James Bott
 
Posts: 4840
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 100 guests

cron