Página 1 de 1
Refresh() no dbedit ?
Enviado: 30 Mai 2020 09:26
por paiva_dbdc
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
Refresh() no dbedit ?
Enviado: 30 Mai 2020 10:31
por Vlademiro
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
Código: Selecionar todos
Do while .t.
Bla bla
Dbedit ()
If lastkey = esc
Sai
Endif
Enddo
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.
Refresh() no dbedit ?
Enviado: 30 Mai 2020 13:00
por JoséQuintas
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
Refresh() no dbedit ?
Enviado: 30 Mai 2020 14:35
por Itamar M. Lins Jr.
Ola!
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 )
Copiar (dbedit.prg) do \src\rtl\dbedit.prg e colar ai no seu programa com o nome MyDbEdit() por exemplo e seja feliz!
Sauda
Refresh() no dbedit ?
Enviado: 30 Mai 2020 14:54
por Itamar M. Lins Jr.
Ola!
Parece que nem precisa.
...&xUserFunc( nMode, oBrowse:colPos )
A função do usuário do dbedit vem com dois parâmetros ?
Basta pedir o refresh() pela função.
Saudações,
Itamar M. Lins Jr.
Refresh() no dbedit ?
Enviado: 30 Mai 2020 19:05
por ANDRIL
paiva_dbdc escreveu:Teria como atualizar o dbedit ?!
Uso bastante DbEdit nos meus sistemas, faço a busca pelo produto e insiro no pedido em seguida:
O item aparece na ultima linha do Dbedit normalmente não preciso sair dele com return 0 e entrar novamente.
Agora 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.
Refresh() no dbedit ?
Enviado: 30 Mai 2020 19:30
por JoséQuintas
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
Refresh() no dbedit ?
Enviado: 31 Mai 2020 12:37
por Vlademiro
Bom saber. Tem coisa do tempo do Clipper que eu desconheço.
Refresh() no dbedit ?
Enviado: 31 Mai 2020 21:32
por paiva_dbdc
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)
Refresh() no dbedit ?
Enviado: 01 Jun 2020 01:08
por ANDRIL
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)
Refresh() no dbedit ?
Enviado: 01 Jun 2020 08:55
por paiva_dbdc
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
Refresh() no dbedit ?
Enviado: 03 Jun 2020 13:55
por jmsilva
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