Fórum Quem Sabe esse ERRO gerado pelo delphi... #228525

28/04/2004

0

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]


Diegodelphi

Diegodelphi

Responder

Posts

28/04/2004

Flaviosan

quando eu quero testar se o dataset esta em dsbrowse eu faço assim:
FTCADCID.BBGRAVARCID.Visible := not(IBDSCADCIDADE.State in [dsEdit, dsInsert]);

não sei se é seu caso.


Responder

Gostei + 0

28/04/2004

Pabhen

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;


Responder

Gostei + 0

28/04/2004

Flaviosan

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;



Responder

Gostei + 0

28/04/2004

Flaviosan

Pra ver como funciona, eu retirei este codigo da revista clubedelphi nº 30, sistema DATACAR
.


Responder

Gostei + 0

28/04/2004

Pabhen

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.


Responder

Gostei + 0

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

Aceitar