Onde consigo a função SP_BROWSE2D ?
Moderador: Moderadores
Onde consigo a função SP_BROWSE2D ?
Olá, pessoal
Estou precisando de uma rotina genérica para matriz (tipo browse).
Vi nesse link que tem o que eu preciso porque a minha eu perdi e já fucei por todo canto e não encontrei.
https://vivaclipper.wordpress.com/2013/ ... _browse2d/
Alguém sabe onde consigo essa função ? Ou então, teria alguma função genérica que possa disponibilizar ?
Estou precisando de uma rotina genérica para matriz (tipo browse).
Vi nesse link que tem o que eu preciso porque a minha eu perdi e já fucei por todo canto e não encontrei.
https://vivaclipper.wordpress.com/2013/ ... _browse2d/
Alguém sabe onde consigo essa função ? Ou então, teria alguma função genérica que possa disponibilizar ?
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Onde consigo a função SP_BROWSE2D ?
A rotina pra array é a mesma pra DBF, o que altera são as rotinas de posicionamento.
Peguei dos fontes em Flagship, um fonte qualquer.
ToBrowse() e BrowseNavigate() é a parte genérica pra qualquer browse, e pra deixar tudo no mesmo padrão.
Pra estas, tanto faz se é dbf ou array.
O Browse do array
A configuração default, tanto faz dbf ou array
A navegação, tanto faz dbf ou array
Peguei dos fontes em Flagship, um fonte qualquer.
ToBrowse() e BrowseNavigate() é a parte genérica pra qualquer browse, e pra deixar tudo no mesmo padrão.
Pra estas, tanto faz se é dbf ou array.
O Browse do array
Código: Selecionar todos
STATIC FUNCTION MostDaT( aBrowList )
LOCAL n_lin := 4
LOCAL nkey := 0
LOCAL nBrowIndex := 1 // INDEX in the array
LOCAL oMyBrowse := TBROWSENEW (n_lin,30,n_lin+16,78) // create TBrowse object
LOCAL oTBrowse
* SetColor( cmens )
Scroll( n_lin,30,n_lin+16,78 )
oTBrowse := { ;
{ "Nota", {|| aBrowList[nBrowIndex][1]} }, ;
{ "Valor ", {|| aBrowList[nBrowIndex][2] } }, ;
{ "Emissao", {|| aBrowList[nBrowIndex][3]} }, ;
{ "Observacao ", {|| aBrowList[nBrowIndex][4] } } }
ToBrowse( oTBrowse, oMyBrowse )
oMyBrowse:SKIPBLOCK := { |input, temp| temp := nBrowIndex, ;
nBrowIndex := MAX(1, MIN(Len(aBrowList), ;
nBrowIndex + input)), nBrowIndex - temp }
DO WHILE .T.
Mensagem( " <F2 Produtos> <F4 Duplicatas> <F6 Periodo> <ESC Sair>" )
oMyBrowse:ForceStable()
DO CASE
CASE BrowseNavigate( oMyBrowse, @nKey )
CASE nkey == K_ESC // sai
Scroll( n_lin,30,n_lin+16,78 )
EXIT
CASE nKey == K_F2 // Produtos
Prodnota( aBrowList[ nBrowIndex ][ 1 ] )
oMyBrowse:refreshAll()
CASE nKey == K_F4 // Duplicatas
f_DuplCl( aBrowList[ nBrowIndex ][ 1 ] )
CASE nKey == K_F6 // Periodo
oMyBrowse:refreshAll()
ENDCASE
ENDDO
RETURN NIL
Código: Selecionar todos
FUNCTION Tobrowse( oTBrowse, oMyBrowse )
LOCAL nCont, oColumn
oMyBrowse:headsep := "-"
oMyBrowse:colsep := " "
oMyBrowse:ColorSpec := SetColTBrowse()
FOR nCont = 1 TO Len( oTBrowse )
oColumn := TBColumnNew( oTBrowse[ nCont, 1 ], oTBrowse[ nCont, 2 ] )
IF Len( oTBrowse[ nCont ] ) > 2
oColumn:ColorBlock := oTBrowse[ nCont, 3 ]
ENDIF
oMyBrowse:AddColumn( oColumn )
NEXT
RETURN NIL
Código: Selecionar todos
FUNCTION BrowseNavigate( oBrowse, nKey )
LOCAL lNavigate := .T.
hb_Default( @nKey, 0 )
DO WHILE ! oBrowse:Stable
oBrowse:Stabilize()
ENDDO
//oBrowse:RefreshCurrent()
oBrowse:ColorRect( { oBrowse:RowPos, 1, oBrowse:RowPos, oBrowse:ColCount }, { 3, 3 } ) // linha está com o cursor
oBrowse:ColorRect( { oBrowse:RowPos, oBrowse:ColPos, oBrowse:RowPos, oBrowse:ColPos }, { 2, 2 } ) // linha/coluna está com o cursor
nKey := Inkey(0)
DO CASE
CASE nKey == K_UP ; oBrowse:up()
CASE nKey == K_DOWN ; oBrowse:down()
CASE nKey == K_LEFT ; oBrowse:left()
CASE nKey == K_RIGHT ; oBrowse:right()
CASE nKey == K_HOME ; oBrowse:GoTop(); oBrowse:RefreshAll() // oBrowse:Home()
CASE nKey == K_END ; oBrowse:GoBottom(); oBrowse:RefreshAll() // oBrowse:End()
CASE nKey == K_PGUP ; oBrowse:pageup(); oBrowse:RefreshAll()
CASE nKey == K_PGDN ; oBrowse:pagedown(); oBrowse:RefreshAll()
CASE nKey == K_CTRL_PGUP ; oBrowse:gotop(); oBrowse:RefreshAll()
CASE nKey == K_CTRL_PGDN ; oBrowse:gobottom(); oBrowse:RefreshAll()
CASE nKey == K_CTRL_HOME ; oBrowse:panhome()
CASE nKey == K_CTRL_END ; oBrowse:panend()
CASE nKey == K_CTRL_LEFT ; oBrowse:panleft()
CASE nKey == K_CTRL_RIGHT ; oBrowse:panright()
OTHERWISE
lNavigate := .F.
ENDCASE
oBrowse:RefreshCurrent()
DO WHILE ! oBrowse:Stable
oBrowse:Stabilize()
ENDDO
oBrowse:ColorRect( { oBrowse:RowPos, 1, oBrowse:RowPos, oBrowse:ColCount }, { 3, 3 } ) // linha está com o cursor
oBrowse:ColorRect( { oBrowse:RowPos, oBrowse:ColPos, oBrowse:RowPos, oBrowse:ColPos }, { 2, 2 } ) // linha/coluna está com o cursor
RETURN lNavigate
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Onde consigo a função SP_BROWSE2D ?
SetColTBrowse() é a lista de cores a serem usadas. Deixo assim pra ficar default pra tudo, ou poder alterar tudo num lugar só.
Código: Selecionar todos
FUNCTION SetColTBrowse(); RETURN "W/B," + SetColFocus() + ",W/N*,W/BG,W/RB"
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Onde consigo a função SP_BROWSE2D ?
Só agora olhei o link.
Se for usar pra directory() como menciona lá, só definir as colunas:
Se for usar pra directory() como menciona lá, só definir as colunas:
Código: Selecionar todos
oTBrowse := { ;
{ "Nome", {|| aBrowList[nBrowIndex][F_NAME]} }, ;
{ "Tamanho", {|| aBrowList[nBrowIndex][F_SIZE] } }, ;
{ "Data", {|| aBrowList[nBrowIndex][F_DATE]} }, ;
{ "Hora ", {|| aBrowList[nBrowIndex][F_TIME] } } }
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/
Onde consigo a função SP_BROWSE2D ?
Obrigado Quintas
Eu já tinha começado a fazer aqui baseado em um exemplo do Toledo, que eu achei aqui nos meus CDs, quando vi a sua resposta.
Vou aproveitar as duas rotinas e criar uma classe aproveitando o que há de melhor.
Valeu
Eu já tinha começado a fazer aqui baseado em um exemplo do Toledo, que eu achei aqui nos meus CDs, quando vi a sua resposta.
Vou aproveitar as duas rotinas e criar uma classe aproveitando o que há de melhor.
Valeu
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Onde consigo a função SP_BROWSE2D ?
Só um comentário a mais:
Existe diferença sobre a otimização: dá pra fazer otimização somente se alguma coisa não depender de atualizar posicionamento.
Exemplo:
Digita 10 vezes PGUP... o tbrowse pode ser otimizado, evitando ficar atualizando toda tela 10 vezes.
Mas precisa tomar cuidado pra não estar posicionado errado se durante essa atualização atualiza outra parte da tela, ou obrigatoriamente atualizar ao teclar ENTER.
Até por isso acabei não otimizando ao máximo esse tbrowse que mostrei.
No meu aplicativo "oficial" acabo tendo duas rotinas diferentes: uma com otimização pra onde é só consulta, e outra pra quando tem digitação durante o tbrowse.
Como disse que vai criar uma pra uso mais genérico, é bom levar isso em conta.
Existe diferença sobre a otimização: dá pra fazer otimização somente se alguma coisa não depender de atualizar posicionamento.
Exemplo:
Digita 10 vezes PGUP... o tbrowse pode ser otimizado, evitando ficar atualizando toda tela 10 vezes.
Mas precisa tomar cuidado pra não estar posicionado errado se durante essa atualização atualiza outra parte da tela, ou obrigatoriamente atualizar ao teclar ENTER.
Até por isso acabei não otimizando ao máximo esse tbrowse que mostrei.
No meu aplicativo "oficial" acabo tendo duas rotinas diferentes: uma com otimização pra onde é só consulta, e outra pra quando tem digitação durante o tbrowse.
Como disse que vai criar uma pra uso mais genérico, é bom levar isso em conta.
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/
-
Paredes01
- Usuário Nível 2

- Mensagens: 52
- Registrado em: 20 Mai 2012 11:22
- Localização: Mérida, Yucatán, México
Onde consigo a função SP_BROWSE2D ?
Es de la librería
super.lib
Saludos!
super.lib
De esta forma utilizo:BROWSE2D()
Short:
------
BROWSE2D() Popup tbrowse of 2 dimension array (array of arrays)
Returns:
--------
<nSelection> => selected item, 0 if none
Syntax:
-------
BROWSE2D(nTop,nLeft,nBottom,nRight,aArr,[aHead],[cColor],;
[cTitle],[bExcept])
Description:
------------
Pops up a box at <nTop,nLeft,nBottom,nRight> and
tbrowses array contained in <aArr>.
<aArr> must be a 2 dimensioned array, like the ones
returned from DIRECTORY() or DBSTRUCT().
i.e. { array(n),array(n),array(n) } where <n> is the
same length for each subarray.
[aHead] an array of column headers matching the
number of elements in a single subarray of <aArr>. Default is
none.
[cColor] popup box color. Default is sls_popcol()
[cTitle] title string for the box. Default is none.
[bExcept] is a codeblock that will be evaluated for
any exception keys - any keys other than up/ down/ right/ left/
pgup/ pgdn/ home/ end/ enter/ esc. [bExcept] will be passed the
parameters: key value, tbrowse object, element
Examples:
---------
proc test
local a := directory()
browse2d(5,5,20,40,a, ;
{"File","Size","Date","Time","Attribute"},,"Choose a File")
use customer
a := dbstruct()
browse2d(5,5,20,40,a,nil,nil,nil,;
{|k|msg(str(k)+" is not a valid key")})
// note the exception block
Código: Selecionar todos
aCodi:= {}
nArea := Select()
DBSelectArea("Det001")
nOrder = IndexOrd()
DBSetOrder(3)
DBSeek(COD)
If Found()
DO WHILE AT( (COD), Det001->EAN) > 0 .AND. !Eof()
If Year(Date()) - Year(Det001->FECHA) <= 0
AADD(aCodi, { Det001->Traspaso ,;
Det001->Fecha ,;
Det001->EAN ,;
Det001->Lote1 ,;
Det001->Fecha1 ,;
Det001->Labo1 ,;
Det001->Id_Prod })
Endif
DBSelectArea("DET001")
DBSkip()
Enddo
If Len(aCodi) > 0
ASort(aCodi,,,{ |X,Y| X[2] > Y[2] })
Si_Codi = .t.
Endif
Endif
DBSetOrder(nOrder)
Select(nArea)
If Si_Codi
nSelection := BROWSE2D( 4, 2,15,78,aCodi,{"TRASPASO","FECHA","EAN","LOTE","FEC CAD","LABORATORIO","ID"},,"TRASPASOS" )
// si teclea esc no hace nada
If nSelection > 0
cEAN := aCodi[nSelection,3]
cLote1 := aCodi[nSelection,4]
dFecha1 := aCodi[nSelection,5]
cLabo1 := aCodi[nSelection,6]
COD := aCodi[nSelection,7]
Endif
Endif
Editado pela última vez por JoséQuintas em 27 Ago 2019 04:14, em um total de 2 vezes.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Onde consigo a função SP_BROWSE2D ?
hazael, obrigado pelo exemplo, vou ver depois.
Paredes01, eu tenho a superlib aqui mas essa função não está inclusa, se vc puder mandar o código eu agradeço
Pessoal, eu fiz uma classe baseada em exemplos e dicas que colhi aqui no fórum e na pasta samples do velho Clipper.
Segue em anexo (não está concluida, falta as pictures, mas já da para usar)
Uma dúvida que tenho é como fazer a classe pegar as colunas automaticamente. Eu fiz mas não gostei (segue o trecho)
O ideal seria uma solução como a seguir, mas não funciona
Alguma dica ?
Valeu
Paredes01, eu tenho a superlib aqui mas essa função não está inclusa, se vc puder mandar o código eu agradeço
Pessoal, eu fiz uma classe baseada em exemplos e dicas que colhi aqui no fórum e na pasta samples do velho Clipper.
Segue em anexo (não está concluida, falta as pictures, mas já da para usar)
Uma dúvida que tenho é como fazer a classe pegar as colunas automaticamente. Eu fiz mas não gostei (segue o trecho)
Código: Selecionar todos
// Aqui foi a solução que eu encontrei (um laço com o case para evitar mandar a variável)
FOR nCont = 1 TO Len( ::aCaption )
DO CASE
CASE nCont == 1
oColumn := TBColumnNew( ::aCaption[ 1 ], {||::aMatrix[ nBrowIndex ][ 1 ] } )
CASE nCont == 2
oColumn := TBColumnNew( ::aCaption[ 2 ], {||::aMatrix[ nBrowIndex ][ 2 ] } )
CASE nCont == 3
oColumn := TBColumnNew( ::aCaption[ 3 ], {||::aMatrix[ nBrowIndex ][ 3 ] } )
CASE nCont == 4
oColumn := TBColumnNew( ::aCaption[ 4 ], {||::aMatrix[ nBrowIndex ][ 4 ] } )
CASE nCont == 5
oColumn := TBColumnNew( ::aCaption[ 5 ], {||::aMatrix[ nBrowIndex ][ 5 ] } )
CASE nCont == 6
oColumn := TBColumnNew( ::aCaption[ 6 ], {||::aMatrix[ nBrowIndex ][ 6 ] } )
ENDCASE
//oColumn := TBColumnNew( ::aCaption[ nCont ], {||::aMatrix[ nBrowIndex ][ nCont ] } ) <<<<<<< Aqui seria a solução ideal mas não funciona
::oBrw:AddColumn( oColumn )
NEXT
Código: Selecionar todos
FOR nCont = 1 TO Len( ::aCaption )
oColumn := TBColumnNew( ::aCaption[ nCont ], {||::aMatrix[ nBrowIndex ][ nCont ] } ) <<<<<<< Aqui seria a solução ideal mas não funciona
::oBrw:AddColumn( oColumn )
NEXT
Valeu
- Anexos
-
tbrw2.prg- (7.22 KiB) Baixado 169 vezes
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Onde consigo a função SP_BROWSE2D ?
Código: Selecionar todos
//oColumn := TBColumnNew( ::aCaption[ nCont ], {||::aMatrix[ nBrowIndex ][ nCont ] } ) <<<<<<< Aqui seria a solução ideal mas não funciona
Sugestão? já foi dada, reveja o que postei.
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/
Onde consigo a função SP_BROWSE2D ?
Quintas, dá uma olhada na documentação do SP_Browse2D que foi postada pelo colega
Basicamente eu passo dois arrays: o primeiro com a matriz de dados e o segundo com a matriz com os titulos das colunas.
O código que você postou eu posso ter entendido errado, mas me pareceu que eu tenho que detalhar o índice de cada coluna de dados.
Daria pra vc postar como chamar a sua rotina de forma semelhante a SP_Browse2D ?
Não precisa detalhar o seu código, basta fazer de conta que ele é uma caixa preta e botar um exemplo de uso.
Por exemplo, eu tenho um array de cabeçalho (títulos)
aCaption := { "Nome" , "Salário" }
aSalary := { { "João" , 2000 } , { "Maria" , 2000 } }
Como eu passo esses parâmetros para o seu código mais ou menos como a SP_Browse2D ?
Foi esse o meu segundo questionamento, porque eu até consegui o mesmo resultado com a classe que eu criei, mas eu fiquei aqui pensando se não daria para tornar ela melhor.
Mas o problema em si já foi resolvido, muito obrigado a todos pela ajuda.
Código: Selecionar todos
local a := directory()
browse2d(5,5,20,40,a, ;
{"File","Size","Date","Time","Attribute"},,"Choose a File")
O código que você postou eu posso ter entendido errado, mas me pareceu que eu tenho que detalhar o índice de cada coluna de dados.
Daria pra vc postar como chamar a sua rotina de forma semelhante a SP_Browse2D ?
Não precisa detalhar o seu código, basta fazer de conta que ele é uma caixa preta e botar um exemplo de uso.
Por exemplo, eu tenho um array de cabeçalho (títulos)
aCaption := { "Nome" , "Salário" }
aSalary := { { "João" , 2000 } , { "Maria" , 2000 } }
Como eu passo esses parâmetros para o seu código mais ou menos como a SP_Browse2D ?
Foi esse o meu segundo questionamento, porque eu até consegui o mesmo resultado com a classe que eu criei, mas eu fiquei aqui pensando se não daria para tornar ela melhor.
Mas o problema em si já foi resolvido, muito obrigado a todos pela ajuda.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Onde consigo a função SP_BROWSE2D ?
Recapitulando o que postei:Vlademiro escreveu: Por exemplo, eu tenho um array de cabeçalho (títulos)
aCaption := { "Nome" , "Salário" }
aSalary := { { "João" , 2000 } , { "Maria" , 2000 } }
Como eu passo esses parâmetros para o seu código mais ou menos como a SP_Browse2D ?
Código: Selecionar todos
oTBrowse := { ;
{ "Nome", {|| aBrowList[nBrowIndex][F_NAME]} }, ;
{ "Tamanho", {|| aBrowList[nBrowIndex][F_SIZE] } }, ;
{ "Data", {|| aBrowList[nBrowIndex][F_DATE]} }, ;
{ "Hora ", {|| aBrowList[nBrowIndex][F_TIME] } } }
Código: Selecionar todos
aCaption := { "Nome" , "Salário" }
aSalary := { { "João" , 2000 } , { "Maria" , 2000 } }
oTBrowse := { ;
{ "Nome", { || aSalary[ nBrowIndex, 1 ] }, ; // ou aCaption[ 1 ] ao invés de "Nome"
{ "Salario", { || aSalary[ nBrowIndex, 2 ] } } // ou aCaption[ 2 ] ao invés de "Salario"
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Onde consigo a função SP_BROWSE2D ?
ok, por causa de aBrowList ser parâmetro, achou que era função de uso geral.
Trata-se de um módulo, e não de uma função.
Considere que FUNCTION MostDat( aBrowList) é Main(), seria o seu módulo.
e aBrowList seria o equivalente ao seu array aSalary.
As outras duas funções sim, são de uso geral.
Trata-se de um módulo, e não de uma função.
Considere que FUNCTION MostDat( aBrowList) é Main(), seria o seu módulo.
e aBrowList seria o equivalente ao seu array aSalary.
As outras duas funções sim, são de uso geral.
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/
