Clipper On Line • Ver Tópico - MiniGui Grid

MiniGui Grid

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

MiniGui Grid

Mensagempor Toledo » 11 Out 2015 09:50

Só mais uma observação:

Cell(CellRowIndex,3) corresponde a coluna 3 da Grid, onde estaria a data de vencimento, então altere a coluna conforme as colunas do seu Grid.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

MiniGui Grid

Mensagempor Nascimento » 12 Out 2015 15:35

desculpa a falta de conhecimento ainda mais nao compreendi
att: Nascimento
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

MiniGui Grid

Mensagempor Toledo » 12 Out 2015 16:44

Amigo, segue um exemplo (com algumas alterações em relação a minha última mensagem, na linha 5)

#include "minigui.ch"

Function Main
Local aRows [20] [3]
Local fColor := { |val| iif( CTOD(val[3])<DATE() .AND. EMPT(CTOD(val[5])) , { 255,0,0 } , { 0,0,0 } ) }   

SET DATE  TO BRITISH
SET CENT  ON

   aRows [1]   := {'001','Homer','10/11/2015','150.00','  /  /    '}
   aRows [2]   := {'002','Fox','10/10/2015','125.00','  /  /    '}
   aRows [3]   := {'003','Max','15/09/2015','170.00','10/09/2015'}
   aRows [4]   := {'004','Pepe','06/10/2015','134.00','  /  /    '}
   aRows [5]   := {'005','James','12/11/2015','145.00','  /  /    '}
   aRows [6]   := {'006','Carlos','10/10/2015','315.00','10/10/2015'}
   aRows [7]   := {'007','Ned','19/09/2015','235.00','10/09/2015'}
   aRows [8]   := {'008','John','30/07/2015','950.00','  /  /    '}
   aRows [9]   := {'009','Flavio','20/08/2015','760.00','20/08/2015'}
   aRows [10]   := {'010','Juan','15/11/2015','215.00','  /  /    '}
   aRows [11]   := {'011','Raul','18/12/2015','150.00','  /  /    '}
   aRows [12]   := {'012','Javier','12/02/2015','150.00','12/02/2015'}
   aRows [13]   := {'013','Alberto','17/07/2015','180.00','  /  /    '}
   aRows [14]   := {'014','Ambo','26/11/2015','560.00','  /  /    '}
   aRows [15]   := {'015','Gol','21/10/2015','500.00','  /  /    '}
   aRows [16]   := {'016','Amigo','11/05/2015','125.00','11/05/2015'}
   aRows [17]   := {'017','Flavio','19/03/2015','500.00','19/03/2015'}
   aRows [18]   := {'018','Armando','05/08/2015','180.00','  /  /    '}
   aRows [19]   := {'019','Alejandra','20/10/2015','250.00','  /  /    '}
   aRows [20]   := {'020','Monica','17/12/2015','598.00','  /  /    '}

   DEFINE WINDOW Form_1 ;
      AT 0,0 ;
      WIDTH 640 ;
      HEIGHT 400 ;
      TITLE 'Demo Cor Grid' ;
      MAIN

      @ 10,10 GRID Grid_1 ;
         WIDTH 620 ;
         HEIGHT 330 ;
         HEADERS {'Cod','Nome','Vencto','Valor','Pagto'} ;
         WIDTHS {60,230,100,100,100} ;
         JUSTIFY {2,0,2,1,2};
         ITEMS aRows ;
         DYNAMICFORECOLOR {fColor, fColor, fColor, fColor, fColor}

   END WINDOW

   CENTER WINDOW Form_1

   ACTIVATE WINDOW Form_1

Return Nil

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

MiniGui Grid

Mensagempor Nascimento » 14 Out 2015 12:32

Ficou perfeito muito obrigado amigo...
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

MiniGui Grid

Mensagempor syslink » 06 Fev 2019 23:59

aproveitando o tópico...
tenho o seguinte código:

      DEFINE GRID Grid_1
         ROW 140
         COL 410
         PARENT Form_1
         WIDTH  350
         HEIGHT 200
         HEADERS {"Descricao","Cobrar S/N","Valor"}
         WIDTHS {150,80,100}
         ROWSOURCE "DB10035"
         COLUMNFIELDS { "DB10035->DESCRICAO", "DB10035->SIMNAO", "DB10035->VALOR" }
         // ONCHANGE MOVE_GRID_ARQUIVO () // eliminei pois QUERO QUE ALTERE OS DADOS DO BANCO DBF AUTOMATICAMENTE E TESTANDO SE COM A ROWSOURCE O DBF é atualizado...
         NOLINES .F.
        JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_CENTER, BROWSE_JTFY_RIGHT }    
      END GRID


Mas, observo que o CLIQUE DUPLO do mouse não funciona pra que eu possa alterar a COLUNA/LINHA do GRID...

caso exista uma função do GRID que permita essa alteração, a DESCRIÇÃO não pode ser alterada e o COBRAR S/N somente aceitar S ou N e o campo VALOR só aceitar números (inteiros e centavos) e não aceitar string

quero também acrescentar um tipo de controle (tipo senha) pra que o usuári osó altere o "valor" do campo se digitar a senha.

é POSSÍVEL isso ser feito?
syslink
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 132
Data de registro: 20 Fev 2018 13:13
Cidade/Estado: joinvile/sc
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

MiniGui Grid

Mensagempor syslink » 08 Fev 2019 13:01

gente, peguei o exemplo da pasta samples /controls/grid/grid 34 efiz minhas adaptações.

Quero usar a propriedade .SAVE.

Então, no exemplo oficial, quando-se clica na opção do menu popup o ONCHANGE é acionado e então entra numa PROCEDURE que apenas para estudo mostra através de mensagens gráfica os resultados.

Então, pra facilitar a ajuda dos colegas quanto ao meu problema, vou postar parte do código.
- parte que cria o botão pra SALVAR e o GRID:
DEFINE BUTTON BUTTON_4
               PARENT Form_Main
               ROW  365
               COL  530
               CAPTION 'Salvar'
               TOOLTIP 'Clique aqui para Salvar alterações feitas nos valores das cobranças acima'
               ACTION Form_Main.Grid_1.Save
    END BUTTON

     
      DEFINE GRID Grid_1
         PARENT Form_Main
         ROW 140
         COL 405
         WIDTH  360
         HEIGHT 200
         HEADERS {"Cod","Descricao","Cobrar S/N","Valor"}
         COLUMNCONTROLS { {'TEXTBOX','NUMERIC','9'},{'TEXTBOX','CHARACTER','AAAAAAAAAAAAAAAAAAAA'},{'TEXTBOX','CHARACTER','A'},{'TEXTBOX','NUMERIC','9.99'} }
         WIDTHS {40,200,80,55}
      ITEMS aRows  // se optar por usar ITEMS não pode usar ROWSOURCE e COLUMNFIELDS
         // ROWSOURCE "DCI10035" // abre os campos da tabela DBF dentro do GRID automaticamente  // campos da tabela DBF - se usar este tem q usar em conjunto o COLUMNFIELDS e não pode usar ITEMS aROWS
         // COLUMNFIELDS { "DCI10035->DESCRICAO", "DCI10035->SIMNAO", "DCI10035->VALOR" } // campos da tabela DBF - se usar este tem q usar em conjunto o ROWSORCE e não pode usar ITEMS aROWS
         CELLNAVIGATION .T.
         DYNAMICFORECOLOR { fColor , fColor, fColor, fColor, fColor } // muda as cores de frente dinamicamente uma linha após a a outra
      DYNAMICBACKCOLOR { bColor , bColor , bColor , bColor , bColor , bColor } // muda as cores de fundo dinamicamente uma linha após a aoutra 7/2/19w
         ALLOWEDIT .T. // se estiver em .T. não funciona o ONDBLCLICK e funciona o COLUMNWHEN
         // COLUMNVALID 1
         // NOLINES .T. // desaparece as linhas de grade em .T.
       JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_CENTER, BROWSE_JTFY_CENTER }   
         // COLUMNWHEN  { { || This.CellValue <> nil } , Nil , Nil , Nil }
      COLUMNWHEN { { || .F. } ,  { || .F. } , { || .T. } ,  { || .T. }  } // trava/destrava colunas pra serem editadas. Mas, o ALLOWEDIT tem que estar em .T. pra funcionar
         // LOCKCOLUMNS 2
      // VALUE { 1 , 4 }
         // ONDBLCLICK MOVE_GRID_ARQUIVO () // duplo click do mouse aciona esta função
         // ONCHANGE MOVE_GRID_ARQUIVO () // apenas um click do mouse aciona esta função
      // EDIT
      // ALLOWAPPEND .T. // pra usar esse tem q usar o ROWSOURCE senão não funciona
      // ALLOWDELETE .T. // pra usar esse tem q usar o ROWSOURCE senão não funciona
         ONSAVE OnSaveTest()
      END GRID

Bom, agora a procedure ONSAVETEST() extraída do exemplo GRID 34 que acrescentei apenas 6 MSGINFO pra ver o que está acontecendo (conteúdo e tipo):
*******************************************************************************
Procedure OnSaveTest()
*******************************************************************************
Local i
Local s
Local cMark
Local j

  * Show Edited Cells ***************************************************
   msginfo(This.EditBuffer)
   msginfo(valtype(This.EditBuffer))
   if This.EditBuffer <> nil
      For i := 1 To len( This.EditBuffer )
    s := ''
    nLogicalRow  := This.EditBuffer [ i ] [ 1 ]
    nLogicalCol  := This.EditBuffer [ i ] [ 2 ]
    xValue    := This.EditBuffer [ i ] [ 3 ]
    nPhysicalRow  := This.EditBuffer [ i ] [ 4 ]
    s += 'RecNo():' + Str( nPhysicalRow ) + chr(13) + chr(10)
    s += 'Logical Row: ' + Str( nLogicalRow )  + chr(13) + chr(10)
    s += 'Logical Col: ' + Str( nLogicalCol )  + chr(13) + chr(10)
    s += 'Value:       ' + xToC( xValue )      + chr(13) + chr(10)
    MsgInfo ( s , 'Edited Cell #' + str(i) )
      Next i
   endif

  * Show Deleted / Recalled Records *****************************************

   msginfo(This.MarkBuffer)
   msginfo(valtype(This.MarkBuffer))
   if This.MarkBuffer <> nil
      For i := 1 To len( This.MarkBuffer )
    s := ''
    nLogicalRow  := This.MarkBuffer [ i ] [ 1 ]
    nPhysicalRow  := This.MarkBuffer [ i ] [ 2 ]
    cMark    := This.MarkBuffer [ i ] [ 3 ]
    s += 'RecNo():' + Str( nPhysicalRow ) + chr(13) + chr(10)
    s += 'Logical Row: ' + Str( nLogicalRow )  + chr(13) + chr(10)
    s += 'Mark:       ' + if ( cMark == 'D' , 'Delete' , 'Recall' ) + chr(13) + chr(10)
    MsgInfo ( s , 'Marked Row #' + str(i) )
      Next i
   endif

  * Show Appended Records ************************************************
   msginfo(This.AppendBuffer)
   msginfo(valtype(This.AppendBuffer))
   if This.AppendBuffer <> nil
      For i := 1 To len( This.AppendBuffer )
    s := ''
    s+= xToC ( This.AppendBuffer [ i ] [ 1 ] ) + ' , '
    s+= xToC ( This.AppendBuffer [ i ] [ 2 ] ) + ' , '
    s+= xToC ( This.AppendBuffer [ i ] [ 3 ] ) + ' , '
    s+= xToC ( This.AppendBuffer [ i ] [ 4 ] ) + ' , '
    s+= xToC ( This.AppendBuffer [ i ] [ 5 ] ) + ' , '
    s+= xToC ( This.AppendBuffer [ i ] [ 6 ] )
    MsgInfo ( s , 'Appended Record #' + str(i) )
      Next i
   endif
Return // OnSaveTest()

Agora o(s) problema(s):
- se conseguirem entender, me expliquem, o porquê do de o botão não acionar o ONCHANGE OnSaveTest() - posso clicar nele que ele aciona mas não chama a PROCEDURE ONSAVETEST()
- estranho q assim q o sistema executa, o ONSAVE já é executado em primeiro plano.
- é como se o SALVE estivesse acontecendo AUTOMATICAMENTE... aí não tem conteúdo criado ainda, gera uma mensagem de erro de ARRAY. Por isso que no código para os 3 ARRAY (THIS.xxxx) coloquei um IF/ENDIF para proibir do laço FOR/NEXT ser acionado com os 3 arrays com contéudo "U" (Valtype retorna "U")

Obrigado.
syslink
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 132
Data de registro: 20 Fev 2018 13:13
Cidade/Estado: joinvile/sc
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Anterior



Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro