bloquear controles em uma tela
Pessoal... tenho algumas telas em que o usuario so vai poder editar as informações se ele Clicar no botão Editar...
meus forms estao assim:
PnBotoes (panel do lado esquerdo tendo os botoes de operação, Inserir, salvar, editar.....)
PnEdição.. (panel que cobe todo o resto do form.. onde ficaram todos os controles.
Dae para facilitar eu simplismente fazia um PnEdicao.enabled := false; Até que o usuario clica em Editar dae eu mudava p true;
Mas agora surgiu uns probleminhas... dentro deste PnEdicao eu tenho PageControls e até alguns botões que poderiam ser acessado sem ter que apertar Editar.
Na verdade eu criei assim para se ter um controle melhor de qdo a tela esta em Insert, Edit, Browser.
Gostaria que o usuario apenas pudesse editar apos clicar Editar.
Mas do jeito que fiz ele não pode nem navegar na tela p ver os dados sem Editar.
Alguem tem alguma sugestão de como reslver isso?
Obrigado
meus forms estao assim:
PnBotoes (panel do lado esquerdo tendo os botoes de operação, Inserir, salvar, editar.....)
PnEdição.. (panel que cobe todo o resto do form.. onde ficaram todos os controles.
Dae para facilitar eu simplismente fazia um PnEdicao.enabled := false; Até que o usuario clica em Editar dae eu mudava p true;
Mas agora surgiu uns probleminhas... dentro deste PnEdicao eu tenho PageControls e até alguns botões que poderiam ser acessado sem ter que apertar Editar.
Na verdade eu criei assim para se ter um controle melhor de qdo a tela esta em Insert, Edit, Browser.
Gostaria que o usuario apenas pudesse editar apos clicar Editar.
Mas do jeito que fiz ele não pode nem navegar na tela p ver os dados sem Editar.
Alguem tem alguma sugestão de como reslver isso?
Obrigado
Osocram
Curtidas 0
Respostas
Rafa.spimenta
31/07/2009
Cara eu não parei pra olhar com calma, mas, não seria o caso de você fazer o controle dos componentes no evento OnStateChange do seu DataSourse?
Abraço!
Abraço!
GOSTEI 0
Osocram
31/07/2009
Suponha que na tela eu tenho Pai e filho se eu editar diretamente o filho o pai não vai entrar em edição.
Cara eu não parei pra olhar com calma, mas, não seria o caso de você fazer o controle dos componentes no evento OnStateChange do seu DataSourse?
Abraço!
GOSTEI 0
Osocram
31/07/2009
Esqueci de comentar... estarei testando isso q vc passou
Obrigado.
Obrigado.
Suponha que na tela eu tenho Pai e filho se eu editar diretamente o filho o pai não vai entrar em edição.
[quote:a0a1257c61=´rafa.spimenta´]Cara eu não parei pra olhar com calma, mas, não seria o caso de você fazer o controle dos componentes no evento OnStateChange do seu DataSourse?
Abraço!
[/quote:a0a1257c61]GOSTEI 0
Osocram
31/07/2009
Opa... Rafa.
Olha funcionou blz p o que eu preciso.... estranho, pois num passado distante precisei fazer isso em outro sistema e lembro q tentei usar o dataSource e ele não controlou exatamente isso... O problema era qdo se editava diretamente as filhas....
Mas blz.. funcinou,
Vlw ae.
Olha funcionou blz p o que eu preciso.... estranho, pois num passado distante precisei fazer isso em outro sistema e lembro q tentei usar o dataSource e ele não controlou exatamente isso... O problema era qdo se editava diretamente as filhas....
Mas blz.. funcinou,
Vlw ae.
Cara eu não parei pra olhar com calma, mas, não seria o caso de você fazer o controle dos componentes no evento OnStateChange do seu DataSourse?
Abraço!
GOSTEI 0
Rafa.spimenta
31/07/2009
Mas é isso ae osocram! se funcionou entao ta bom d mais! rs
E pra quem tem dúvida, esse evento OnStateChange do TDataSource ajuda muito no momento de habilitar/desabilitar os botões(componentes) em relação ao estado do DataSet. Pois, o mesmo ocorre sempre que há uma mudança no estado do mesmo.
Assim você concentra seu código em apenas um evento.
exemplo beeeeeeeeeeeeeeeeeeeeeeeem simples:
[url]http://www.planetadelphi.com.br/dica/6067/onstatechange-do-tdatasource[/url]
Bom dia ae!
E pra quem tem dúvida, esse evento OnStateChange do TDataSource ajuda muito no momento de habilitar/desabilitar os botões(componentes) em relação ao estado do DataSet. Pois, o mesmo ocorre sempre que há uma mudança no estado do mesmo.
Assim você concentra seu código em apenas um evento.
exemplo beeeeeeeeeeeeeeeeeeeeeeeem simples:
[url]http://www.planetadelphi.com.br/dica/6067/onstatechange-do-tdatasource[/url]
Bom dia ae!
Opa... Rafa.
Olha funcionou blz p o que eu preciso.... estranho, pois num passado distante precisei fazer isso em outro sistema e lembro q tentei usar o dataSource e ele não controlou exatamente isso... O problema era qdo se editava diretamente as filhas....
Mas blz.. funcinou,
Vlw ae.
[quote:9959501915=´rafa.spimenta´]Cara eu não parei pra olhar com calma, mas, não seria o caso de você fazer o controle dos componentes no evento OnStateChange do seu DataSourse?
Abraço!
[/quote:9959501915]GOSTEI 0
Sdph
31/07/2009
no evento StateChange do dataSet
procedure TFrm_Cadastro.dsCadastroStateChange(Sender: TObject);
Var Edita : Boolean;
begin
Edita := ((Sender As TDataSource).State In [dsinsert, dsedit]);
btnExcluir.Enabled := Not Edita;
btnCancelar.Enabled := Edita;
btnNovo.Enabled := Not Edita;
btnImprimir.Enabled := Not Edita;
btnGravar.Enabled := Edita;
end;
procedure TFrm_Cadastro.dsCadastroStateChange(Sender: TObject);
Var Edita : Boolean;
begin
Edita := ((Sender As TDataSource).State In [dsinsert, dsedit]);
btnExcluir.Enabled := Not Edita;
btnCancelar.Enabled := Edita;
btnNovo.Enabled := Not Edita;
btnImprimir.Enabled := Not Edita;
btnGravar.Enabled := Edita;
end;
GOSTEI 0