Duvida, como inutilizar o Insert de um DBGrid?

Delphi

05/03/2004

Caros amigos, como inutilizo o Insert de um DBGrid para alguns usuários e outros nao?!

Atenciosamente

Luiz Claudio V. Santos


Luiz.claudio.vieira

Luiz.claudio.vieira

Curtidas 0

Respostas

Joilson_gouveia

Joilson_gouveia

05/03/2004

Há várias maneiras. Sugiro que no evento afterOpen da Tabela/Query
vc verifique se o usuario tem direito de atualizar e, se não, vc
torna o DBGrid somente leitura, alterando conforme abaixo:

DBGrid1.ReadOnly := True;


GOSTEI 0
Pain_elemental

Pain_elemental

05/03/2004

No OnStateChange do TDataSource ligado ao grid vc poe:

if (Sender.State = dsInsert) and
   (TemPermissao) then
   Sender.DataSet.Cancel;


Onde TemPermissao é uma função que diz se o usuário tem permissão ou não.


GOSTEI 0
Luiz.claudio.vieira

Luiz.claudio.vieira

05/03/2004

Eu fiz o que o amigo me passou mas deu o seguinte erro ´Undeclared identifier: ´State´ ´ Alguem sabe me responder o que estou fazendo de errado?!


GOSTEI 0
Andrey

Andrey

05/03/2004

Tente utilizar o nome do dataset(query, table) ligado ao datasource no lugar de ´sender´.


GOSTEI 0
Pain_elemental

Pain_elemental

05/03/2004

Há várias maneiras. Sugiro que no evento afterOpen da Tabela/Query vc verifique se o usuario tem direito de atualizar e, se não, vc torna o DBGrid somente leitura, alterando conforme abaixo: DBGrid1.ReadOnly := True;


Você pode ver a mudança de estado do TDataSource no evento OnStateChange, tendo um maior controle do que somente por read-only, podendo dar permissõs de alteração e inclusão.


GOSTEI 0
Pain_elemental

Pain_elemental

05/03/2004

Eu fiz o que o amigo me passou mas deu o seguinte erro ´Undeclared identifier: ´State´ ´ Alguem sabe me responder o que estou fazendo de errado?!


ops... desculpe.

serla

TDataSource(Sender).State 
ao invés de somente
Sender.State



GOSTEI 0
Arlon

Arlon

05/03/2004

Vai na cláusula Uses do código fonte e declara ´DB´, sem as aspas, é claro.


GOSTEI 0
POSTAR