Dúvida sobre rotina

Paulo_Jac
Mensagens: 64
Registrado em: 08 Set 2011, 21:06

Dúvida sobre rotina

Mensagem por Paulo_Jac » 13 Mar 2013, 15:46

Boa tarde!

Em primeiro lugar quero agradecer aos colegas que me ajudaram a solucionar o meu problema em especial ao Pablo que fez este exemplo do código abaixo, mais agora estou necessitando de alterar um pouco esta rotina tirar os três TEXTBOX e alterar para dois TEXTBOX com a data inicial e data final e do lado um LABEL com o tempo convertido (ano,meses e dias) do período que o usuário digitou e outro LABEL para mostrar o total das entradas e depois inserir na GRID:

Data Inicial Data Final Ano Mês Dia

17/04/1972 07/08/1973 1 3 21

Código: Selecionar todos

 #include "minigui.ch"

Function Main()
LOCAL aRows

DEFINE WINDOW Form_1 ; 
   AT 126,66 WIDTH 271 HEIGHT 410 ; 
   TITLE 'Teste de Função' ; 
   ICON '' ; 
   NOMAXIMIZE ;
   NOSIZE ;
   MAIN ;
   BACKCOLOR {236,233,216} ; 
   FONT 'Arial' SIZE 10

   ON KEY ESCAPE ACTION Form_1.Release
   aRows:={{0,0,0}}

   @ 21,11 FRAME frame_1 ; 
      CAPTION "Ano / Mês / Dia" ; 
      WIDTH 116 ; 
      HEIGHT 52 ; 
      OPAQUE

   Form_1.frame_1.fontbold:=.T.
   Form_1.frame_1.fontcolor:={  0,  0,  0}
   Form_1.frame_1.backcolor:={236,233,216}
   Form_1.frame_1.fontname:='Arial'
   Form_1.frame_1.fontsize:=  9

   @ 40,20 TEXTBOX Text_ano ; 
      HEIGHT 24 ; 
      WIDTH 25 ; 
      Font 'Arial' ; 
      BOLD ;
      size 10 ; 
      MAXLENGTH 2 ;
      ON ENTER {||Keybd_TAB()}

   // Form_1.Text_ano.fontbold:=.T.
   // Form_1.Text_ano.fontcolor:={  0,  0,  0}
   // Form_1.Text_ano.backcolor:={255,255,255}

   @ 40,56 TEXTBOX Text_mes ; 
      HEIGHT 24 ; 
      WIDTH 25 ; 
      Font 'Arial' ; 
      size 10 ; 
      BOLD ;
      MAXLENGTH 2 ;
      ON ENTER {||Keybd_TAB()}

   // Form_1.Text_mes.fontbold:=.T.
   // Form_1.Text_mes.fontcolor:={  0,  0,  0}
   // Form_1.Text_mes.backcolor:={255,255,255}

   @ 40,94 TEXTBOX Text_dia ; 
      HEIGHT 24 ; 
      WIDTH 25 ; 
      Font 'Arial' ;
      BOLD ;
      size 10 ; 
      MAXLENGTH 2 ;
      ON ENTER {|| AdiItem(val(Form_1.Text_ano.Value),Val(Form_1.Text_mes.Value),Val(Form_1.Text_dia.Value)),InputAtGrid()}

   // Form_1.Text_dia.fontbold:=.T.
   // Form_1.Text_dia.fontcolor:={  0,  0,  0}
   // Form_1.Text_dia.backcolor:={255,255,255}

   @ 85,9 GRID grid_1 ;
      WIDTH 230 ;
      HEIGHT 120 ; 
      HEADERS {'Ano','Mês','Dia'} ; 
      WIDTHS  {75,75,75} ;
      ITEMS aRows ;
      FONT 'Arial' ;
      SIZE 10 ;
      BOLD ;
      EDIT ;
      JUSTIFY {BROWSE_JTFY_CENTER,BROWSE_JTFY_CENTER,BROWSE_JTFY_CENTER} ;
      CELLNAVIGATION ;
      COLUMNCONTROLS { {'TEXTBOX','NUMERIC','999'} , {'TEXTBOX','NUMERIC','999'} , {'TEXTBOX','NUMERIC','999'} } 
      // ON CHANGE GridChange(This.Value)

   // Form_1.grid_1.fontcolor:={0,0,0}
   // Form_1.grid_1.backcolor:={255,255,255}

   @ 231,9 FRAME frame_2 ; 
      CAPTION "Total" ; 
      WIDTH 239 ; 
      HEIGHT 52 ; 
      OPAQUE

   Form_1.frame_2.fontbold:=.T.
   Form_1.frame_2.fontcolor:={  0,  0,  0}
   Form_1.frame_2.backcolor:={236,233,216}
   Form_1.frame_2.fontname:='Arial'
   Form_1.frame_2.fontsize:=  9

   @ 252,19 LABEL label_1 ; 
      WIDTH 220 ; 
      HEIGHT 24 ; 
      FONT 'Arial' ; 
      SIZE 10 ;
      FONTCOLOR {204,0,0} ;
      BACKCOLOR {236,233,216} ;
      BOLD ;
      CENTERALIGN

   // Form_1.label_1.fontbold:=.T.
   // Form_1.label_1.fontcolor:={  0,  0,  0}

   DEFINE BUTTON button_1

     ROW 290
     COL 9
     WIDTH 100
     HEIGHT 24
     CAPTION "Nova Soma"
     FONTNAME "Arial"
     FONTSIZE 10
     FONTBOLD .T.
     ACTION {|| Novo()}

   END BUTTON

END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1

*********************************************************************
Function InPutAtGrid()
Form_1.label_1.Value := SomaRegistro()
Return Nil
*********************************************************************
Function SomaRegistro()
Local nCount1, nCount2, cRet, nFim:=Form_1.Grid_1.ItemCount
Local aRet:={0,0,0}, aTupla, aSoma:={0,0,0}, nSobra

For nCount1=1 To nFim
    aTupla:=Form_1.Grid_1.Item( nCount1 )
    For nCount2=1 To 3
        aSoma[nCount2]:=aSoma[nCount2]+aTupla[nCount2]
    Next
Next

aDia := INT(aSoma[3] / 30)
aMes := INT(aSoma[2] / 12)

aRet[3] := IF(aDia <> 0 , aSoma[3] - (aDia * 30) , aSoma[3])

aRet[2] := IF(aMes = 0 , IF(aMes = 0 ,IF(aSoma[2] + aDia = 12 , 0 , aSoma[2] + aDia) , aSoma[2] + aDia - (aDia * 12)) , IF(aMes = 1 , aSoma[2] + aDia - (aMes * 12) , aSoma[2] + aDia - (aMes * 12)))

aRet[1] := IF(aMes = 0 , IF(aMes = 0 , IF(aSoma[2] + aDia = 12, aSoma[1] + 1 , aSoma[1]) , aSoma[1] + aDia) , IF(aMes = 1 , aSoma[1] + aMes , aSoma[1] + aMes))

cRet:=hb_ValToExp(aRet[1])+" Anos / "+hb_ValToExp(aRet[2])+" Meses / "+hb_ValToExp(aRet[3])+" Dias"
Form_1.Text_ano.SetFocus
Return cRet
*********************************************************************
Function AdiItem(a,m,d)
Local nFim

nFim:=Form_1.Grid_1.ItemCount
aTupla:=Form_1.Grid_1.Item( nFim )
If aTupla[1]=0 .and. aTupla[2]=0 .and. aTupla[3]=0
   Form_1.Grid_1.DeleteItem(nFim)
EnDif
Form_1.Grid_1.AddItem({a,m,d})
nFim:=Form_1.Grid_1.ItemCount
SetProperty("Form_1","Grid_1","Value",{nFim,1})
// Form_1.Text_ano.SetFocus
Return Nil
*********************************************************************
Function DelItem(aRec)
Local nFim, nRec:=aRec[1]

Form_1.Grid_1.DeleteItem(nRec)
nFim:=Form_1.Grid_1.ItemCount
SetProperty("Form_1","Grid_1","Value",{If(nRec>nFim,nFim,nRec),1})
// Form_1.Text_ano.SetFocus
Return Nil
*********************************************************************
Function Novo()

Form_1.Grid_1.DeleteAllItems
Form_1.Text_Ano.Value := ""
Form_1.Text_Mes.Value := ""
Form_1.Text_Dia.Value := ""
Form_1.Label_1.Value  := ""

aRows := {{0,0,0}}

*InPutAtGrid()

Form_1.Text_Ano.SetFocus

Return Nil

#pragma BEGINDUMP

#include 
#include 
#include 
#include 
#include 
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbvm.h"
#include "hbstack.h"
#include "winreg.h"
#include "tchar.h"
#include "Winuser.h"
#include "winbase.h"
#include "item.api"

HB_FUNC( KEYBD_TAB )
{
   keybd_event(
      VK_TAB,   // virtual-key code
      0,      // hardware scan code
      0,      // flags specifying various function options
      0      // additional data associated with keystroke
   );
}

#pragma ENDDUMP  
 
Espero que alguém me ajude a solucionar este problema, pois deu um branco e não estou conseguindo ver a solução e espero que eu tenho sido objetivo.
[]'s
Paulo - Jacareí/SP

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante