Clipper On Line • Ver Tópico - TBROWSE

TBROWSE

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

TBROWSE

Mensagempor GilmarDalantonia » 25 Nov 2020 14:10

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
GilmarDalantonia
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 44
Data de registro: 11 Dez 2014 15:42
Cidade/Estado: Adamantina/SP
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

TBROWSE

Mensagempor JoséQuintas » 25 Nov 2020 15:44

Só o meu Harbour faz isso.
Enviei a alteração pro oficial mas tá lá parado há anos.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

TBROWSE

Mensagempor cjp » 29 Dez 2020 15:19

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?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

TBROWSE

Mensagempor JoséQuintas » 29 Dez 2020 21:00

Sobre o que mencionei, link direto:

https://github.com/harbour/core/pull/185/commits/18fa3c79c134bc17f97b2344decad74c5062437f

Passo a passo:

pull1.png


pull2.png


pull3.png


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, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

TBROWSE

Mensagempor alxsts » 31 Dez 2020 02:41

Olá!
cjp escreveu:como faço para centralizar os dados em algumas colunas do Tbrowse

oTBColumn   := TBColumn():new( PadC( "Nome", 20 ), { || PadC( Alltrim( Tabela->nome ), 20 ) } )
oTBrowse:addColumn( oTBColumn )

Pode usar também PadR() e PadL().
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

TBROWSE

Mensagempor cjp » 02 Jan 2021 16:56

Coloquei exatamente como vc disse, e está dando o seguinte erro:

Ocorreu o erro: Error BASE/1005  Nenhuma variável exportada: WIDTH


É provável que eu precisasse fazer alguma adaptação ao meu sistema, mas eu não sei como fazer isso. Pode me ajudar?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

TBROWSE

Mensagempor JoséQuintas » 02 Jan 2021 18:00

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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

TBROWSE

Mensagempor cjp » 02 Jan 2021 23:02

Pois é, estranhamente, meu Tbrowse não tem nenhum width. Mas estava funcionando até agora.

Estava assim:

                oColumn       := TBColumnNew( oRs:fields(i):name(), ADORecordSetFieldBlock( oRs, i ) )


E eu coloquei assim:

                oTBColumn   := TBColumn():new( PadC( "Nome", 20 ), { || PadC( Alltrim( Tabela->nome ), 20 ) } )


Como faço?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

TBROWSE

Mensagempor alxsts » 03 Jan 2021 03:17

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:
oColumn := TBColumnNew( PadC( Alltrim( oRs:fields(i):name() ), 20 ), { || PadC( Alltrim( Eval( ADORecordSetFieldBlock( oRs, i ) ) ), 20 ) } )


Não sei se vai dar certo. Talvez tenha que fazer um tratamento na função ADORecordSetFieldBlock() para alinhar da forma desejada...
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

TBROWSE

Mensagempor cjp » 03 Jan 2021 09:22

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:

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


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:

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
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

TBROWSE

Mensagempor JoséQuintas » 03 Jan 2021 14:37

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

TBROWSE

Mensagempor cjp » 03 Jan 2021 21:00

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.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

TBROWSE

Mensagempor alxsts » 03 Jan 2021 22:17

Olá!
cjp escreveu:Então, é melhor desistir.

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.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

TBROWSE

Mensagempor JoséQuintas » 03 Jan 2021 22:27

cjp escreveu:Mas vc tem razão: eu não tenho conhecimento suficiente para fazer isso sem ajuda. Então, é melhor desistir.


Ou pior que isso... já fez isso em outro fonte, que eu me lembro.
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, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

TBROWSE

Mensagempor JoséQuintas » 03 Jan 2021 22:34

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro