Jump to content
Fivewin Brasil

DBEDIT X ListBox


aldreks

Recommended Posts

Amigos, bom dia!

1) Como fazemos para diante de uma Listbox, ao clicarmos duas vezes numa linha (registro), a listbox seja fechada, e o código (por exemplo) do registro selecionado seja carregado no GET em espera, em foco, do diálogo anterior? (quem usava o DBEDIT do Clipper para fazer Zoom sensitive ao campo, sabe do q estou falando)

2) Como fazemos para alterar dados dos campos numa listbox?

(como fazíamos no DBEDIT)

3) Caso isso não seja possível numa Listbox, ou seja muito trabalhoso, pelo fato de existir uma outra ferramenta para isto, por favor, qual é a ferramenta correta pra isso? Ou em ambiente Windows isso não convém, não prático, não é seguro?

4) Eu entendo, é o q dá a entender, q a Listbox é a sucessora do DBEDIT, para o FW.

Aguardo ajuda dos profissionais e amigos de plantão!

-------------------------

qadoshy@hotmail.com

Clipper 5.2e/BLinker7/FW

"Sábio é aquele que ensina para saber mais. (Desconhecido)"

Link to comment
Share on other sites

Bom dia (Aldreks?)

Eu utilizava muito o dbedit dentro dos parâmetros que o nobre colega expos.

Dentro dos meus conhecimentos, encontrei somente uma solução, se houver outra espero que alguem nos informe.

Aí vai:

*******************************************

function altdescr && descri‡ao individual

*******************************************

local oDlg

local oLbx

local aHBitMaps:= { ReadBitmap( 0, "Level1.bmp" ), ; // BitMaps de 14 x 32

ReadBitmap( 0, "Level2.bmp" ), ;

ReadBitmap( 0, "Level3.bmp" ), ;

ReadBitmap( 0, "Level4.bmp" ),;

ReadBitmap( 0, "Level5.bmp" ) }

local nome_get:=space(40)

if dr3='X'

noaut()

return .f.

endif

use drprodt

if ! neterr()

set inde to codbar,drprodt,descric,laborat,indipro,simpro

else

beep(3)

msginfo('Arquivo não Disponível (Drprodt)','Atenção')

close all

return nil

endif

set order to 3

GO top

DEFINE DIALOG oDlg FROM 08,11 TO 31,87 TITLE "Manutenção de Produtos"

@0,1 SAY " &Alteração de descrição de Produtos" OF oDlg color('r+/w')

@1,1 LISTBOX oLbx FIELDS drprodt->descric,drprodt->(str(valvend,10,2)),drprodt->(str(grupo,3)),drprodt->nomlabo,drprodt->nomepro,drprodt->classif,drprodt->(str(codprod,6)),drprodt->codbar HEADERS "Descrição do Produto","Preço de venda","Grupo","Fabricante","Setor","Apresentação", "Códpro","CódBarras" FIELDSIZES 260,120,45,120,120,45,60 SIZE 284,137 OF oDlg

@155,005 DBUTTON "&1-Altera" FILE "...\EDIT2.BMP" OF oDlg ACTION altedpro(oLbx,.f.) SIZE 43,13

@155,130 DBUTTON "&2-Busca" FILE "...\FIND2.BMP" OF oDlg ACTION buscdpro(oLbx) SIZE 43, 13

@155,250 DBUTTON "&3-Cancela" FILE "...\DBSALIR.BMP" OF oDlg ACTION oDlg:End() SIZE 45,13

ACTIVATE DIALOG oDlg

CLOSE ALL

AEval( aHBitmaps, { | hBmp | DeleteObject( hBmp ) } )

*********************************

function altedpro(olbx)

*********************************

local odlg

local lSave := .f.

local nOldRec := RecNo()

lAppend := .f.

prod_nom:=drprodt->descric+space(6)

DEFINE DIALOG oDlg FROM 28,15 TO 33,83 TITLE If( lAppend, "", "Alteração de Descrição de Produtos")

@00,06 say 'Descrição' of odlg

@00,11 GET prod_nom OF oDlg picture "@!"

@02,09 BUTTON "&1-Confirma"OF oDlg SIZE 50,12 ACTION (lSave:=.t.,oDlg:End())

@02,22 BUTTON "&2-Cancela" OF oDlg SIZE 50,12 ACTION oDlg:End()

ACTIVATE DIALOG odlg

if lSave .and. !empty(prod_nom)

RLOCK()

drprodt->descric :=prod_nom

skip

oLbx:Refresh() // We want the ListBox to be repainted

endif

return .t.

Espero que sirva como ajuda

Abraços.

Paulo

Link to comment
Share on other sites

Prezado Amigo Paulo, bom dia!

Grato por sua gentileza e presteza! Vou compreender como funciona seu código, e lhe darei retorno com certeza.

Lhe agradeço desde já.

***********

citação:

Bom dia (Aldreks?)

Eu utilizava muito o dbedit dentro dos parâmetros que o nobre colega expos.

Dentro dos meus conhecimentos, encontrei somente uma solução, se houver outra espero que alguem nos informe.

Aí vai:

*******************************************

function altdescr && descri‡ao individual

*******************************************

local oDlg

local oLbx

local aHBitMaps:= { ReadBitmap( 0, "Level1.bmp" ), ; // BitMaps de 14 x 32

ReadBitmap( 0, "Level2.bmp" ), ;

ReadBitmap( 0, "Level3.bmp" ), ;

ReadBitmap( 0, "Level4.bmp" ),;

ReadBitmap( 0, "Level5.bmp" ) }

local nome_get:=space(40)

if dr3='X'

noaut()

return .f.

endif

use drprodt

if ! neterr()

set inde to codbar,drprodt,descric,laborat,indipro,simpro

else

beep(3)

msginfo('Arquivo não Disponível (Drprodt)','Atenção')

close all

return nil

endif

set order to 3

GO top

DEFINE DIALOG oDlg FROM 08,11 TO 31,87 TITLE "Manutenção de Produtos"

@0,1 SAY " &Alteração de descrição de Produtos" OF oDlg color('r+/w')

@1,1 LISTBOX oLbx FIELDS drprodt->descric,drprodt->(str(valvend,10,2)),drprodt->(str(grupo,3)),drprodt->nomlabo,drprodt->nomepro,drprodt->classif,drprodt->(str(codprod,6)),drprodt->codbar HEADERS "Descrição do Produto","Preço de venda","Grupo","Fabricante","Setor","Apresentação", "Códpro","CódBarras" FIELDSIZES 260,120,45,120,120,45,60 SIZE 284,137 OF oDlg

@155,005 DBUTTON "&1-Altera" FILE "...\EDIT2.BMP" OF oDlg ACTION altedpro(oLbx,.f.) SIZE 43,13

@155,130 DBUTTON "&2-Busca" FILE "...\FIND2.BMP" OF oDlg ACTION buscdpro(oLbx) SIZE 43, 13

@155,250 DBUTTON "&3-Cancela" FILE "...\DBSALIR.BMP" OF oDlg ACTION oDlg:End() SIZE 45,13

ACTIVATE DIALOG oDlg

CLOSE ALL

AEval( aHBitmaps, { | hBmp | DeleteObject( hBmp ) } )

*********************************

function altedpro(olbx)

*********************************

local odlg

local lSave := .f.

local nOldRec := RecNo()

lAppend := .f.

prod_nom:=drprodt->descric+space(6)

DEFINE DIALOG oDlg FROM 28,15 TO 33,83 TITLE If( lAppend, "", "Alteração de Descrição de Produtos")

@00,06 say 'Descrição' of odlg

@00,11 GET prod_nom OF oDlg picture "@!"

@02,09 BUTTON "&1-Confirma"OF oDlg SIZE 50,12 ACTION (lSave:=.t.,oDlg:End())

@02,22 BUTTON "&2-Cancela" OF oDlg SIZE 50,12 ACTION oDlg:End()

ACTIVATE DIALOG odlg

if lSave .and. !empty(prod_nom)

RLOCK()

drprodt->descric :=prod_nom

skip

oLbx:Refresh() // We want the ListBox to be repainted

endif

return .t.

Espero que sirva como ajuda

Abraços.

Paulo


id=quote>id=quote>

-------------------------

qadoshy@hotmail.com

Clipper 5.2e/BLinker7/FW

"Sábio é aquele que ensina para saber mais. (Desconhecido)"

Link to comment
Share on other sites

VC CONHECE A FUNCAO BROWSE DO FIVEWIN , USANDO O WORKSHOP , VOU PASSAR UMA ROTINA NESTE PADRAO SE INTERESSAR OU SERVIR

Redefine Browse oBrw id 22 of oDial;

Color CLR_BLACK,RGB(255,255,235);

Font fonte;

alias 'ARRAY'

oBrw:SetArray( aPagto )

oBrw:nClrForeHead := CLR_HRED

oBrw:nClrBackHead := CLR_HGRAY

// oBrw:lNoHScroll :=.t.

oBrw:nAdjColumn := 6

oBrw:bKeyDown:={ |nKey| altCelula(nKey,oBrw,oBrw:nAt) }

Add Column to Browse oBrw Data strz(oBrw:nAt,2);

Header '' size 20 Color CLR_BLACK,CLR_HGRAY

Add Column to Browse oBrw Data Array elem 4;

Header 'Condicao' size 70

Add Column to Browse oBrw Data Array elem 2;

Header 'Doc' size 30 Picture '@!'

Add Column to Browse oBrw Data Array elem 1;

Header 'Vencimento' size 80

Add Column to Browse oBrw Data Array elem 3;

Header 'Valor' size 80 Picture '@ZE 99999.99' right

Add Column to Browse oBrw Data Array elem 6;

Header 'Observacao' size 200

Function altCelula( nKey,oBrw,itLinha )

//

//

// Alteracao Celula do Browse de Aplicacao de Taxa de Juros.

//

//

Local aTip:=aPagto[itLinha,2],;

aVct:=aPagto[itLinha,1],;

aVlr:=aPagto[itLinha,3],;

aObs:=aPagto[itLinha,6]

Define Font oFx name 'arial' size 0,-12

activate Font oFx

if nKey==K_ENTER

oBrw:lEditCol(oBrw:nColPos+2,@aTip,,,CLR_WHITE,CLR_BLUE)

aPagto[itLinha,2]:=UPPER(aTip)

oBrw:refresh()

oBrw:lEditCol(oBrw:nColPos+3,@aVct,,,CLR_WHITE,CLR_BLUE)

aPagto[itLinha,1]:=aVct

oBrw:refresh()

oBrw:lEditCol(oBrw:nColPos+4,@aVlr,'@ZE 999,999.99',,CLR_WHITE,CLR_BLUE)

aPagto[itLinha,3]:=aVlr

oBrw:refresh()

oBrw:lEditCol(oBrw:nColPos+5,@aObs,'@!',,CLR_WHITE,CLR_BLUE)

aPagto[itLinha,6]:=aObs

oBrw:refresh()

verValorPar(itLinha,aVlr)

oBrw:goDown()

endif

oBrw:refresh()

Return (.t.)

ESTA ROTINA ALTERA UM MATRIZ, PARA BANCO É SO FAZER ALGUMAS MODIFICACOES E NA FUNCAO ALTCELULA VC TRATA OS EVENTOS COMO EXCLUI A LINHA DO BROWSE, OU QUALQUER EVENTO COM O TECLADO Q. QUEIRA, COMO CHARMA OUTRA TELA ETC...

Editado por - adilson on 07/05/2005 11:18:53

Link to comment
Share on other sites

Prezado Adilson, valeu sua ajuda. Eu ainda não utilizo o Workshop (infelizmente), mas tentarei adaptar seu código a codificação manual.

Não conheço a função Browse do FW. Só utilizei até agora a Listbox. Talvez seja uma boa hora de dar uma olhada nela, e vê se dá para decolar.

Abraços prezado amigo.

********

citação:

VC CONHECE A FUNCAO BROWSE DO FIVEWIN , USANDO O WORKSHOP , VOU PASSAR UMA ROTINA NESTE PADRAO SE INTERESSAR OU SERVIR

Redefine Browse oBrw id 22 of oDial;

Color CLR_BLACK,RGB(255,255,235);

Font fonte;

alias 'ARRAY'

oBrw:SetArray( aPagto )

oBrw:nClrForeHead := CLR_HRED

oBrw:nClrBackHead := CLR_HGRAY

// oBrw:lNoHScroll :=.t.

oBrw:nAdjColumn := 6

oBrw:bKeyDown:={ |nKey| altCelula(nKey,oBrw,oBrw:nAt) }

Add Column to Browse oBrw Data strz(oBrw:nAt,2);

Header '' size 20 Color CLR_BLACK,CLR_HGRAY

Add Column to Browse oBrw Data Array elem 4;

Header 'Condicao' size 70

Add Column to Browse oBrw Data Array elem 2;

Header 'Doc' size 30 Picture '@!'

Add Column to Browse oBrw Data Array elem 1;

Header 'Vencimento' size 80

Add Column to Browse oBrw Data Array elem 3;

Header 'Valor' size 80 Picture '@ZE 99999.99' right

Add Column to Browse oBrw Data Array elem 6;

Header 'Observacao' size 200

Function altCelula( nKey,oBrw,itLinha )

//

//

// Alteracao Celula do Browse de Aplicacao de Taxa de Juros.

//

//

Local aTip:=aPagto[itLinha,2],;

aVct:=aPagto[itLinha,1],;

aVlr:=aPagto[itLinha,3],;

aObs:=aPagto[itLinha,6]

Define Font oFx name 'arial' size 0,-12

activate Font oFx

if nKey==K_ENTER

oBrw:lEditCol(oBrw:nColPos+2,@aTip,,,CLR_WHITE,CLR_BLUE)

aPagto[itLinha,2]:=UPPER(aTip)

oBrw:refresh()

oBrw:lEditCol(oBrw:nColPos+3,@aVct,,,CLR_WHITE,CLR_BLUE)

aPagto[itLinha,1]:=aVct

oBrw:refresh()

oBrw:lEditCol(oBrw:nColPos+4,@aVlr,'@ZE 999,999.99',,CLR_WHITE,CLR_BLUE)

aPagto[itLinha,3]:=aVlr

oBrw:refresh()

oBrw:lEditCol(oBrw:nColPos+5,@aObs,'@!',,CLR_WHITE,CLR_BLUE)

aPagto[itLinha,6]:=aObs

oBrw:refresh()

verValorPar(itLinha,aVlr)

oBrw:goDown()

endif

oBrw:refresh()

Return (.t.)

ESTA ROTINA ALTERA UM MATRIZ, PARA BANCO É SO FAZER ALGUMAS MODIFICACOES E NA FUNCAO ALTCELULA VC TRATA OS EVENTOS COMO EXCLUI A LINHA DO BROWSE, OU QUALQUER EVENTO COM O TECLADO Q. QUEIRA, COMO CHARMA OUTRA TELA ETC...

Editado por - adilson on 07/05/2005 11:18:53


id=quote>id=quote>

-------------------------

qadoshy@hotmail.com

Clipper 5.2e/BLinker7/FW

"Sábio é aquele que ensina para saber mais. (Desconhecido)"

Link to comment
Share on other sites

  • 7 years later...

Da para fazer listbox editavel sim igual ao dbedit, se ainda necessitar posso te enviar um exemplo.

Obrigado.

Evaldo Wagner

FiveWin9.07 xHarbour 1.21,BCC55, Pelles C xDev,xHarbour for Linux(console)

evaldowl@hotmail.com

Editado por - eevaldo on 16/05/2012 18:58:04

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...