Fórum problemas com TSpeedButton e controles DataAware #288622
19/07/2005
0
Tenho vários formulários de cadastro usando DBEdit, DbMemo, etc.. e para efetuar os procedimentos manipulação da tabela, estou utilizando TSpeedButtons. Até aí tudo bem.
O problema ocorre quando vou salvar as alterações na tabela. Sempre que salvo, o último campo editado não é gravado na tabela, isto porque o DBEdit sempre atualiza os dados no dataset no seu evento onexit, e este evento só ocorre quando um outro componente recebe o foco, mas no caso do TSpeedButton, ele não recebe foco, consequentemente não executando o evento onExit do DBEdit.
Uma saída que achei foi chamar a instrução self.SetFocus; no início do procedimento do botão salvar. O problema é que fazer esta alteração em todos os botões ficaria inviável, gostaria de derivar um outro botão baseado no TSpeedButton e acrescentar esse trecho de código no evento onclick dele... alguém poderia me dar uma ajuda a esse respeito?
Preciso usar o SpeedButton por causa da sua propriedade Flat, por este motivo que não troco para o BitBtn...
Obrigado pela atenção.
Prgdelphi
Curtir tópico
+ 0Posts
19/07/2005
Daemon
if (Sender is TDBEdit) and ((Sender as TDBEdit).DataSource.State in [dsInsert, dsBrowse]) then (Sender as TDBEdit).Field.AsString := (Sender as TDBEdit).Text;
..coloque esse trecho de codigo no evento OnChange do campo, TODOS os DBedit´s podem estar usando o mesmo evento, não precisa abrir um evento para cada um, talvez não seja a solução certa, mas é uma solução genérita e deve funcionar... ....isso resolve para vc??
Gostei + 0
19/07/2005
Prgdelphi
Precisava mesmo era acrescentar o comando self.setfocus no início do evento onclick de cada botão... por isso que eu pensei em derivar um novo objeto baseado no TSpeedButton mas não estou conseguindo com muito sucesso.
Obrigado pela ajuda.
Gostei + 0
19/07/2005
Adriano Santos
Gostei + 0
19/07/2005
Bon Jovi
ClientDataSet1.UpdateRecord;
ClientDataSet1.Post;
Gostei + 0
20/07/2005
Prgdelphi
matou o problema bon jovi... agora funcionou perfeito...
valeu pela ajuda de todos...
e respondendo ao asrsantos, naum sei pq eu tinha certeza que o bitbtn tb tinha a propriedade flat. Procurei em tudo quanto é lugar e não achei. ele não possui essa propriedade. Testei no delphi 6 e 2005.
obrigado a todos.
Gostei + 0
20/07/2005
Adriano Santos
Pow, procurei a propriedade agora de manhã e tb não achei...será que estamos loucos? Tinha certeza absoluta que o BitBtn possuia a propriedade, que doidera.
falow
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)