TBROWSE
Moderador: Moderadores
-
GilmarDalantonia
- Usuário Nível 1

- Mensagens: 44
- Registrado em: 11 Dez 2014 16:42
- Localização: Adamantina/SP
TBROWSE
Boa tarde pessoal, alguem sabe como mudar a cor do titulo dos campos e das linhas que separam as colunas no tbrowse?
consegui mudar a cor das colunas, mas linhas e cabeçalho não achei como
consegui mudar a cor das colunas, mas linhas e cabeçalho não achei como
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
TBROWSE
Só o meu Harbour faz isso.
Enviei a alteração pro oficial mas tá lá parado há anos.
Enviei a alteração pro oficial mas tá lá parado há anos.
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/
TBROWSE
Não sei se dá pra tratar disso neste mesmo tópico, mas creio que sim, pois ele é genérico sobre Tbrowse.
Gostaria de saber como faço para centralizar os dados em algumas colunas do Tbrowse. Preciso que algumas apenas estejam com os dados centralizados, os demais como já estão (alinhados à esquerda).
É possível?
Gostaria de saber como faço para centralizar os dados em algumas colunas do Tbrowse. Preciso que algumas apenas estejam com os dados centralizados, os demais como já estão (alinhados à esquerda).
É possível?
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
TBROWSE
Sobre o que mencionei, link direto:
https://github.com/harbour/core/pull/18 ... 4c5062437f
Passo a passo:
Tá lá desde março/2019, se estiver no padrão aceitável, seria só alguém clicar e confirmar o merge.
https://github.com/harbour/core/pull/18 ... 4c5062437f
Passo a passo:
Tá lá desde março/2019, se estiver no padrão aceitável, seria só alguém clicar e confirmar o merge.
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/
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
TBROWSE
Olá!
Pode usar também PadR() e PadL().
cjp escreveu:como faço para centralizar os dados em algumas colunas do Tbrowse
Código: Selecionar todos
oTBColumn := TBColumn():new( PadC( "Nome", 20 ), { || PadC( Alltrim( Tabela->nome ), 20 ) } )
oTBrowse:addColumn( oTBColumn )[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
TBROWSE
Coloquei exatamente como vc disse, e está dando o seguinte erro:
É provável que eu precisasse fazer alguma adaptação ao meu sistema, mas eu não sei como fazer isso. Pode me ajudar?
Código: Selecionar todos
Ocorreu o erro: Error BASE/1005 Nenhuma variável exportada: WIDTHInacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
TBROWSE
Não sei a que mensagem se referiu, porque não achei width em mensagem nenhuma.
Não sei se ajuda:
A mensagem de erro é quando não existe width no objeto/classe.
tipo.... campo:width, mas se olhar o objeto campo, ele não tem a propriedade width
Não sei se ajuda:
A mensagem de erro é quando não existe width no objeto/classe.
tipo.... campo:width, mas se olhar o objeto campo, ele não tem a propriedade width
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/
TBROWSE
Pois é, estranhamente, meu Tbrowse não tem nenhum width. Mas estava funcionando até agora.
Estava assim:
E eu coloquei assim:
Como faço?
Estava assim:
Código: Selecionar todos
oColumn := TBColumnNew( oRs:fields(i):name(), ADORecordSetFieldBlock( oRs, i ) )Código: Selecionar todos
oTBColumn := TBColumn():new( PadC( "Nome", 20 ), { || PadC( Alltrim( Tabela->nome ), 20 ) } )Inacio de Carvalho Neto
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
TBROWSE
Olá!
O código que postei foi apenas um exemplo genérico. Claro que se você simplesmente copiar para o teu programa vai dar erro...
Você mencionou TBROWSE e não ADO...
Tente isto:
Não sei se vai dar certo. Talvez tenha que fazer um tratamento na função ADORecordSetFieldBlock() para alinhar da forma desejada...
O código que postei foi apenas um exemplo genérico. Claro que se você simplesmente copiar para o teu programa vai dar erro...
Você mencionou TBROWSE e não ADO...
Tente isto:
Código: Selecionar todos
oColumn := TBColumnNew( PadC( Alltrim( oRs:fields(i):name() ), 20 ), { || PadC( Alltrim( Eval( ADORecordSetFieldBlock( oRs, i ) ) ), 20 ) } )[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
TBROWSE
De fato, eu não falei que era ADO porque achei que a questão era só de Tbrowse, achei que não tinha a ver com o ADO em si.
Copiei simplesmente do jeito que vc colocou, pois não soube fazer as alterações necessárias.
Fiz agora com tua última sugestão, mas também não funcionou. Deu o seguinte erro:
Estranho, porque não mudei mais nada. Esse erro normalmente dá no ADO quando tentamos usar um campo da tabela que não está no select.
Eu não saberia mudar a ADORecordSetFieldBlock, que está assim:
Copiei simplesmente do jeito que vc colocou, pois não soube fazer as alterações necessárias.
Fiz agora com tua última sugestão, mas também não funcionou. Deu o seguinte erro:
Código: Selecionar todos
Ocorreu o erro: Error WINOLE/1007 O item nÒo pode ser encontrado na coleþÒo correspondente ao nome ou ao ordinal solicitado. (0x800A0CC1): ADODB.RecordsetEu não saberia mudar a ADORecordSetFieldBlock, que está assim:
Código: Selecionar todos
FUNCTION ADORecordSetFieldBlock( oRs, i, xVal )
LOCAL bRet
IF xVal == NIL
IF oRs:eof()
bRet := { || Space( Max( oRs:Fields( i ):DefinedSize , Len( oRs:Fields( i ):name ) ) ) }
ELSE
bRet := { || oRs:Fields( i ):value }
ENDIF
ELSE
bRet := { |xVal| oRs:Fields( i ):Value := xVal }
ENDIF
RETURN bRet
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
TBROWSE
Não tem a ver com ADO.
No fórum são postados exemplos, porque tem que ajustar conforme a necessidade de cada um.
Quando você considera algo desconhecido, você simplesmente copia e cola fonte.
Isso não dá certo.
Mesmo assim, não teria explicação para o erro de Width.
O erro piorou... talvez ao invés de passar o número do campo, está passando o tamanho que está sendo usado como número do campo.
Isso não tem a ver com ADO, nem browse, e sim com programação.
Esse codeblock pra ADO está relativamente simples, serve pra ler ou gravar campo no ADO.
NÃO tem a ver diretamente com o problema, mas:
No DBF, ao pegar estrutura, temos NAME, SIZE, LEN, DEC
No ADO temos :Name, :DefinedSize, :Value (este último é o valor, o conteúdo)
No DBF temos Field( nCont ), e no ADO temos oRS:Fields( nCont )
Mas no ADO temos
oRs:Fields( nCont ):Value
oRs:Fields( nCont ):DefinedSize
oRs:Fields( nCont ):Name
Além disso, a função tem EOF(), Space(), Max(), Nil, que são coisas auto-explicativas.
A função retorna o codeblock a ser usado, ou pra ler ou pra salvar.
Se o codeblock vém pronto dessa função.... com certeza é nela que precisa mexer.
Só que aí entra passar o parâmetro de tamanho e/ou de centralizar.
E voltamos ao início do texto: o SEU uso é SEU. Tem que fazer por si próprio de acordo com o que precisa.
Postamos exemplos e você coloca diretamente em seu fonte, o que na prática é estragar seu fonte cada vez mais.
E se a função pode retornar campos numéricos, data, caractere, etc... vai precisar colocar análises sobre isso, porque pra cada tipo de campo vai ter uma solução diferente.
Bom... ou pensa nos exemplos postados, pra adequar à sua necessidade, ou vai complicar cada vez mais isso.
De repente resolve uma coisa e estraga outra, então, vai ter que saber como resolver cada situação, SEM FICAR COPIANDO/COLANDO FONTE.
No fórum são postados exemplos, porque tem que ajustar conforme a necessidade de cada um.
Quando você considera algo desconhecido, você simplesmente copia e cola fonte.
Isso não dá certo.
Mesmo assim, não teria explicação para o erro de Width.
O erro piorou... talvez ao invés de passar o número do campo, está passando o tamanho que está sendo usado como número do campo.
Isso não tem a ver com ADO, nem browse, e sim com programação.
Esse codeblock pra ADO está relativamente simples, serve pra ler ou gravar campo no ADO.
NÃO tem a ver diretamente com o problema, mas:
No DBF, ao pegar estrutura, temos NAME, SIZE, LEN, DEC
No ADO temos :Name, :DefinedSize, :Value (este último é o valor, o conteúdo)
No DBF temos Field( nCont ), e no ADO temos oRS:Fields( nCont )
Mas no ADO temos
oRs:Fields( nCont ):Value
oRs:Fields( nCont ):DefinedSize
oRs:Fields( nCont ):Name
Além disso, a função tem EOF(), Space(), Max(), Nil, que são coisas auto-explicativas.
A função retorna o codeblock a ser usado, ou pra ler ou pra salvar.
Se o codeblock vém pronto dessa função.... com certeza é nela que precisa mexer.
Só que aí entra passar o parâmetro de tamanho e/ou de centralizar.
E voltamos ao início do texto: o SEU uso é SEU. Tem que fazer por si próprio de acordo com o que precisa.
Postamos exemplos e você coloca diretamente em seu fonte, o que na prática é estragar seu fonte cada vez mais.
E se a função pode retornar campos numéricos, data, caractere, etc... vai precisar colocar análises sobre isso, porque pra cada tipo de campo vai ter uma solução diferente.
Bom... ou pensa nos exemplos postados, pra adequar à sua necessidade, ou vai complicar cada vez mais isso.
De repente resolve uma coisa e estraga outra, então, vai ter que saber como resolver cada situação, SEM FICAR COPIANDO/COLANDO FONTE.
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/
TBROWSE
De fato eu apenas copiei, porque de fato não entendo o suficiente, nem de Tbrowse, nem de codeblock. E também não entendo muito de ADO, a não ser o que vc mesmo me ensinou.
O código todo foi copiado do teu modelo, com pequenas modificações, e está funcionando muito bem. Eu só queria uma pequena alteração, apenas centralizar uns campos.
Mas vc tem razão: eu não tenho conhecimento suficiente para fazer isso sem ajuda. Então, é melhor desistir.
O código todo foi copiado do teu modelo, com pequenas modificações, e está funcionando muito bem. Eu só queria uma pequena alteração, apenas centralizar uns campos.
Mas vc tem razão: eu não tenho conhecimento suficiente para fazer isso sem ajuda. Então, é melhor desistir.
Inacio de Carvalho Neto
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
TBROWSE
Olá!
Não meu querido. Desistir? Jamais! O melhor é estudar, pesquisar, se esforçar e sentir, no final, a alegria de ver funcionar! E não se esqueça que tem vários colegas aqui, dispostos a colaborar, como sempre.cjp escreveu:Então, é melhor desistir.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
TBROWSE
Ou pior que isso... já fez isso em outro fonte, que eu me lembro.cjp escreveu:Mas vc tem razão: eu não tenho conhecimento suficiente para fazer isso sem ajuda. Então, é melhor desistir.
Só que ao invés de usar como base o que já fez, tá pegando o genérico.
oRs:Fields( 1 ):Value
Isso não retorna o valor? pode ser string, data, número, etc.
Quer a string centralizada?
Ao invés de oRs:Fields( "NOME" ):Value
Vai usar Padc( oRs:Fields( "NOME" ):Value, 20 )
Só que não a partir desse fonte genérico, no outro aonde informa cada campo.
Ou será que vai centralizar tudo que é string, tudo que é número, tudo que é data, etc?
Então não serve o genérico.
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
TBROWSE
Mas pera aí.....
Esse fonte é o que mostra tudo que vém do SELECT, exatamente como veio.
Se servir, pode apenas alterar o SELECT pra trazer tudo pronto do jeito que quer.
Esse fonte é o que mostra tudo que vém do SELECT, exatamente como veio.
Se servir, pode apenas alterar o SELECT pra trazer tudo pronto do jeito que quer.
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/
