Fórum Como mudar o valor dos dados de uma coluna no DBGrid #192717

04/11/2003

0

Olá!
Tenho um DBGrid que mostra o resultado de uma tabela em Oracle.
Esta tabela é de cadastro de usuários.
Sendo que gostaria de colocar uma máscara para mostrar na coluna ´tipo de acesso´, em vez de ´A´ ou ´U´, mostrar ´Administrador´ ou ´Usuário´, mas no Oracle deve ser gravado ´A´ ou ´U´. Apenas para facilitar o usuário.
Como poderia fazer isto?
Obrigado


Bclr

Bclr

Responder

Posts

04/11/2003

Koplin

Use a propriedade setText do campo em questão. Ela tem uma propriedade sender (o campo) e text que altera o valor a ser mostardo no componente de visualização.

+- assim

If sender.value=´U´ then text = ´Usuário´ else
If text =´A´ ´Administrador´ else
text:=´Indefinido´;


Responder

Gostei + 0

05/11/2003

Bclr

O DBGrid é carregado por um select.
Não entendi como e onde vou usar esta propriedade setText e os If´s ???


Responder

Gostei + 0

05/11/2003

Koplin

O DBGrid é carregado por um select. Não entendi como e onde vou usar esta propriedade setText e os If´s ???


procedure TForm1.Query1NOMESetText(Sender: TField; const Text: String);
begin
If sender.value=´U´ then text = ´Usuário´ else
If text =´A´ ´Administrador´ else
text:=´Indefinido´;
end;

A evento OnSetText esta no campo nome da query1 neste exemplo

Voce precisa acessar o evento OnSetText do campo ´nome´.
Sender é uma variavel do tipo TField que é o campo em si.
Text é uma variavel string que modifica o que aparace no componente visual (TDBEdit ou TDBgrid), mas não altera o valor do campo. É uma ´máscara´ definida por voce.

O que fazemos:

Se o valor do campo (sender.value)=´U´ - no seu caso e no exemplo-
O text sera ´USUÁRIO´ ou seja: sempre que o valor do campo tiver um determinado valor ele mostrará outro (definido por voce)


o exemplo:

valor do campo=>valor exibido

Se ´U´=> ´Usuário´

Se´A´=> ´Administrador´

se outra letra=>´Indefinido´;

Para acessar a propriedade do campo, selecione-o na lista de campos do dataset e procure o evento OnSetText

Se ainda persistirem dúvidas, não exite. Pergunte.


Responder

Gostei + 0

05/11/2003

Bclr

Tudo bem, já entendi a lógica, sendo que ainda não encontrei este evento OnSetText.
Já olhei a lista de todos os eventos do componente TQuery, mas não aparece este evento.
Não entendi quando você diz para eu ver este evento no campo nome, pois os eventos são relacionados de acordo com o componente.
Estou usando o Delphi 5.

Obrigado pela atenção


Responder

Gostei + 0

05/11/2003

Koplin

De dois cliques em cima de seu TQuery.
O editor de TFields aparece.
Selecione o Field desejado
tecle f11 para ver o Object Inspector
Selecione a aba Events
Localize o evento OnSetText

O envento é do campo e não do componente.

Obvio que o campo deve estar na lista
Para tal, botão direito na lista e Add All Fields

Estou supondo que a sql esta dentro do TQuery e portanto voce possa abri-lo em Design Time e desta forma prover o TQuery com os TFields


Responder

Gostei + 0

06/11/2003

Bclr

OK
Desculpe estar sendo chato, mas agora está dando o seguinte erro
´Left side cannot be assigned to´

na variável Text abaixo:

if Sender.value = ´U´ then
Text := ´Usuário´
else
if Sender.value = ´A´ then
Text := ´Administrador´
else
Text := ´Indefinido´;

ou seja, não está aceitando atribuir algum valor a Text

o que faço?


Responder

Gostei + 0

06/11/2003

Koplin

A culpa é minha... e voce não está sendo chato.

Um dia vai passar a alguém o que sabe, como ainda me ensinam.

Quando nos dispomos a responder a alguem, na minha opinião, assumimos um compromisso, que é o de esclarecer até onde for possivel.

O evento e OnGetText e não OnSetText como eu afirmei.

Desculpe o lapso.


Responder

Gostei + 0

06/11/2003

Bclr

Valeu koplin
Muito obrigado pela ajuda
É de pessoas como você que o fórum precisa, pessoas que procuram esclarecer todas as dúvidas.
T+


Responder

Gostei + 0

06/11/2003

Koplin

O time aqui é muito bom. Eu tento alcança-los em prestimosidade.

Boa sorte, e qualquer coisa...


Responder

Gostei + 0

15/06/2006

Elbesh

Koplin cara se vc tivesse na minha frente ia ganha um Beijo!!!!!!!
VALEW CARA vc salvo minha vida eu tava looocccooo atras de como botar tipo uma mascara no DbGrid e naum sabia... eu queria q ele tivesse uma função tipo Caption q naum eh pra Injecao de Texto no banco de dados e sim pra exibicao de texto somente... mas com isso q vc falo ai no topico arrebento cara... VALEW muiiitooo msm!!!!!


Responder

Gostei + 0

10/12/2016

Ricardo Back

A culpa é minha... e voce não está sendo chato.

Um dia vai passar a alguém o que sabe, como ainda me ensinam.

Quando nos dispomos a responder a alguem, na minha opinião, assumimos um compromisso, que é o de esclarecer até onde for possivel.

O evento e OnGetText e não OnSetText como eu afirmei.

Desculpe o lapso.




olá Koplin, onGetText funciona, mas quando altero para ediçao do campo em um formulario que fica em uma tabSheet ao lado ele nao traz o radioGroup seleconado... antes trazia. o que eu faço? desfazer a alteração? Como?
Responder

Gostei + 0

30/01/2017

Carlos Eduardo

Uma pergunta eu nao uso componente como poderia proceder ? sou novo no Delphi

exemplo

TPesquisa = class(FDQuery)
Procedure exemplo(...);
end;

como vou implementar o evento rs :)?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar