Quem Sabe esse ERRO gerado pelo delphi...
Ola galera,
Pessoal, o delphi esta me gerando o seguinte erro:
EAccessViolation whith message ´Access Violation at adress 004E7880.
Read of address 00000320´.
Ele gera esse erro, quando eu abro uma table de cidades e ele tenta executar um codigo que está no evento StateChange do DataSource desta tabela. O Código é este:
FTCADCID.BBINCLUIRCID.Enabled := IBDSCADCIDADE.State in [dsBrowse];
FTCADCID.BBGRAVARCID.Visible := IBDSCADCIDADE.State in [dsEdit, dsInsert];
FTCADCID.BBCANCELCID.Enabled := IBDSCADCIDADE.State in [dsEdit, dsInsert];
FTCADCID.BBEXCLUIRCID.Enabled := IBDSCADCIDADE.State in [dsBrowse];
Se eu desabilito esse codigo, tudo funciona perfeitamente.
Alguem sabe o que pode ser ?
Um abraço a todos.
[/img]
Pessoal, o delphi esta me gerando o seguinte erro:
EAccessViolation whith message ´Access Violation at adress 004E7880.
Read of address 00000320´.
Ele gera esse erro, quando eu abro uma table de cidades e ele tenta executar um codigo que está no evento StateChange do DataSource desta tabela. O Código é este:
FTCADCID.BBINCLUIRCID.Enabled := IBDSCADCIDADE.State in [dsBrowse];
FTCADCID.BBGRAVARCID.Visible := IBDSCADCIDADE.State in [dsEdit, dsInsert];
FTCADCID.BBCANCELCID.Enabled := IBDSCADCIDADE.State in [dsEdit, dsInsert];
FTCADCID.BBEXCLUIRCID.Enabled := IBDSCADCIDADE.State in [dsBrowse];
Se eu desabilito esse codigo, tudo funciona perfeitamente.
Alguem sabe o que pode ser ?
Um abraço a todos.
[/img]
Diegodelphi
Curtidas 0
Respostas
Flaviosan
28/04/2004
quando eu quero testar se o dataset esta em dsbrowse eu faço assim:
não sei se é seu caso.
FTCADCID.BBGRAVARCID.Visible := not(IBDSCADCIDADE.State in [dsEdit, dsInsert]);
não sei se é seu caso.
GOSTEI 0
Pabhen
28/04/2004
Ola galera,
Pessoal, o delphi esta me gerando o seguinte erro:
EAccessViolation whith message ´Access Violation at adress 004E7880.
Read of address 00000320´.
Ele gera esse erro, quando eu abro uma table de cidades e ele tenta executar um codigo que está no evento StateChange do DataSource desta tabela. O Código é este:
FTCADCID.BBINCLUIRCID.Enabled := IBDSCADCIDADE.State in [dsBrowse];
FTCADCID.BBGRAVARCID.Visible := IBDSCADCIDADE.State in [dsEdit, dsInsert];
FTCADCID.BBCANCELCID.Enabled := IBDSCADCIDADE.State in [dsEdit, dsInsert];
FTCADCID.BBEXCLUIRCID.Enabled := IBDSCADCIDADE.State in [dsBrowse];
Se eu desabilito esse codigo, tudo funciona perfeitamente.
Alguem sabe o que pode ser ?
Um abraço a todos.
[/img]
Pelo q eu tentei entender vc está tentando atribuir propriedades de um datasource as propriedades do botão botão, é isso?
Se for, vc naum pode fazer desse modo, tenta o seguinte
If IBDSCADCIDADE.State in [dsEdit, dsInsert] then
Begin
FTCADCID.BBINCLUIRCID.Enabled :=False;
FTCADCID.BBEXCLUIRCID.Enabled :=False;
FTCADCID.BBGRAVARCID.Enabled:=True;
FTCADCID.BBCANCELCID.Enabled:=true
End
Else
Begin
FTCADCID.BBINCLUIRCID.Enabled :=True;
FTCADCID.BBEXCLUIRCID.Enabled :=True;
FTCADCID.BBGRAVARCID.Enabled:=False;
FTCADCID.BBCANCELCID.Enabled:=False;
End;
espero ter ajudado;
GOSTEI 0
Flaviosan
28/04/2004
Olha pabhen, acho que voce esta enganado, pois eu faço assim no meu programa, vou colocar do jeito que esta no meu programa. (favor desconsiderar meu ultimo post, pois eu tinha escrito de cabeça)
procedure TFRMPAI.DSTABELAStateChange(Sender: TObject); const Estados : array[TDataSetState] of String = (´FECHADO´,´NAVEGANDO´,´EDITANDO´,´INSERINDO´,´´,´´,´´,´´,´´,´´,´´,´´,´´); begin TBTN_INS.Enabled := DSTABELA.State in [dsBrowse]; TBTN_POST.Enabled := DSTABELA.State in [dsInsert, dsEdit]; TBTN_CANCEL.Enabled := DSTABELA.State in [dsInsert, dsEdit]; TBTN_DEL.Enabled := DSTABELA.State in [dsBrowse]; TBTN_EDIT.Enabled := DSTABELA.State in [dsBrowse]; TBTN_REFRESH.Enabled := DSTABELA.State in [dsBrowse]; TBTN_EXIT.Enabled := DSTABELA.State in [dsBrowse]; PAINEL_MANUT.Enabled := DSTABELA.State in [dsInsert, dsEdit]; StatusBar1.Panels[0].Text := Estados[DSTABELA.State]; end;
GOSTEI 0
Flaviosan
28/04/2004
Pra ver como funciona, eu retirei este codigo da revista clubedelphi nº 30, sistema DATACAR
.
.
GOSTEI 0
Pabhen
28/04/2004
Olha pabhen, acho que voce esta enganado, pois eu faço assim no meu programa, vou colocar do jeito que esta no meu programa. (favor desconsiderar meu ultimo post, pois eu tinha escrito de cabeça)
procedure TFRMPAI.DSTABELAStateChange(Sender: TObject); const Estados : array[TDataSetState] of String = (´FECHADO´,´NAVEGANDO´,´EDITANDO´,´INSERINDO´,´´,´´,´´,´´,´´,´´,´´,´´,´´); begin TBTN_INS.Enabled := DSTABELA.State in [dsBrowse]; TBTN_POST.Enabled := DSTABELA.State in [dsInsert, dsEdit]; TBTN_CANCEL.Enabled := DSTABELA.State in [dsInsert, dsEdit]; TBTN_DEL.Enabled := DSTABELA.State in [dsBrowse]; TBTN_EDIT.Enabled := DSTABELA.State in [dsBrowse]; TBTN_REFRESH.Enabled := DSTABELA.State in [dsBrowse]; TBTN_EXIT.Enabled := DSTABELA.State in [dsBrowse]; PAINEL_MANUT.Enabled := DSTABELA.State in [dsInsert, dsEdit]; StatusBar1.Panels[0].Text := Estados[DSTABELA.State]; end;
blz flaviosan, eu naum conhecia essa forma de trabalhar, de qualquer forma valeu pelo toque.
GOSTEI 0