FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour ButtonBar od DIALOG
Posts: 301
Joined: Fri Jun 01, 2007 09:07 AM
ButtonBar od DIALOG
Posted: Sun Jan 04, 2015 09: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,

Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: ButtonBar od DIALOG
Posted: Sun Jan 04, 2015 10:34 PM

I'm afraid not.

EMG

Posts: 301
Joined: Fri Jun 01, 2007 09:07 AM
Re: ButtonBar od DIALOG
Posted: Mon Jan 05, 2015 09: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,

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: ButtonBar od DIALOG
Posted: 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
Posts: 301
Joined: Fri Jun 01, 2007 09:07 AM
Re: ButtonBar od DIALOG
Posted: Mon Jan 05, 2015 11:14 AM

cnavarro,
Thanks for reply

Little sample if you can please ?

Best regards,

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: ButtonBar od DIALOG
Posted: Mon Jan 05, 2015 03:21 PM
Nose si esto te ayude, estoy ahorita haciendo algo a lo que quieres con folder...saludos... :-)

Code (fw): Select all Collapse
#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]http://sim1.subirimagenes.net/img/2015/01/05//150105042131406823.jpg" alt="" loading="lazy">
[/img]
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 4840
Joined: Fri Nov 18, 2005 04:52 PM
Re: ButtonBar od DIALOG
Posted: Mon Jan 05, 2015 05: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

FWH 18.05/xHarbour 1.2.3/BCC7/Windows 10

Continue the discussion