FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Una mas de BTNBMP (SOLUCIONADO)
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Una mas de BTNBMP (SOLUCIONADO)
Posted: Fri Dec 17, 2021 08:15 PM
Amigos:

Agradezco toda la ayuda hasta ahora recibida gracias a la cual he avanzado mucho en mi proyecto.

Ahora tengo una pregunta m谩s sobre la clase BTNGET

Code (fw): Select all Collapse
聽 聽 聽 DO WHILE ! oRsHab:EOF()
聽 聽 聽 聽 聽nVez++
聽 聽 聽 聽 聽REDEFINE BTNBMP oBtn[nVez] PROMPT AllTrim(Str(oRsHab:Fields("HAB_NUM"):Value,03,0)) + CRLF + "$" + AllTrim(Str(oRsHab:Fields("TIP_PRE"):Value,07,2)) ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ID nVez + 100 CENTER FONT oFont OF oDlg UPDATE

聽 聽 聽 聽 聽oBtn[nVez]:cargo 聽 聽 := { "HAB_NUM" => oRsHab:Fields("HAB_NUM"):Value,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"HAB_STS" => oRsHab:Fields("HAB_STS"):Value,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"HAB_PRE" => oRsHab:Fields("TIP_PRE"):Value}

聽 聽 聽 聽 聽oBtn[nVez]:bAction 聽 := {|oBtn| Eventos(oDlg,oBtn) }

聽 聽 聽 聽 聽DO CASE
聽 聽 聽 聽 聽 聽 CASE oRsHab:Fields("HAB_STS"):Value = 0 聽 聽 聽 聽 聽 聽// Disponible
聽 聽 聽 聽 聽 聽 聽 聽oBtn[nVez]:SetColor( CLR_BLACK, CLR_WHITE)
聽 聽 聽 聽 聽 聽 CASE oRsHab:Fields("HAB_STS"):Value = 1 聽 聽 聽 聽 聽 聽// Ocupada
聽 聽 聽 聽 聽 聽 聽 聽oBtn[nVez]:SetColor( CLR_WHITE, CLR_RED)
聽 聽 聽 聽 聽 聽 CASE oRsHab:Fields("HAB_STS"):Value = 2 聽 聽 聽 聽 聽 聽// En aseo
聽 聽 聽 聽 聽 聽 聽 聽oBtn[nVez]:SetColor( CLR_BLACK, CLR_YELLOW)
聽 聽 聽 聽 聽ENDCASE

聽 聽 聽 聽 聽oRsHab:MoveNext()
聽 聽 聽 ENDDO


Con el c贸digo anterior defino los botones y les asigno un color en funci贸n al campo HAB_STS,
hast ahi todo excelente pero ahora al ir a una funci贸n donde cambia el estatus, 驴como puedo
cambiar el color del boton?, lo he intentado as铆 pero me tira error de que no existe el metodo SETCOLOR

Code (fw): Select all Collapse
STATIC FUNCTION UpdEve(oDlg,oBtn,aGets)
聽 聽MsgInfo(oBtn:Cargo ["HAB_NUM"])

聽 聽cCmdSql 聽:= "UPDATE " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 "Habitaciones " +;
聽 聽 聽 聽 聽 聽 聽 聽"SET " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 "HAB_STS = 1 " +;
聽 聽 聽 聽 聽 聽 聽 聽"WHERE " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 "HAB_NUM = " + Str(oBtn:cargo ["HAB_NUM"],03,0)
聽 聽TRY
聽 聽 聽 oApp:oCon:Execute(cCmdSql)
聽 聽CATCH oError
聽 聽 聽 FW_ShowAdoError(oApp:oCon)
聽 聽END

聽 聽oBtn[oBtn:Cargo ["HAB_NUM"]]:SetColor( CLR_WHITE, CLR_RED)

聽 聽oDlg:Update()
RETURN(.T.)


Saludos y muchas gracias
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Una mas de BTNBMP
Posted: Fri Dec 17, 2021 09:47 PM
Si tiene el boton oBot pasado de la funcion, simplemente
Code (fw): Select all Collapse
oBtn:SetColor( CLR_WHITE, CLR_RED)
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Una mas de BTNBMP
Posted: Sat Dec 18, 2021 01:31 AM
Estimado C茅sar:

Pues no doy pie con bola, te muestro mi c贸digo a ver si sirve para brindarme tu apoyo
En el siguiente c贸digo estoy creando n n煤mero de botones cuyo objeto es oBtn con un
铆ndice [nVez] y les defino la funci贸n EVENTOS en la clausula ACTION

Code (fw): Select all Collapse
      DO WHILE ! oRsHab:EOF()
         nVez++
         REDEFINE BTNBMP oBtn[nVez] PROMPT AllTrim(Str(oRsHab:Fields("HAB_NUM"):Value,03,0)) + CRLF + "$" + AllTrim(Str(oRsHab:Fields("TIP_PRE"):Value,07,2)) ;
                                          ID nVez + 100 CENTER FONT oFont OF oDlg UPDATE

         oBtn[nVez]:cargo     := { "HAB_NUM" => oRsHab:Fields("HAB_NUM"):Value,;
                                   "HAB_STS" => oRsHab:Fields("HAB_STS"):Value,;
                                   "HAB_PRE" => oRsHab:Fields("TIP_PRE"):Value}

         oBtn[nVez]:bAction   := {|oBtn| Eventos(oDlg,oBtn) }

         DO CASE
            CASE oRsHab:Fields("HAB_STS"):Value = 0            // Disponible
               oBtn[nVez]:SetColor( CLR_BLACK, CLR_WHITE)
            CASE oRsHab:Fields("HAB_STS"):Value = 1            // Ocupada
               oBtn[nVez]:SetColor( CLR_WHITE, CLR_RED)
            CASE oRsHab:Fields("HAB_STS"):Value = 2            // En aseo
               oBtn[nVez]:SetColor( CLR_BLACK, CLR_YELLOW)
         ENDCASE

         oRsHab:MoveNext()
      ENDDO


Este es el c贸digo de la funci贸n EVENTOS en la que recibe dos parametros oDlg y el objeto array oBtn
que como puedes ver en esta funci贸n hay un dialogo con tres btnbmp y sus
respectivas clausulas ACTION
Code (fw): Select all Collapse
STATIC FUNCTION Eventos(oDlg,oBtn)
    LOCAL oDlgEve,oIcono,oFont
   LOCAL oBtns := Array(04)
   LOCAL oEntrada,oConsumo
   LOCAL oAseo,oSalida

   IF oBtn:Cargo ["HAB_STS"] == 0
      Entrada(oDlg,oBtn)
   ELSE
      DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0,-14 BOLD
      DEFINE ICON oIcono RESOURCE "AppLogo"
      DEFINE DIALOG oDlgEve RESOURCE "UpdEve" OF oWnd ICON oIcono FONT oFont COLOR CLR_BLACK,CLR_BLUE

         REDEFINE BUTTON oConsumo ID 901 OF oDlgEve UPDATE;
            WHEN oBtn:Cargo ["HAB_STS"] == 1;
            ACTION Consumo(oBtn);
            MESSAGE "Registar consumos adicionales"

         REDEFINE BUTTON oAseo ID 902 OF oDlgEve UPDATE;
            WHEN oBtn:Cargo ["HAB_STS"] == 2;
            ACTION IIF(Aseo(oBtn),oDlgEve:END(),);
            MESSAGE "Registar el aseo de la habitaci贸n"

         REDEFINE BUTTON oSalida ID 903 OF oDlgEve UPDATE;
            WHEN oBtn:Cargo ["HAB_STS"] == 1;
            ACTION IIF(Salida(oBtn,oBtn:Cargo["HAB_NUM"]),oDlgEve:END(),);
            MESSAGE "Registar la salida"

      ACTIVATE DIALOG oDlgEve CENTERED
      oFont:End()
      oIcono:End()
   ENDIF
RETURN(.T.)


Tomemos como ejemplo la funci贸n SALIDA a la que le estoy pasando dos parametros
el objeto oBtn y el cargo HAB_NUM (N煤mero de habitaci贸n)
Code (fw): Select all Collapse
STATIC FUNCTION Salida(oBtn,oBoton)
   cCmdSql  := "UPDATE " +;
                  "Habitaciones " +;
               "SET " +;
                  "HAB_STS = 2 " +;
               "WHERE " +;
                  "HAB_NUM = " + Str(oBtn:cargo ["HAB_NUM"],03,0)
   TRY
      oApp:oCon:Execute(cCmdSql)
   CATCH oError
      FW_ShowAdoError(oApp:oCon)
   END

   oBoton:SetColor( CLR_WHITE, CLR_BLUE)
RETURN(.T.)


Aqu铆 es donde me tira error al asignar color oBoton:SetColor( CLR_WHITE, CLR_BLUE)

Gracias por tu apoyo
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Una mas de BTNBMP
Posted: Sat Dec 18, 2021 08:30 AM

Qu茅 error te da ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Una mas de BTNBMP
Posted: Sat Dec 18, 2021 10:49 AM
Prueba Asi:
Code (fw): Select all Collapse
STATIC FUNCTION Salida(oBtn,oBoton)
   cCmdSql  := "UPDATE " +;
                  "Habitaciones " +;
               "SET " +;
                  "HAB_STS = 2 " +;
               "WHERE " +;
                  "HAB_NUM = " + Str(oBtn:cargo ["HAB_NUM"],03,0)
   TRY
      oApp:oCon:Execute(cCmdSql)
   CATCH oError
      FW_ShowAdoError(oApp:oCon)
   END

   oBtn:SetColor( CLR_WHITE, CLR_BLUE) // Cambia aca oBoton por oBtn
RETURN(.T.)
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Una mas de BTNBMP
Posted: Sat Dec 18, 2021 03:08 PM

Antonio y C茅sar, C茅sar y Antonio:

Prueba superada, mi error, estaba pasando mal los par谩metros.

Muchas gracias por su apoyo.

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero

Continue the discussion