Página 1 de 1

Como mudar cor do botão?

Enviado: 17 Ago 2015 11:01
por Daiane
Estou tentando mudar a cor do botão,mas não consigo
quando mudo de aba ele altera a cor bem rapidamente e volta a cor normal
ja tentei dar refresh() setar o foco e n adiantou.
Vejam como estou fazendo

Código: Selecionar todos

::bCadNis:SetColor(GetSysColor(8), RGB(249,176,180))
		   ::bCadNis:refresh()
		   ::gPISPASEP:SetFocus()	
O que mais posso fazer? ou teria alguma outra forma de fazer isso?

Obs: Consigo mudar a cor dos campos editáveis,só não botões.

Como mudar cor do botão?

Enviado: 17 Ago 2015 12:12
por Kapiaba
Veja se a sua versão suporta o comando: SKINBUTTONS()

Imagem

Senão, somente atualizando sua versão com a Virtual oBjects Informática, representante Oficial do FiveWin no Brasil. Email: gilmer@fivewin.com.br - Att,: Gilmer Tavares.

ou, talvez, usando a classe: TSBUTTON.PRG By Manuel Mercado, mais informações no forum inter ou no Fivewin Brasil.

abs.

Como mudar cor do botão?

Enviado: 17 Ago 2015 12:19
por Kapiaba

Código: Selecionar todos

// Quick Browse sample - C:\FWH1505\SAMPLES\FWBROW.PRG

#include "FiveWin.ch"

static oWnd

//----------------------------------------------------------------------------//

function Main()

   local oBrush, oBar, oBmp

   SET _3DLOOK ON                         // Microsoft 3D Look

   SkinButtons()

   DEFINE BRUSH oBrush STYLE TILED       // FiveWin new predefined Brushes

   DEFINE WINDOW oWnd FROM 4, 4 TO 25, 75 ;
      TITLE FWVERSION + " - Browsing power" ;
      MENU BuildMenu() ;
      BRUSH oBrush

   DEFINE BUTTONBAR oBar OF oWnd

   DEFINE BUTTON FILENAME "..\bitmaps\OpenPrj.bmp" OF oBar ;
      ACTION OpenDbf() MESSAGE "Browse any DBF..."

   DEFINE BUTTON FILENAME "..\bitmaps\Exit.bmp" OF oBar ;
      ACTION If( MsgYesNo( "Do you want to End ?", "Please, Select" ), oWnd:End(), ) ;
      MESSAGE "End this session"

   DEFINE BUTTON FILENAME "..\bitmaps\Edit.bmp" OF oBar GROUP ;
      MESSAGE "Using a Browse with dynamic Bitmap selection" ACTION Clients() ;
      TOOLTIP "Edit"

   DEFINE BUTTON FILENAME "..\bitmaps\Ques2.bmp" OF oBar ;
      MESSAGE "FiveWin info" ACTION MsgAbout()

   SET MESSAGE OF oWnd TO FWVERSION + FWCOPYRIGHT CLOCK DATE

   @ 4, 16 BITMAP oBmp FILENAME "..\bitmaps\Tutanka1.bmp" ADJUST SIZE 280, 200 OF oWnd ;
      ON CLICK ( oBmp:lStretch := ! oBmp:lStretch, oBmp:Refresh( .t. ) )

   ACTIVATE WINDOW oWnd ;
      ON RESIZE oBmp:Center()

return nil

//----------------------------------------------------------------------------//

function BuildMenu()

   local oMenu

   MENU oMenu

      MENUITEM "&Information"
      MENU
         MENUITEM "&About..." + Chr( 9 ) + "Alt+A" ;
            ACTION MsgAbout( FWCOPYRIGHT, FWVERSION ) ;
            MESSAGE "Some information about this demo" ;
            ACCELERATOR ACC_ALT, Asc( "A" ) ;
            FILENAME "..\bitmaps\16x16\info.bmp"
         SEPARATOR
         MENUITEM "&Exit demo..." ACTION ;
            If( MsgYesNo( "Do you want to end ?", "Please, Select" ), oWnd:End,) ;
            MESSAGE "End the execution of this demo"
      ENDMENU

      MENUITEM "&Clients Control" ACTION Clients()

      MENUITEM "&Utilities"
      MENU
         MENUITEM "&Calculator..." ACTION WinExec( "Calc" ) ;
            MESSAGE "Calling Windows Calculator"

         MENUITEM "C&alendar..."  ACTION WinExec( "Calendar" ) ;
            MESSAGE "Calling Windows Calendar"

         SEPARATOR

         MENUITEM "&Writing..."    ACTION WinExec( "Write" ) ;
            MESSAGE "Calling Windows Write"
      ENDMENU

   ENDMENU

return oMenu

//----------------------------------------------------------------------------//

function Clients()

   local oDlg
   local oLbx
   local cVar

   local aHBitMaps:= { ReadBitmap( 0, "..\bitmaps\Level1.bmp" ), ; // BitMaps de 14 x 32
                       ReadBitmap( 0, "..\bitmaps\Level2.bmp" ), ;
                       ReadBitmap( 0, "..\bitmaps\Level3.bmp" ), ;
                       ReadBitmap( 0, "..\bitmaps\Level4.bmp" ),;
                       ReadBitmap( 0, "..\bitmaps\Level5.bmp" ) }
   local n

   if ! File( "clientes.dbf" )
      DbCreate( "Clientes.dbf", { { "Nombre",    "C", 40, 0 },;
                                  { "Direccion", "C", 50, 0 },;
                                  { "Telefono",  "C", 12, 0 },;
                                  { "Edad",      "N",  2, 0 },;
                                  { "Productos", "C", 10, 0 },;
                                  { "Nivel",     "N",  2, 0 } } )
   endif

   USE Clientes

   if RecCount() == 0
      APPEND BLANK
   endif

   INDEX ON Clientes->Nombre TO CliName

   SET INDEX TO CliName

   GO TOP

   DEFINE DIALOG oDlg FROM 3, 3 TO 26, 79 TITLE "Clients Management"

   @ 0,  1 SAY " &Clients List"  OF oDlg

   @ 1, 1 LISTBOX oLbx FIELDS aHBitmaps[ Max( 1, Clientes->Nivel ) ],;
                              Clientes->Nombre, AllTrim( Clientes->Direccion ),;
                              Clientes->Telefono,;
                              Str( Clientes->Edad, 3 ) ;
          HEADERS    "L", "Name", "Address", "Phone", "Age" ;
          FIELDSIZES 16, 222, 213, 58, 24 ;
          SIZE 284, 137 OF oDlg

   // Lets use different row colors
   oLbx:nClrText      = { || SelColor( Clientes->Nivel ) }
   oLbx:nClrForeFocus = { || SelColor( Clientes->Nivel ) }
   oLbx:bRClicked     = { | nRow, nCol | ShowPopup( nRow, nCol, oLbx ) }
   // Try different line styles !!!
   oLbx:nLineStyle = 1
   oLbx:bKeyChar := {|nKey| if( nKey == VK_RETURN , EditRecord( oLbx ) , )}

   oLbx:aJustify = { .f., .f., .t., .f., .t. }

   // TWBrowse():lKinetic = .F. // changed as global setting

   // Uncomment this to quickly calculate the desired columns width
   // Right click with the mouse over the browse and you will
   // see the columns sizes!
   // oLbx:bRClicked = { || oLbx:ShowSizes() }

   @ 8.7,  1.4 BUTTON "&New"    OF oDlg ACTION EditClient( oLbx, .t. ) ;
                                            SIZE 40, 12
   @ 8.7,  9.4 BUTTON "&Modify" OF oDlg ACTION EditClient( oLbx, .f. ) ;
                                              SIZE 40, 12
   @ 8.7, 17.4 BUTTON "&Delete" OF oDlg ACTION DelClient( oLbx )  SIZE 40, 12
   @ 8.7, 25.4 BUTTON "&Search" OF oDlg ACTION SeekClient( oLbx ) SIZE 40, 12

   @ 8.7, 33.4 BUTTON "&Print"  OF oDlg ;
      ACTION oLbx:Report( "clients Report", .t. ) ;  // .t. --> wants preview
      SIZE 40, 12

   @ 8.7, 42 BUTTON "&Exit"   OF oDlg ACTION oDlg:End()         SIZE 40, 12

   ACTIVATE DIALOG oDlg

   USE

   AEval( aHBitmaps, { | hBmp | DeleteObject( hBmp ) } )

return nil

//----------------------------------------------------------------------------//

function EditRecord( oLbx )

  local i
  local cVar
  local cAlias := oLbx:cAlias

   for i := 1 to 4
      cVar = ( cAlias )->( FieldGet( i ) )
      if ! oLbx:lEditCol( i + 1, @cVar,, { || Validate() } )
         exit
      endif
      ( cAlias )->( FieldPut( i , cVar ) )
   next

return nil

//----------------------------------------------------------------------------//

function Validate()

    local lOk

    lOk := MsgYesNo( 'Is it ok ?' )
    MsgInfo( lOk )

return ( lOk )

//----------------------------------------------------------------------------//

function ShowPopup( nRow, nCol, oLbx )

   local oPopup

   MENU oPopup POPUP
      MENUITEM "&New"      ACTION EditClient( oLbx, .t. )
      MENUITEM "&Modify"   ACTION EditClient( oLbx, .f. )
      MENUITEM "&Delete"   ACTION DelClient( oLbx )
      MENUITEM "&Search"   ACTION SeekClient( oLbx )
      MENUITEM "&Print"    ACTION oLbx:Report( "clients Report", .t. )
      SEPARATOR
      MENUITEM "&Browse lines style"
      MENU
         MENUITEM "None    (0)" ACTION oLbx:nLineStyle := 0, oLbx:Refresh()
         MENUITEM "Black   (1)" ACTION oLbx:nLineStyle := 1, oLbx:Refresh()
         MENUITEM "Gray    (2)" ACTION oLbx:nLineStyle := 2, oLbx:Refresh()
         MENUITEM "3D      (3)" ACTION oLbx:nLineStyle := 3, oLbx:Refresh()
         MENUITEM "DOTED   (4)" ACTION oLbx:nLineStyle := 4, oLbx:Refresh()
         MENUITEM "V_BLACK (5)" ACTION oLbx:nLineStyle := 5, oLbx:Refresh()
         MENUITEM "V_GRAY  (6)" ACTION oLbx:nLineStyle := 6, oLbx:Refresh()
         MENUITEM "H_BLACK (7)" ACTION oLbx:nLineStyle := 7, oLbx:Refresh()
         MENUITEM "H_GRAY  (8)" ACTION oLbx:nLineStyle := 8, oLbx:Refresh()
      ENDMENU
      SEPARATOR
      MENUITEM "&Exit"     ACTION oLbx:oWnd:End()
   ENDMENU

   ACTIVATE POPUP oPopup AT nRow, nCol OF oLbx

return nil

//----------------------------------------------------------------------------//

static function SelColor( nNivel )

   local nColor := CLR_BLACK

   do case
      case nNivel == 1
           nColor = CLR_HRED

      case nNivel == 2
           nColor = CLR_HGREEN

      case nNivel == 3
           nColor = CLR_HBLUE
   endcase

return nColor

//----------------------------------------------------------------------------//

static function EditClient( oLbx, lAppend )

   local oDlg
   local lFivePro
   local lDialog
   local lObjects
   local nNivel
   local cName
   local cAddress
   local cPhone
   local nAge
   local lSave := .f.
   local nOldRec := RecNo()

   DEFAULT lAppend := .f.

   if lAppend
      GOTO BOTTOM
      SKIP
   endif

   lFivePro = "F" $ Clientes->Productos
   lDialog  = "D" $ Clientes->Productos
   lObjects = "O" $ Clientes->Productos
   nNivel   = max( 1, Clientes->Nivel )
   cName    = Clientes->Nombre
   cAddress = Clientes->Direccion
   cPhone   = Clientes->Telefono
   nAge     = Clientes->Edad

   DEFINE DIALOG oDlg FROM 8, 2 TO 25, 65 ;
      TITLE If( lAppend, "New Customer", "Customer Update" )

   @ 1,  1 SAY "&Name:" OF oDlg
   @ 1,  6 GET cName OF oDlg
   @ 2,  1 SAY "&Address:" OF oDlg
   @ 2,  6 GET cAddress OF oDlg

   @ 3,  1 GROUP TO 7, 8 LABEL "&Products" OF oDlg
   @ 4,  2 CHECKBOX lFivePro PROMPT "&FivePro" OF oDlg
   @ 5,  2 CHECKBOX lDialog  PROMPT "&Dialog"  OF oDlg
   @ 6,  2 CHECKBOX lObjects PROMPT "&Objects" OF oDlg

   @ 3,  9 GROUP TO 7, 17 LABEL "&Nivel" OF oDlg
   @ 4,  9 RADIO nNivel PROMPT "&Novice", "A&vanced", "&Expert" OF oDlg

   @ 3.5, 23 SAY "&Phone:" OF oDlg
   @ 4, 21 GET cPhone OF oDlg SIZE 60, 11 PICTURE "@R 99-999-9999999"

   @ 5, 23 SAY OemToAnsi( "&Age:" ) OF oDlg
   @ 6, 21 GET nAge OF oDlg SIZE 20, 11

   @ 6,  9 BUTTON "&Acept"  OF oDlg SIZE 50, 12 ACTION ( lSave := .t. , oDlg:End() )
   @ 6, 19 BUTTON "&Cancel" OF oDlg SIZE 50, 12 ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED

   if lSave .and. !empty( cName )

      if lAppend
         APPEND BLANK
      endif

      Clientes->Nombre     := cName
      Clientes->Direccion  := cAddress
      Clientes->Productos  := If( lFivePro, "F", "" ) + ;
                              If( lDialog,  "D", "" ) + ;
                              If( lObjects, "O", "" )

      Clientes->Nivel      := nNivel
      Clientes->Telefono   := cPhone
      Clientes->Edad       := nAge

      oLbx:Refresh()          // We want the ListBox to be repainted

   else

      if Empty( cName ) .and. lSave
         MsgAlert( "Please write a name" )
      endif

      GOTO nOldRec

   endif

return nil

//---------------------------------------------------------------------------//

static function DelClient( oLbx )

   if MsgYesNo( "Are you sure to delete this record ?" )
      DELETE
      PACK
      oLbx:Refresh()  // Repaint the ListBox
   endif

return nil

//----------------------------------------------------------------------------//

static function SeekClient( oLbx )

   local cNombre := Space( 30 )
   local nRecNo  := RecNo()

   SET SOFTSEEK ON

   if MsgGet( "Search", "Customer Name", @cNombre,;
              "..\bitmaps\lupa.bmp" )

      if ! DbSeek( cNombre )
         MsgAlert( "I don't find that customer" )
         GO nRecNo
      else
         oLbx:UpStable()           // Corrects same page stabilizing Bug
         oLbx:Refresh()            // Repaint the ListBox
      endif
   endif

return nil

//----------------------------------------------------------------------------//

function OpenDbf()

   local cFile := cGetFile( "Clipper DataBase (*.dbf) | *.dbf", "Select a DBF" )

   if ! Empty( cFile )
      USE ( cFile )

      // Quick and easy browses!
      // Fully integrated into a Dialog Box !!!

      Browse( "FiveWin Automatic Browse Power",;
              "Easy Browses without pain...",;
              { || MsgInfo( "This will be executed from first button...", "Info1" ) },;
              { || MsgInfo( "You can atach any action to the buttons...", "Info2" ) },;
              { || MsgInfo( "We also provide full source code of this...", "Info3" ) },;
              { || MsgInfo( "So you can adapt it to your necesities", "Info4" ) } )
      USE
   endif

return nil

//---------------------------------------------------------------------------//

procedure AppSys   // XBase++ requirement

return

Como mudar cor do botão?

Enviado: 17 Ago 2015 12:38
por Kapiaba
Uma idéia:

Código: Selecionar todos

#Include "FiveWin.Ch"

//--------------------------//BOTONES DE DIFERENTES COLORES
Function Main()   //ColorBtns()

   local oDlg,oBt1,oBt2

   //SkinButtons()

   DEFINE DIALOG oDlg FROM 5,5 TO 10,60 TITLE "BOTONES DE COLORES"

   @ 3,2  BTNBMP oBt1 PROMPT "Un Color"   SIZE 60,20 ACTION MsgInfo("Nada que hacer")
   @ 3,80 BTNBMP oBt2 PROMPT "Otro Color" SIZE 60,20 ACTION oDlg:End()

   Color_oBot(oBt1,"ORO")   // ouro

   Color_oBot(oBt2,"PLATA") // prata

   ACTIVATE DIALOG oDlg Centered

Return nil
//------------------------------
Function Color_oBot(oBot,cColor)

   DEFAULT cColor := NIL

   IF !cColor = NIL

     if cColor = "ORO"
        oBot:bClrGrad = { | lMouseOver | If( ! lMouseOver,;
        { { 1.00,14481663,38075 }, ;
          { 1.00,38075,14481663 } }, ;
        { { 0.10,16777215,9363707 },;
          { 0.10,9363707,16777215 } } ) }

        oBot:SetColor(0)

      elseif cColor = "PLATA"

        oBot:bClrGrad = { | lMouseOver | If( ! lMouseOver,;
        { { 0.30,12961221,16777215 },;
          { 0.30,16777215,12961221 } },;
        { { 0.10,9363707,16777215 },;
          { 0.10,16777215,9363707 } } ) }

        oBot:SetColor(0)

     endif

   ENDIF

Return nil

Como mudar cor do botão?

Enviado: 18 Ago 2015 09:11
por Daiane
Galera eu consegui inserir a cor,mas pra isso tive que mudar o tipo do butão,quando vi o exemplo que Kapiaba postou
eu vi que no exemplo dele é BTNBMP e no que eu estava usando era BUTTUN. Depois que mudei para BTNBMP ele trocou de cor
Porém ele não ta conseguindo dar um action no botão. eu clico no botão e não acontece nada.

O Antes (o botão funcionava mas não mudava a cor )

Código: Selecionar todos

	REDEFINE BUTTON ::bCadNis ID 4001 OF ::oFld:aDialogs[ 1 ];
		ACTION ::telaCadNis(inc) 
Depois (botão muda a cor mas não funciona. ao clicar não acontece nada)

Código: Selecionar todos

	REDEFINE BTNBMP ::bCadNis ID 4001 OF ::oFld:aDialogs[ 1 ];
		ACTION ::telaCadNis(inc) 
Vou postar os resto do codigo para vcs entenderem melhor:

Código: Selecionar todos

METHOD Confirmar(inc) CLASS CadFuncionarios    
	local xreg,cQuestao:="Confirma dados deste funcionário?"

	IF ::enableSalvar(inc)	
      // Aqui tem varias comandos para verificar os campos e para salvar os dados
      //Retirei pq era enorme
	ELSE 
		msgAlert("Preencha os campos obrigatórios antes de prosseguir!","Atenção, campos obrigatórios não preenchidos!")
		if EMPTY(::cCCDATA) .and. inc = .T.
			::telaCadNis(inc) 
		endif	
	ENDIF 	
RETURN

METHOD EnableSalvar(campo) CLASS CadFuncionarios
         IF !EMPTY(::cNOMECOMP ) .AND.;
		!EMPTY(::cNASCTO   ) .AND.;
		!EMPTY(::cADMISSAO ) .AND.;
		!EMPTY(::cSINDICATO) .AND.;
		!EMPTY(::cNACIONAL)  .AND.;
		!EMPTY(::cRACA)      .AND.;
		!EMPTY(::cdefici)    .AND.;
		!EMPTY(::cHSNORMAL)  .AND.;
		!EMPTY(::cCODFUN)    .AND.;
		!EMPTY(::cTPCONTRAT) .AND.;
		!EMPTY(::cINSTRUCAO) .AND.;
		!EMPTY(::cRSTPADM)   .AND.;
		!EMPTY(::ccodadmcag) .AND.;
		!EMPTY(::ccateg)     .AND.;
		!EMPTY(::cOCORR)     .AND.;
		!EMPTY(::cRSVINC)    .AND.;
		!EMPTY(::cCTPSDTE)   .AND.;
		!EMPTY(::cCCDATA) 
		ELSE
     		::obrigatorios(::gNOMECOMP,::cNOMECOMP)
		   ::obrigatorios(::gNASCTO,::cNASCTO)
		   ::obrigatorios(::gADMISSAO,::cADMISSAO)
		   ::obrigatorios(::gSINDICATO,::cSINDICATO)
		   ::obrigatorios(::gNACIONAL,::cNACIONAL)
		   ::obrigatorios(::gRACA,::cRACA)
		   ::obrigatorios(::gdefici,::cdefici)
		   ::obrigatorios(::gHSNORMAL,::cHSNORMAL)
		   ::obrigatorios(::gCODFUN,::cCODFUN)
		   ::obrigatorios(::gTPCONTRAT,::cTPCONTRAT)
		   ::obrigatorios(::gINSTRUCAO,::cINSTRUCAO)
		   ::obrigatorios(::gRSTPADM,::cRSTPADM)
		   ::obrigatorios(::gcodadmcag,::ccodadmcag)
		   ::obrigatorios(::gcateg,::ccateg)
		   ::obrigatorios(::gOCORR,::cOCORR)
		   ::obrigatorios(::gRSVINC,::cRSVINC)
		   ::obrigatorios(::gCTPSDTE,::cCTPSDTE)	
		    ::obrigatorios(::bCadNis,"")
                   return .F.
	ENDIF
return .T.


METHOD Obrigatorios(obj,texto) CLASS CadFuncionarios
::obj:=obj
::texto:=texto
	if EMPTY(::texto)                 //Cor personalisada vermelho claro
	  ::obj:SetColor( GetSysColor(8), RGB(249,176,180))
	  ::obj:refresh()
	else
	  ::obj:SETCOLOR(GetSysColor(8),GetSysColor(5))
	  ::obj:refresh()
	endif
RETURN .T.
No method confirmar eu chamo minha dlg e quando a fecho e vou clicar no botão,acontece esse erro em anexo

Como mudar cor do botão?

Enviado: 18 Ago 2015 09:36
por Kapiaba
E o que:

Código: Selecionar todos

 ACTION ::telaCadNis(inc)
Tem a ver com METHOD Confirmar()???

????

abs.

Como mudar cor do botão?

Enviado: 18 Ago 2015 09:39
por Kapiaba

Código: Selecionar todos

Error description: Warning BASE/1004  Message not found: TBTNBMP:TELACADNIS
Em TELACADNIS, tem um ID, que não é reconhecido pela classe, para usar BTNBMP, veja \samples.

Veja a chamada nesta linha, chamada de(Called From):

Código: Selecionar todos

Called from: C:\mfolhawin\CadFuncionarios.000 => (b)CADFUNCIONARIOS:INCOUALT( 1169 ) ???
Abs

Como mudar cor do botão?

Enviado: 18 Ago 2015 09:41
por Daiane
Acontece que esse method é a chamada de uma nova janela
ou seja eu estou numa janela e ao clicar nesse botão é chamada outra janela de casdatro

Ai tipo quando eu vou no confirmar se os campos que estão nessa janela nova tiverem em branco ele deixa o botão vermelho para
o usuario saber que falta ainda cadastrar as informações do PIs
como eu não havia conseguida ainda mudar a cor do botão,eu chamei este method para abrir a janela caso os campos estivessem em branco

O fato deu ter mudado de BUTTON para BTNBMP,pode esta causando este problema?
pq quando mudo novamente para BUTTON ele abre a janela direitinho

Essa linhda de codigo:

Código: Selecionar todos

Called from: C:\mfolhawin\CadFuncionarios.000 => (b)CADFUNCIONARIOS:INCOUALT( 1169 ) ???
é o action do botão,ja dei uma olhada e aparentemente ta ok.

Vou postrar o method da nova dlg,acho que tem algo nela que não esteja reconhecendo o BTNBMP
so que eu sou nova no fivewin e não tenho muita experiencia se é mesmo o BTNBMP
pode dar uma olhada?

Código: Selecionar todos

REDEFINE BTNBMP ::bCadNis ID 4001 OF ::oFld:aDialogs[ 1 ];
		ACTION ::telaCadNis(inc) 

Código: Selecionar todos

METHOD telaCadNis(inc) CLASS CadFuncionarios

  DEFINE DIALOG oDlgNis RESOURCE "#1152" OF ::oDlg
   ::IniciaVarNis(inc)
   
	REDEFINE SAY ID 4005 OF oDlgNis                 
	REDEFINE SAY ID 4008 OF oDlgNis
	REDEFINE SAY ID 4011 OF oDlgNis
	REDEFINE SAY ID 4013 OF oDlgNis
	REDEFINE SAY ID 4015 OF oDlgNis
	REDEFINE SAY ID 4017 OF oDlgNis
	REDEFINE SAY ID 4021 OF oDlgNis 
  
  	REDEFINE GET ::dCCDATA VAR ::cCCDATA ID 4010 PICTURE "99/99/9999" OF oDlgNis  VALID ( ::ChecaData())
	REDEFINE GET ::dCCTERM VAR ::cCCTERM ID 4012 PICTURE "" OF oDlgNis  
	REDEFINE GET ::dCCLIVR VAR ::cCCLIVR ID 4014 PICTURE "99999999" OF oDlgNis when ( IF (!EMPTY(::cCCDATA) .AND. IF (VALTYPE(::cCCDATA)="C",CTOD(::cCCDATA),::cCCDATA) > CTOD("01/01/2010"),.F.,.T.) )
	REDEFINE GET ::dCCFOLH VAR ::cCCFOLH ID 4016 PICTURE "9999" OF oDlgNis   when ( IF (!EMPTY(::cCCDATA) .AND. IF (VALTYPE(::cCCDATA)="C",CTOD(::cCCDATA),::cCCDATA) > CTOD("01/01/2010"),.F.,.T.) )
	REDEFINE GET ::dCCCART VAR ::cCCCART ID 4018 PICTURE "" OF oDlgNis    
	REDEFINE GET ::dCCUF VAR 	::cCCUF ID 4020 PICTURE "" OF oDlgNis
	REDEFINE GET ::dCCMUNI VAR ::cCCMUNI ID 4022 PICTURE "" OF oDlgNis
	REDEFINE COMBOBOX ::dCCTIPO VAR ::cCCTIPO ID 4006 OF oDlgNis;						
							ITEMS {"Certidão Administrativa de Nascimento Indígena",;  
													 "Certidão de Casamento",;  
													 "Certidão de Nascimento",;  
														"Certidão de óbito"} 
														
 	REDEFINE GET ::dCCLOG2 VAR ::cCCLOG2 ID 4026 PICTURE "" OF oDlgNis 
	REDEFINE GET ::dCCNUM2 VAR ::cCCNUM2 ID 4027 PICTURE "9999" OF oDlgNis
	
	REDEFINE GET ::dTpLograd VAR ::cTpLograd   ID 4113 OF oDlgNis  
	REDEFINE BUTTONBMP ID 4114 OF  oDlgNis BITMAP "#7002" ;
		ACTION (JSLOGRADOURO():New(oDlgNis,@::dTpLograd),::dCCLOG2:setFocus())
	
	REDEFINE GET ::dCodOrgao VAR ::cCodOrgao   ID 4060 OF oDlgNis VALID ::GetDescUm()
	REDEFINE SAY ::dDescOrgao VAR ::cDescOrgao ID 4044 OF oDlgNis 
	REDEFINE BUTTONBMP ID 4108 OF  oDlgNis BITMAP "#7002" ;
		ACTION (JSOrgaoEmi():New(oDlgNis,@::dCodOrgao,::dDescOrgao,,,.t.),::dCCTIPO:setFocus())
		
	REDEFINE GET ::dCodMunPis VAR ::cCodMunPis   ID 4109 OF oDlgNis VALID (::DescMunicipio())
	REDEFINE BUTTONBMP ::bcodmunpis ID 4110 OF oDlgNis BITMAP "#7002";
	ACTION (JSCodCid():New(oDlgNis, ::dCodMunPis,::dCCMUNI,::dCCUF), ::bSalvarNis:setFocus()) CANCEL	
		
	REDEFINE BUTTON ::bSalvarNis ID 4009 OF oDlgNis;
		ACTION oDlgNis:End() when(!empty(::cCCDATA) .and. !empty(::cCCTERM) .and. !empty(::cCCCART) .and. !empty(::cCCCART);
		.and. !empty(::cCCUF) .and. !empty(::cCCMUNI) .and. !empty(::cCCTIPO) .and. !empty(::cCCLOG2) .and. !empty(::cCCNUM2);
		.and. !empty(::cTpLograd) .and. !empty(::cCodOrgao) .and. !empty(::cCodMunPis) )
		
		//oDlgNis:End()
	 ACTIVATE DIALOG oDlgNis CENTERED
RETURN

Como mudar cor do botão?

Enviado: 18 Ago 2015 10:25
por Kapiaba
Para usar BTNBMP é assim, tem que ter a BITMAP do botao:

BTN.PRG

Código: Selecionar todos

#include "Fivewin.ch"

FUNCTION MAIN()

    LOCAL oDlg

    DEFINE DIALOG oDlg;
           RESOURCE "TEST"

    REDEFINE BTNBMP;
             ID 101 OF oDlg;
             RESOURCE "TEST" NOROUND

    ACTIVATE DIALOG oDlg;
             CENTER

RETURN NIL
BTN.RC

Código: Selecionar todos

TEST BITMAP 
{
 '42 4D 12 04 00 00 00 00 00 00 36 00 00 00 28 00'
 '00 00 11 00 00 00 13 00 00 00 01 00 18 00 00 00'
 '00 00 DC 03 00 00 00 00 00 00 00 00 00 00 00 00'
 '00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF'
 'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
 'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
 'FF FF FF FF FF FF FF FF FF 00 FF FF FF F1 C6 B7'
 'F1 C6 B7 F2 C9 B8 F3 C9 B9 F3 C9 B9 F3 C9 B9 F3'
 'C9 B9 F2 C9 B8 F5 C8 B3 F5 C8 B3 F5 C8 B3 F4 C8'
 'B2 F2 C5 B0 FF FF FF FF FF FF FF FF FF 00 F4 C1'
 'AB F9 CB B7 F9 CB B7 FB CE B9 FA CE BC FA CE BC'
 'FA CE BC FA CE BC FB CF B9 FB CD B6 FB CD B2 FB'
 'CD B2 FA CB B1 F7 C8 AE F2 C5 B0 FF FF FF FF FF'
 'FF 00 F6 C3 AD FC CD BA FC CD BA FC D0 BE FB D2'
 'C1 FC D0 BE FC D0 BE FC D0 BE FB D3 BD FC D3 B7'
 'FB D1 B6 FB D1 B6 FB CF B2 F9 C9 AD F3 C6 B1 FF'
 'FF FF FF FF FF 00 F6 C3 AD FC CD BA FC CD BA FC'
 'D0 BE FB D2 C1 FC D0 BE FC D0 BE FC D0 BE FB D3'
 'BD FC D3 B7 FB D1 B6 FB D1 B6 FB CF B2 F9 C9 AD'
 'F3 C6 B1 FF FF FF FF FF FF 00 F6 C3 AD FC D0 BE'
 'FC D0 BE FC D3 C2 FC D3 C2 FC D5 C2 FC D5 C2 FC'
 'D5 C2 FC D5 C2 FC D4 BA FC D3 B7 FC D3 B7 FC D1'
 'B3 FA CB AF F4 C8 B2 FF FF FF FF FF FF 00 F6 C3'
 'AD FC D0 BE FC D0 BE FC D3 C2 FC D3 C2 FC D5 C2'
 'FC D5 C2 FC D5 C2 FC D5 C2 FC D4 BA FC D3 B7 FC'
 'D3 B7 FC D1 B3 FA CB AF F4 C8 B2 FF FF FF FF FF'
 'FF 00 F6 C7 B1 FC D3 C2 FC D3 C2 FC D6 C5 FC D6'
 'C5 FC D6 C5 FC D6 C5 FD D5 C3 00 00 00 FC D4 BA'
 'FB CF B2 FB CF B2 FB CF B2 FA CB B1 F5 C8 B3 FF'
 'FF FF FF FF FF 00 F6 C8 B4 FC D5 C5 FC D5 C5 FC'
 'D5 C5 FC D5 C5 FC D5 C5 FC D5 C5 00 00 00 00 00'
 '00 00 00 00 FB D3 BD FB D3 BD FB CE B6 FA CD B5'
 'F3 C9 B5 FF FF FF FF FF FF 00 F5 CA B7 FB D6 C8'
 'FB D6 C8 FB D6 C8 FB D6 C8 FB D3 C1 00 00 00 00'
 '00 00 00 00 00 00 00 00 00 00 00 FB CE B6 FB CE'
 'B6 FB CD B6 F3 CB B9 FF FF FF FF FF FF 00 F6 CB'
 'B8 FC D8 C9 FC D8 C9 FD D8 CA FD D8 CA 00 00 00'
 '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
 '00 00 FB CE B6 FB CD B9 F4 CC BA FF FF FF FF FF'
 'FF 00 F6 CB B8 FC D8 C9 FC D8 C9 FD D8 CA FC DB'
 'CD FC DB CD FC DB CD FC DB CD FB D6 C8 FB CD B9'
 'FB CD B9 FB CD B9 FB CD B9 FB CD B9 F4 CC BA FF'
 'FF FF FF FF FF 00 F7 CE BD FC DB CD FC DB CD FC'
 'DB CD FC DB CD FC DB CD FC DB CD FC DB CD FB D6'
 'C8 FB CD B9 FB CD B9 FB CD B9 FB CD B9 FB CD B9'
 'F3 CC BC FF FF FF FF FF FF 00 F8 D0 BF FC DD D0'
 'FC DD D0 FD DD CE FD D9 CA FB D6 C8 FB D6 C8 FB'
 'D6 C8 FB D6 C8 FD CE BB FC CD BA FC CD BA FB CD'
 'B9 FC CD BA F3 CC BC FF FF FF FF FF FF 00 F7 D3'
 'C4 FC E1 D4 FC E1 D4 FD E0 D1 FC DB CD FC D8 C9'
 'FC D8 C9 FC D8 C9 FB D5 C8 FC D0 BE FD CE BB FD'
 'CE BB FD CE BB FA CE BC F3 CC BC FF FF FF FF FF'
 'FF 00 F7 D3 C4 FC E1 D4 FC E1 D4 FD E0 D1 FC DB'
 'CD FC D8 C9 FC D8 C9 FC D8 C9 FB D5 C8 FC D0 BE'
 'FD CE BB FD CE BB FD CE BB FA CE BC F3 CC BC FF'
 'FF FF FF FF FF 00 F9 D8 CA FE E6 DA FE E6 DA FC'
 'E3 D8 FD DE D1 FD DB CE FD DB CE FD D9 CA FC D8'
 'C9 FC D5 C5 FC D3 C5 FC D3 C5 FC D3 C2 FA CE BC'
 'F4 CC BA FF FF FF FF FF FF 00 FD E0 D1 FE EA E1'
 'FE EA E1 FE E6 DA FC E1 D4 FD E0 D1 FD E0 D1 FC'
 'DD D0 FD DB CE FD D9 CA FB D8 C8 FB D8 C8 FC D6'
 'C5 FA CE BC F3 C9 B9 FF FF FF FF FF FF 00 FF FF'
 'FF FD E0 D1 FD E0 D1 F9 D8 CA F7 D3 C4 F8 D0 BF'
 'F8 D0 BF F7 CE BD F4 CC BA F6 CB B8 F5 CA B7 F5'
 'CA B7 F7 C8 B5 F4 C5 AF FF FF FF FF FF FF FF FF'
 'FF 00'
}


TEST DIALOG 37, 56, 225, 100
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Sans Serif"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
{
 CONTROL "", 101, "TBtnBmp", WS_CHILD | WS_VISIBLE, 15, 20, 12, 13
}
Abs