Evento FORM ON KEY ESCAPE ACTION

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Evento FORM ON KEY ESCAPE ACTION

Mensagem por NiltonGM »

Jair, não entendi direito o que vc está querendo, mas se é executar uma procedure no evento "OnCheckBoxClicked", vou te mostra de forma simples, veja os passos seguintes:
1º) Ao carregar o Form:

Código: Selecionar todos

     LOAD WINDOW Form_1
              ON KEY ESCAPE OF Form_1 ACTION Form_1.Release   // Esta linha é para funcionar a tecla ESC para sair do Form
     _HMG_SYSDATA[ 40 ][ GetControlIndex( "Grid_1", "Form_1" ) ][ 46 ] := {|| minhaProcedure1_OnCheckBoxClicked() }   // Define o CodeBlock, "procedure" que será invocada ao clicar ou desclicar o CheckBox da grade (antes da primeira coluna da grid)
     _HMG_SYSDATA[ 40 ][ GetControlIndex( "Grid_2", "Form_1" ) ][ 46 ] := {|| minhaProcedure2_OnCheckBoxClicked() }   // Voce pode ter outra Grid com CheckBoxEnabled, define a procedure para a grid2
     Form_1.CENTER
     Form_1.ACTIVATE
2º) Ao iniciar o Form (evento onInit do form):

Código: Selecionar todos

     Form_1.Grid_1.CheckBoxEnabled := .T.   // Seta para usar o CheckBox na Grid
     Form_1.Grid_2.CheckBoxEnabled := .T.   // Idem
3º) Crie as Procedures do evento OnCheckBox para cada Grid

Código: Selecionar todos

Procedure minhaProcedure1_OnCheckBoxClicked()
                Local var....

                Form_1.Grid_1.Value := This.CellRowClicked // Seta/Seleciona a linha da grade clicada
                // Form_1.Grid_1.Value := { This.CellRowClicked, 3}  // Seta a linha e a coluna desejada na grade da linha clicada caso CELLNAVIGATION for .T. 

                /* Verifica se o usuário clicou ou desclicou o CheckBox da linha na grade */
                if Form_1.Grid_1.CheckBoxItem(This.CellRowClicked)
                   ...codigo
                else
                   ...codigo
                endif

Return
4º) Ao carregar os registros na Grid vc poderá setar ou não o CheckBox para cada linha:

Código: Selecionar todos


Procedure form_1_CarregaGrid_1()
         Local i, ....

         ....codigo para carregar registros de uma query ou outro data base
         ....

         Form_1.Grid_1.DeleteAllItems()

         for i:=1 to query:LastRec()
         
              Form_1.Grid_1.AddItem( {....registro n da query:FieldGet('coluna_1'), query:FieldGet('coluna_n') } )
              Form_1.Grid_1.CheckBoxItem(i) := ( query:FieldGet('coluna_x') == <condição> )

              query:Skip()

         next i

         Form_1.Grid_1.Refresh
         ...

Return
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
JAIR RANGEL
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 19 Jul 2005 16:01
Localização: RIO DE JANEIRO
Contato:

Evento FORM ON KEY ESCAPE ACTION

Mensagem por JAIR RANGEL »

Olá, NiltomGM

Sim, exatamente isso.
Ex: Na Grade de Títulos á pagar, o Operador poderá selecionar os Títulos que serão baixados naquele momento, marcando os checkbox no início da linha. Ao clicar, aciona a função para somar todos os Títulos marcados e exibir o Total de Títulos selecionados, ou seja, o Valor Total dos Títulos a serem baixados.

Muito louco esse código que postou. Vou testá-lo no programa e dou um feedback...

Obrigado pelo retorno!

Abraço

:xau
MINIGUI + HARBOUR + BRMAKE + CDX
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
Responder