FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Duda con TToolbar
Posts: 57
Joined: Tue Nov 04, 2008 02:08 PM
Duda con TToolbar
Posted: Wed Jan 28, 2009 04:22 PM
Buenas amigos del foro, tengo una duda, he alimentado una toolbar desde una tabla, y de la forma en que relleno la toolbar, no se cual bot贸n he pulsado para ejecutar una acci贸n. Mi duda es, hay alguna forma o m茅todo que me permita saber que bot贸n puls茅?

Adjunto c贸digo si alguien se interesa.

#include "FiveWin.ch"
*------------------------------------------------------------------------------------
Function Empresass()
Local oWnd,oDbf[10],Repite:=1,Repite2:=1,oToolbar1,oToolbar2,oToolbar3,oToolbar4
Local oReBar, oFolder,oImgList1,oImgList2,oImgList3,oImgList4,oImgList5,oImgList6,oImgList7
Local oPanel1,oPanel2,oPanel3,oPanel4,Registros:=0,Line:=0

If ( DbUseFile("Empresas.DBF",.T.,"DBFNTX") )
   DataBase oDbf[1]
Else
	Return Nil
EndIf
(oDbf[1]:GoTop())
Count To Registros
(oDbf[1]:GoTop())
IF Registros=4
	Line:=8.6
ElseIf Registros<=10
	Line:=13.5
ElseIf Registros<=16
	Line:=25.8
ElseIf Registros<=20
	Line:=34.4
ENDIF

DEFINE FONT oFont NAME "Estrangelo Edessa" WEIGHT 18 Bold
DEFINE FONT oMainFont NAME "Estrangelo Edessa" Size 6,17 Bold
DEFINE WINDOW oWnd From .1,.1 to Line,127 TITLE "Certificados de Sueldos y Honorarios - Selecci贸n de Empresas"  NOZOOM
Set Font Of oWnd To oFont

oReBar  := TReBar():New( oWnd )

IF Registros<=6
	oPanel1 := TPanel():New(  0,   0, 75, 600, oReBar )
	oImgList1:=TImageList():New(120,48)
ElseIf Registros>=7 .AND. Registros<=12
	oPanel1 := TPanel():New(  0,   0, 75, 600, oReBar )
	oImgList1:=TImageList():New(120,48)
	oPanel2 := TPanel():New(  0,  76, 75, 600, oReBar )
	oImgList2:=TImageList():New(120,48)
ElseIf Registros>=13 .AND. Registros<=18
	oPanel1 := TPanel():New(  0,   0, 75, 600, oReBar )
	oImgList1:=TImageList():New(120,48)
	oPanel2 := TPanel():New(  0,  76, 75, 600, oReBar )
	oImgList2:=TImageList():New(120,48)
	oPanel3 := TPanel():New(  0, 151, 75, 600, oReBar )
	oImgList3:=TImageList():New(120,48)
ElseIf Registros>19
	oPanel1 := TPanel():New(  0,   0, 75, 600, oReBar )
	oImgList1:=TImageList():New(120,48)
	oPanel2 := TPanel():New(  0,  76, 75, 600, oReBar )
	oImgList2:=TImageList():New(120,48)
	oPanel3 := TPanel():New(  0, 151, 75, 600, oReBar )
	oImgList3:=TImageList():New(120,48)
	oPanel4 := TPanel():New(  0, 226, 75, 600, oReBar )
	oImgList4:=TImageList():New(120,48)
ENDIF
DbGoTop()

Do While !Eof()
	IF Repite>=1 .AND. Repite<=6
	   oImgList1:AddMasked( TBitmap():Define( ,Alltrim((oDbf[1]:cAlias)->Logo), oWnd ),  )
		IF Registros<6
			oImgList1:AddMasked( TBitmap():Define( ,"New120.BMP", oWnd ),  )
         oImgList1:AddMasked( TBitmap():Define( ,"End120.BMP", oWnd ),  )
		ENDIF
	ElseIf Repite>=7 .AND. Repite<=12
		oImgList2:AddMasked( TBitmap():Define( ,Alltrim((oDbf[1]:cAlias)->Logo), oWnd ),  )
		IF Registros<10
			oImgList2:AddMasked( TBitmap():Define( ,"New120.BMP", oWnd ),  )
         oImgList2:AddMasked( TBitmap():Define( ,"End120.BMP", oWnd ),  )
		ENDIF
	ElseIf Repite>=13 .AND. Repite<=18
		oImgList3:AddMasked( TBitmap():Define( ,Alltrim((oDbf[1]:cAlias)->Logo), oWnd ),  )
		IF Registros<16
			oImgList3:AddMasked( TBitmap():Define( ,"New120.BMP", oWnd ),  )
         oImgList3:AddMasked( TBitmap():Define( ,"End120.BMP", oWnd ),  )
		ENDIF
	ElseIf Registros<19
		oImgList4:AddMasked( TBitmap():Define( ,"New120.BMP", oWnd ),  )
      oImgList4:AddMasked( TBitmap():Define( ,"End120.BMP", oWnd ),  )
	EndIf
	Skip
	Repite++
EndDo

IF Registros<=6
	oToolBar1 = TToolBar():New( oPanel1, 170, 80, oImgList1 )
ElseIf Registros>=7 .AND. Registros<=12
	oToolBar1 = TToolBar():New( oPanel1, 170, 80, oImgList1 )
	oToolBar2 = TToolBar():New( oPanel2, 170, 80, oImgList2 )
ElseIf Registros>=13 .AND. Registros<=18
	oToolBar1 = TToolBar():New( oPanel1, 170, 80, oImgList1 )
	oToolBar2 = TToolBar():New( oPanel2, 170, 80, oImgList2 )
	oToolBar3 = TToolBar():New( oPanel3, 170, 80, oImgList3 )
ElseIf Registros>=19
	oToolBar1 = TToolBar():New( oPanel1, 170, 80, oImgList1 )
	oToolBar2 = TToolBar():New( oPanel2, 170, 80, oImgList2 )
	oToolBar3 = TToolBar():New( oPanel3, 170, 80, oImgList3 )
	oToolBar4 = TToolBar():New( oPanel4, 170, 80, oImgList4 )
ENDIF


DbGoTop()
Do While !Eof()
	IF Repite2<=6 .AND. Repite2>=1
		oToolBar1:AddButton( { || Ejecuta(oDbf,(oDbf[1]:cAlias)->Empresa,(oDbf[1]:cAlias)->Carpeta) }, Alltrim((oDbf[1]:cAlias)->Empresa),Alltrim((oDbf[1]:cAlias)->Empresa) )
		IF Registros<6
			oToolBar1:AddSeparator()
			oToolBar1:AddButton( { || (oWnd:End(),Quit) }, "Nueva Empresa","Nueva Empresa")
         oToolBar1:AddSeparator()
         oToolBar1:AddButton( { || (oWnd:End(),Quit) }, "Salir del Sistema","Salir del Sistema")
		ENDIF
      oToolBar1:AddSeparator()
	ElseIf Repite2<=12 .AND. Repite2>=7
		oToolBar2:AddButton( { || Ejecuta(oDbf,(oDbf[1]:cAlias)->Empresa,(oDbf[1]:cAlias)->Carpeta) }, Alltrim((oDbf[1]:cAlias)->Empresa),Alltrim((oDbf[1]:cAlias)->Empresa) )
		If Registros>=7 .AND. Registros<=12
			oToolBar2:AddSeparator()
			oToolBar2:AddButton( { || (oWnd:End(),Quit) }, "Nueva Empresa","Nueva Empresa")
         oToolBar2:AddSeparator()
         oToolBar2:AddButton( { || (oWnd:End(),Quit) }, "Salir del Sistema","Salir del Sistema")
		ENDIF
		oToolBar2:AddSeparator()
	ElseIf Repite2<=18 .AND. Repite2>=13
		oToolBar3:AddButton( { || Ejecuta(oDbf,(oDbf[1]:cAlias)->Empresa,(oDbf[1]:cAlias)->Carpeta) }, Alltrim((oDbf[1]:cAlias)->Empresa),Alltrim((oDbf[1]:cAlias)->Empresa) )
		IF Registros>=13 .AND. Registros<=18
			oToolBar3:AddSeparator()
			oToolBar3:AddButton( { || (oWnd:End(),Quit) }, "Nueva Empresa","Nueva Empresa")
         oToolBar3:AddSeparator()
         oToolBar3:AddButton( { || (oWnd:End(),Quit) }, "Salir del Sistema","Salir del Sistema")
		ENDIF
		oToolBar3:AddSeparator()
	ElseIf Repite2>19
		oToolBar4:AddButton( { || (oWnd:End(),Quit) }, "Nueva Empresa","Nueva Empresa")
      oToolBar4:AddSeparator()
      oToolBar4:AddButton( { || (oWnd:End(),Quit) }, "Salir del Sistema","Salir del Sistema")
		oToolBar4:AddSeparator()
	ENDIF
   Repite2++
	Skip
EndDo
IF Registros<=6
	oReBar:InsertBand( oPanel1 )
ElseIf Registros>=7 .AND. Registros<=12
	oReBar:InsertBand( oPanel1 )
	oReBar:InsertBand( oPanel2 )
ElseIf Registros>=13 .AND. Registros<=18
	oReBar:InsertBand( oPanel1 )
	oReBar:InsertBand( oPanel2 )
	oReBar:InsertBand( oPanel3 )
ElseIf Registros>=13 .AND. Registros<=20
	oReBar:InsertBand( oPanel1 )
	oReBar:InsertBand( oPanel2 )
	oReBar:InsertBand( oPanel3 )
	oReBar:InsertBand( oPanel4 )
ENDIF


DEFINE STATUSBAR OF oWnd PROMPT PM_Date(Date()) 

ACTIVATE WINDOW oWnd 

Return Nil
*---- En esta parte me pierdo, por que no se como ejecutar la acci贸n por que no se que bot贸n puls茅-----*
Function Ejecuta(oDbf,Empresa,Carpeta)

Select (oDbf[1]:cAlias)

_Ruta:=Alltrim((oDbf[1]:cAlias)->Carpeta)
Empresas:=(oDbf[1]:cAlias)->Empresa

Return Nil
Quiero hacer facturaci贸n electr贸nica...



Leon Valenzuela.

Santiago - Chile.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Duda con TToolbar
Posted: Sun Feb 01, 2009 11:30 AM

Leon,

A todos los botones les has asignado la misma acci贸n:

oToolBar1:AddButton( { || (oWnd:End(),Quit) }, ...

Deberias asignarle a cada bot贸n una acci贸n diferente.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: Duda con TToolbar
Posted: Mon Feb 02, 2009 09:02 PM
Hola

Lo que yo hago es mostrar todos los toolbar con la opcion when .f. mientras presiona el nombre de usuario y contrase帽a
	aImageList[1]:= TImageList():New( 32, 32 )
	aImageList[1]:AddMasked( TBitmap():Define( "articulo32",, _oWnd ), nRGB( 255, 0, 255 ) )
	aImageList[1]:AddMasked( TBitmap():Define( "clientes32",, _oWnd ), nRGB( 255, 0, 255 ) )
	aImageList[1]:AddMasked( TBitmap():Define( "tarjeta_existencia32",,   _oWnd ), nRGB( 255, 0, 255 ) )
	aImageList[1]:AddMasked( TBitmap():Define( "camion32",,   _oWnd ), nRGB( 255, 0, 255 ) )
	aImageList[1]:AddMasked( TBitmap():Define( "librocmp32",, _oWnd ), nRGB( 255, 0, 255 ) )
	aImageList[1]:AddMasked( TBitmap():Define( "factura32",,  _oWnd ), nRGB( 255, 0, 255 ) )
	aImageList[1]:AddMasked( TBitmap():Define( "Exit32",,     _oWnd ), nRGB( 255, 0, 255 ) )

	DEFINE TOOLBAR aToolBar[1] OF _oWnd SIZE 50, 58 IMAGELIST aImageList[1] BALLOON

	DEFINE TBBUTTON OF aToolBar[1] ;
      ACTION ListArtCli(.f.);
      TOOLTIP ansitooem("Mantenci贸n路Articulos" );
      PROMPT  "Art铆culos"                       ;
		WHEN .F.

	DEFINE TBMENU OF aToolBar[1]						;
      ACTION  ListArtCli(.t.)   						;
      TOOLTIP ansitooem("Mantenci贸n路Clientes")	;
      PROMPT  "Clientes"                      	;
		WHEN .F.                                	;
		MENU ShowPopup( "CLIENTES" )


//revisar los buttones si tienen acceso, el ultimo es salir si que omitimos el ultimo
		aBtn := Array( len( aToolBar[1]:aButtons ) - 1 )
		aEval( aBtn, { |x,y| aBtn[y] := (lAdmin  .or. VerBtnAcceso( PadR(oApp:Usuario,13), oemtoansi(aToolBar[1]:aButtons[y,2]) ))})

		aEval( aBtn, { |x,y| aToolBar[1]:ShowButton( y ) } ) // Mostramos todos los bottones del toolbar

		for i := len( aBtn ) to 1 step -1
			if !aBtn[i]
				aToolBar[1]:HideButton( i )  //ocultamos
			else
				aToolBar[1]:EnableButton( i, .t. ) // habilitamos
			endif
		next i
		aToolBar[1]:EnableButton( len(aToolBar[1]:aButtons)  , .t. ) //activamos el ultimo que es salir



Espero que te de una idea
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

Continue the discussion