Jump to content
Fivewin Brasil

Como posicionar o ponteiro em um listbox


reneumg

Recommended Posts

Boa tarde galera.

Estou tentando posicionar o ponteiro em uma array em um listbox e não consigo,

Deixa eu me explicar:

Tenho um Listbox assim;

REDEFINE LISTBOX oLbx ;
FIELDS aItens[ oLbx:nAt, 1 ],;
aItens[ oLbx:nAt, 2 ],;
aItens[ oLbx:nAt, 3 ],;
AllTrim(aItens[ oLbx:nAt, 4 ])+" - "+aItens[ oLbx:nAt, 5 ] ;
ID 200 OF oDlg ;
TITLE "CNPJ ou CPF", "Nome do Cliente", "Endereço", "Cidade" ;
FIELDSIZES 120, 300, 280, 200 ;
ON LEFT DBLCLICK (oReg:=oLbx:nAt, ICliente(oCursor, oCNPJCli, aItens, .f.), oLbx:SetArray( aItens ), oLbx:Refresh(),;
oCNPJCli:=aItens[ oReg, 1 ] ) ;
ON CHANGE ( oCNPJCli:=aItens[ oLbx:nAt, 1 ]) ;
COLOR CLR_BLUE
Quando eu Altero ou Incluo um cliente ou faço uma busca do cliente pelo cnpj não sei como posiciar o ponteiro no listbox.
Ex: Tenho 1000 registo ai e tenho que ir no registro 500 como faço isso.
Assim eu acho o Registro oReg:=AScan( aItens, { | a | oCNPJCli== a[ 1 ] } )
Mas como usar as funcões oLbx:SetArray( aItens ), oLbx:Refresh()
Desde ja agradeço quem puder me ajudar
Link to comment
Share on other sites

Veja o exemplo em ..\samples\combos.prg do fivewin:

// Showing the use of different styles of ComboBoxes controls

#include "FiveWin.ch"
#include "Combos.ch"

//----------------------------------------------------------------------------//

function Main()

local oDlg, oSay
local oCbx1, oCbx2, oCbx3
local cItem1, cItem2 := "One", cItem3, cItem4 := "None"

SET _3DLOOK ON

// SkinButtons()

DEFINE DIALOG oDlg RESOURCE "Combos"

REDEFINE COMBOBOX oCbx1 VAR cItem1 ITEMS { "One", "Two", "Three" } ;
ID ID_SIMPLE OF oDlg ;
ON CHANGE ( cItem4 := cItem1, oSay:Refresh() ) ;
VALID ( cItem4 := cItem1, oSay:Refresh(), .t. )

REDEFINE COMBOBOX oCbx2 VAR cItem2 ITEMS { "One", "Two", "Three" } ;
ID ID_DROPDOWN OF oDlg ;
STYLE CBS_DROPDOWN ;
ON CHANGE ( cItem4 := cItem2, oSay:Refresh() ) ;
VALID ( If( ! oCbx2:Find( oCbx2:oGet:GetText() ),;
oCbx2:Add( oCbx2:oGet:GetText() ),), .t. )

oCbx2:oGet:bKeyDown = { | nKey | SearchItem( nKey, oCbx2 ) }

REDEFINE COMBOBOX oCbx3 VAR cItem3 ITEMS { "One", "Two", "Three" } ;
ID ID_DROPDOWNLIST OF oDlg ;
ON CHANGE ( cItem4 := cItem3, oSay:Refresh() ) ;
VALID ( cItem4 := cItem3, oSay:Refresh(), .t. )

REDEFINE SAY oSay PROMPT cItem4 ID ID_SELECTION OF oDlg COLOR "R+/W"

ACTIVATE DIALOG oDlg CENTERED

return nil

//----------------------------------------------------------------------------//

function SearchItem( nKey, oCbx )

local nAt

if Len( AllTrim( oCbx:oGet:GetText() ) ) == 1
if ( nAt := AScan( oCbx:aItems, { | c | Left( c, 1 ) == AllTrim( oCbx:oGet:GetText() ) } ) ) != 0
oCbx:oGet:SetText( oCbx:aItems[ nAt ] )
return 0
endif
endif

Link to comment
Share on other sites

Eroni, obrigado por responder mas não achei ai a minha resposta.

Não sei se vc entendeu, por exemplo quando eu jogo um DBF no listbox e uso a função DBF->(DBGoTo(Reg)) e dou um :Refresh() em seguida fica lá o registro que eu quero e os que estão proximo, quero fazer isso em uma array será que isso é possivel?

Link to comment
Share on other sites

Valeu Galera, Tai uma coisa simples que eu não sabia como fazer, procurei em todos os exemplos e não achei.

Rochinha, como é que não pensei nisso antes, usava este :nAt pra saber o registro que estava mas não sabia como posicionar nele, apanhei pra kct rsrsrsrs.

Valeu mesmo, Obrigado.

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...