Refresh() no dbedit ?
Moderador: Moderadores
-
paiva_dbdc
- Usuário Nível 3

- Mensagens: 342
- Registrado em: 12 Nov 2012 09:58
- Localização: uberlandia mg
Refresh() no dbedit ?
Teria como atualizar o dbedit ?!
com o dbedit apresento as informações na tela OK
ai abro uma tela para pedir uma informação tipo um código de barras
ao informar o código somo um na quantidade la na base do arquivo que esta sendo exibido no dbedit
como fazer para o dbedit atualizar a informação SEM que eu precise fechar a tela e voltar para o dbedit ?
ou seja cada vez que EU alterasse a base de dados faria tipo um Refresh() la no dbedit
até pensei em criar uma variavel ai para ar o refresh eu setava essa variavel, encavalava varias teclas e voltava para o dbedit com return(2)
ai com as teclas em fila daria um jeito de voltar onde estava rs complicado
desde já agradeço pela ajuda
Paiva
com o dbedit apresento as informações na tela OK
ai abro uma tela para pedir uma informação tipo um código de barras
ao informar o código somo um na quantidade la na base do arquivo que esta sendo exibido no dbedit
como fazer para o dbedit atualizar a informação SEM que eu precise fechar a tela e voltar para o dbedit ?
ou seja cada vez que EU alterasse a base de dados faria tipo um Refresh() la no dbedit
até pensei em criar uma variavel ai para ar o refresh eu setava essa variavel, encavalava varias teclas e voltava para o dbedit com return(2)
ai com as teclas em fila daria um jeito de voltar onde estava rs complicado
desde já agradeço pela ajuda
Paiva
Refresh() no dbedit ?
Rapaz, já faz muitos anos que não uso dbedit. Sempre uso o tbrowse. Com tbrowse da pra fazer isso, mas como a pergunta envolve dbedit, vou dizer como eu fiz. Lembro que da última vez, eu botei o dbedit dentro de um laço. Atribuí uma tecla para fazer a rotina desejada e na função de usuário da dbedit eu saia dela ao chamar a função. Após a saída eu testava com lastkey, se fosse esc eu saia do laço, se fosse minha atualização dava loop.
Exemplo
Posso sair da dbedit com esc ou através da função definida pelo usuário.
Fica feio mas não me recordo de ter conseguido atualizar sem sair da dbedit e voltar de novo.
Exemplo
Código: Selecionar todos
Do while .t.
Bla bla
Dbedit ()
If lastkey = esc
Sai
Endif
Enddo
Fica feio mas não me recordo de ter conseguido atualizar sem sair da dbedit e voltar de novo.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Refresh() no dbedit ?
O melhor seria o tbrowse, mas talvez algo parecido com isto.
Código: Selecionar todos
lSair := .F.
DO WHILE .T.
dbEdit()
IF lSair
EXIT
ENDIF
ENDDO
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Refresh() no dbedit ?
Ola!
Já viram o código da função DbEdit() no harbour ?
Copiar (dbedit.prg) do \src\rtl\dbedit.prg e colar ai no seu programa com o nome MyDbEdit() por exemplo e seja feliz!
Sauda
Já viram o código da função DbEdit() no harbour ?
Código: Selecionar todos
FUNCTION dbEdit( nTop, nLeft, nBottom, nRight, ;
acColumns, xUserFunc, ;
xColumnSayPictures, xColumnHeaders, ;
xHeadingSeparators, xColumnSeparators, ;
xFootingSeparators, xColumnFootings )
...
oBrowse := TBrowseDB( nTop, nLeft, nBottom, nRight )
Sauda
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Refresh() no dbedit ?
Ola!
Parece que nem precisa.
Basta pedir o refresh() pela função.
Saudações,
Itamar M. Lins Jr.
Parece que nem precisa.
A função do usuário do dbedit vem com dois parâmetros ?...&xUserFunc( nMode, oBrowse:colPos )
Basta pedir o refresh() pela função.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Refresh() no dbedit ?
Uso bastante DbEdit nos meus sistemas, faço a busca pelo produto e insiro no pedido em seguida:paiva_dbdc escreveu:Teria como atualizar o dbedit ?!
Código: Selecionar todos
GO BOTTOM
keyb chr(255)
return 2Agora se este Dbedit estiver exibindo algo montado com um índice temporário, terá que sair e reconstruí-lo para que o novo
registro faça parte dele.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Refresh() no dbedit ?
Tem razão, era só olhar os códigos de retorno da função de usuário.
Código: Selecionar todos
DBEDIT() User Function Return Values
------------------------------------------------------------------------
Value Dbedit.ch Description
------------------------------------------------------------------------
0 DE_ABORT Abort DBEDIT()
1 DE_CONT Continue DBEDIT()
2 DE_REFRESH Force reread/repaint and continue; after repaint,
process keys and go to idle
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
paiva_dbdc
- Usuário Nível 3

- Mensagens: 342
- Registrado em: 12 Nov 2012 09:58
- Localização: uberlandia mg
Refresh() no dbedit ?
BOA noite
não entendi muito bem rs.
dentro do dbedit eu controlo as teclas com a tecla / (47) faço um get e somo 1 na base de dados.
se retorno (2) o dbedit faz o refrash la na exibicao OK +++++ ele para no dbedit
ai teria que apertar / para poder pedir o get denovo
mesmo que eu force uma tecla 47 o DBedit NAo respeita tipo ele limpa o buffers de teclas rs
tambem tentei com o retorno (0) encerrar o dbedit e forçando depois o / antes de chamar o dbedit de novo no loop
nao consegui
TAMBEM tentei SEM loop apos o get forcei a tecla / e fiz o return(2) a seguir
ele faz o refrash la no dbedit ++++ nao ativa a tecla /
se tivesse uma forma dele aceitar a tecla / chr(47) resolveria rs
na realidade sao tipo CAPA e itens na caba uso o tbrowser e os itens o dbedit (NAO consegui usar o browser nos itens uma vez por isso uso o dbedit nos itens)
como sera o refrash se usar o browser ?
_fim_dbedit = .f.
do while .t.
dbedit(li,ci,lf,cf,vetor1,"_craitec_critec_ok",,cabec1,"Ä","³","Ä")
if _fim_dbedit = .t.
exit
else
keyboard chr(47) && forca tecla INS
endif
enddo
function _craitec_critec_ok && funcao p/ auxiliar a funcao ccabped_nome()
parameters modo
do case
case _lastkey == 27 && esc
clear typeahead && limpa buffer do teclado
return(0) && encerrar dbedit()
case _lastkey == 47
@ lf-1,02 clear to lf-1,78
save screen
tfornecc = space(tlenfornecc)
@ lf-1,02 say "Codigo Barras:"
@ lf-1,17 get tfornecc pict '@K!'
Wread(Njanela)
if lastkey() == 27
restore screen
else
clear gets
keyboard chr(47) && forca tecla INS
endif
return(2)
não entendi muito bem rs.
dentro do dbedit eu controlo as teclas com a tecla / (47) faço um get e somo 1 na base de dados.
se retorno (2) o dbedit faz o refrash la na exibicao OK +++++ ele para no dbedit
ai teria que apertar / para poder pedir o get denovo
mesmo que eu force uma tecla 47 o DBedit NAo respeita tipo ele limpa o buffers de teclas rs
tambem tentei com o retorno (0) encerrar o dbedit e forçando depois o / antes de chamar o dbedit de novo no loop
nao consegui
TAMBEM tentei SEM loop apos o get forcei a tecla / e fiz o return(2) a seguir
ele faz o refrash la no dbedit ++++ nao ativa a tecla /
se tivesse uma forma dele aceitar a tecla / chr(47) resolveria rs
na realidade sao tipo CAPA e itens na caba uso o tbrowser e os itens o dbedit (NAO consegui usar o browser nos itens uma vez por isso uso o dbedit nos itens)
como sera o refrash se usar o browser ?
_fim_dbedit = .f.
do while .t.
dbedit(li,ci,lf,cf,vetor1,"_craitec_critec_ok",,cabec1,"Ä","³","Ä")
if _fim_dbedit = .t.
exit
else
keyboard chr(47) && forca tecla INS
endif
enddo
function _craitec_critec_ok && funcao p/ auxiliar a funcao ccabped_nome()
parameters modo
do case
case _lastkey == 27 && esc
clear typeahead && limpa buffer do teclado
return(0) && encerrar dbedit()
case _lastkey == 47
@ lf-1,02 clear to lf-1,78
save screen
tfornecc = space(tlenfornecc)
@ lf-1,02 say "Codigo Barras:"
@ lf-1,17 get tfornecc pict '@K!'
Wread(Njanela)
if lastkey() == 27
restore screen
else
clear gets
keyboard chr(47) && forca tecla INS
endif
return(2)
Refresh() no dbedit ?
Tente assim:
Código: Selecionar todos
nKey=0
dbedit(li,ci,lf,cf,vetor1,"_craitec_critec_ok",,cabec1,"Ä","³","Ä")
function _craitec_critec_ok && funcao p/ auxiliar a funcao ccabped_nome()
parameters modo
do case
case _lastkey == 27 && esc
clear typeahead && limpa buffer do teclado
return(0) && encerrar dbedit()
case _lastkey == 47 .or. nKey=47
@ lf-1,02 clear to lf-1,78
save screen
tfornecc = space(tlenfornecc)
@ lf-1,02 say "Codigo Barras:"
@ lf-1,17 get tfornecc pict '@K!'
Wread(Njanela)
if lastkey() == 27
nKey=0
restore screen
else
clear gets
keyboard chr(47) && forca tecla INS
nKey=47
endif
return(2)
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
-
paiva_dbdc
- Usuário Nível 3

- Mensagens: 342
- Registrado em: 12 Nov 2012 09:58
- Localização: uberlandia mg
Refresh() no dbedit ?
BOM dia
com o dbedit NAO consegui.
entao testei com o tbrowser e funcionou ai troquei o dbedit por uma funcao que emula o tbrowser
*dbedit(li+1,ci+1,lf-2,cf-1,vetor1,"_craitec_critec_ok",,cabec1,"Ä","³","Ä")
oadbedit(li+1,ci+1,lf-2,cf-1,vetor1,"_craitec_critec_ok",,cabec1,"Ä","³","Ä")
case _lastkey == 47
tfornecc = space(tlenfornecc)
@ lf-1,02 say "Codigo Barras:"
@ lf-1,17 get tfornecc pict '@K!' valid _crapedc_crapedc_co(@tfornecc ,lf-1,17,"tfornecc")
Wread(Njanela)
set cursor off
if lastkey() == 27
restore screen
else
clear typeahead
clear gets
keyboard chr(47) && forca tecla /
endif
select critec
return(2)
Obrigado a todos
PAiva
com o dbedit NAO consegui.
entao testei com o tbrowser e funcionou ai troquei o dbedit por uma funcao que emula o tbrowser
*dbedit(li+1,ci+1,lf-2,cf-1,vetor1,"_craitec_critec_ok",,cabec1,"Ä","³","Ä")
oadbedit(li+1,ci+1,lf-2,cf-1,vetor1,"_craitec_critec_ok",,cabec1,"Ä","³","Ä")
case _lastkey == 47
tfornecc = space(tlenfornecc)
@ lf-1,02 say "Codigo Barras:"
@ lf-1,17 get tfornecc pict '@K!' valid _crapedc_crapedc_co(@tfornecc ,lf-1,17,"tfornecc")
Wread(Njanela)
set cursor off
if lastkey() == 27
restore screen
else
clear typeahead
clear gets
keyboard chr(47) && forca tecla /
endif
select critec
return(2)
Obrigado a todos
PAiva
Refresh() no dbedit ?
Segue um exemplo que acho interessante sobre o DBEdit()
Código: Selecionar todos
#INCLUDE "DBEDIT.CH"
#INCLUDE "INKEY.CH"
REQUEST HB_GT_WIN_DEFAULT
Function Main()
//Local aCols := {{"PadR(AllTrim(FIRST)+' '+AllTrim(LAST),30)", {|x| IIf(FIELD->SALARY<10000, {3,2}, IIf(FIELD->SALARY<100000,{1,2},{4,5}))}},;
// "CITY",;
// "SALARY"}
Local aCols:={"name","city","salary"}
Local aVet := {{"name",'c',30,0},{"city",'c',20,0},{"salary",'n',12,2}}
SetMode(25,80)
set scoreboard off
HB_DbCreateTemp("test",aVet,'DBFNTX')
DBAppend()
test->name := "John"
test->city := "New York"
test->salary := 5000
@ maxrow(),0 say "<Ctrl-Down/Up>-Toggle columns <Space bar>-Edit cell"
DBEdit(02,01,20,78, aCols, "TstFnc",,{"Name", "City", "Salary"})
DBCloseArea()
Return Nil
Function TstFnc(nMode, nCol, oTBR)
LOCAL GetList := {},xValue
Local nRet := DE_CONT
Do Case
Case nMode == DE_INIT // EXTENSION: Initialization mode
SET DELETE ON
oTBR:colorSpec := "n/bg,w/b,r/bg,w+/bg,w+/gr"
oTBR:getColumn(1):heading := "Nome"
oTBR:getColumn(2):heading := "Cidade"
oTBR:getColumn(3):heading := "Salario"
/* coloque aqui todas as config do Tbrowse que precisar */
Case nMode == DE_HITTOP
Keyboard Chr(K_CTRL_PGDN)
Case nMode == DE_HITBOTTOM
Keyboard Chr(K_CTRL_PGUP)
Case LastKey() == K_ESC
SET DELETE OFF
nRet := DE_ABORT
Case LastKey() == K_SPACE //.And. oTBR:getColumn(nCol):heading != "Name"
SetCursor(1)
xValue := Eval(oTBR:getColumn(nCol):block)
@ Row(), Col() Get xValue //&(oTBR:getColumn(nCol):HeadIng)
Read
SetCursor(0)
test->(FieldPut(nCol,xValue))
Clear TypeAhead
oTBR:RefreshAll() //ou pode forçar
Case LastKey() == K_INS
DBAppend()
DBGoTop()
nRet := DE_REFRESH
//oTBR:RefreshAll() //ou pode forçar
Case LastKey() == K_DEL //SET DELETE ON
DBDelete()
nRet := DE_REFRESH
//oTBR:RefreshAll() //ou pode forçar
End
Return nRet


