[erro] Access violation ...
19/05/2008
0
Estou brincando com o delphi para me familiarizar... mas ja programo bem entre ´, pois há algumas coisas que eu não consigo solucionar sem uma maozinha tecnica de alguem mais experiente.
Criei um aplicativo, e quando eu clico no menu Cadastro... da um erro de Access violation.
O menu abre um Form com 1 edit, e 2 botoes... ´Ok´ e ´Cancelar´
Alguem pode me dar uma luz!?
Meu msn para contato: pjrm1470@hotmail.com
Obs.: contatos sem identificação são automaticamente excluidos em menos de 24h. ( eu excluo para n enxer meu msn. )
Segue o codigo abaixo:
E o codigo do form que abre.
Se tiver criticas a respeito do jeito ou do modo de como eu faço pode falar trankilamente, sou aberto à criticas.
Para os que preferirem abrir o codigo no delphi... aí vai o link pra download do codigo zipado.
[url]http://www.2shared.com/file/3311669/32437a51/TEMP.html[/url]
Criei um aplicativo, e quando eu clico no menu Cadastro... da um erro de Access violation.
O menu abre um Form com 1 edit, e 2 botoes... ´Ok´ e ´Cancelar´
Alguem pode me dar uma luz!?
Meu msn para contato: pjrm1470@hotmail.com
Obs.: contatos sem identificação são automaticamente excluidos em menos de 24h. ( eu excluo para n enxer meu msn. )
Segue o codigo abaixo:
unit Cli_ConAdmin; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtCtrls, StdCtrls, Grids, DBGrids, DB, DBTables; type TfrmConAdmin = class(TForm) mmnConAdmin: TMainMenu; Arquivo1: TMenuItem; mmnSair: TMenuItem; panConAdmin: TPanel; dbgResumo: TDBGrid; grbSaldoAtual: TGroupBox; btnFluxos: TButton; btnResumo: TButton; btnCotacao: TButton; dtsResumo: TDataSource; lblSaldo: TLabel; tblResumo: TTable; tblResumoCod_Clientes: TSmallintField; tblResumoCod_Dinheiro: TSmallintField; tblResumoDescricao: TStringField; tblResumoDinheiro_Valor: TCurrencyField; Usurios1: TMenuItem; mmnCadastro: TMenuItem; mmnLogin: TMenuItem; mmnLogoff: TMenuItem; tblClientes: TTable; tblClientesCod_Clientes: TSmallintField; tblClientesNome_Cliente: TStringField; Ajuda1: TMenuItem; mmnSobre: TMenuItem; UpdClientes: TUpdateSQL; UpdResumo: TUpdateSQL; procedure mmnSairClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure mmnCadastroClick(Sender: TObject); procedure checkLoginUsuario; private cod: Integer; { Private declarations } public novoUsuario: String; UsuarioLogIn: Boolean; { Public declarations } end; var frmConAdmin: TfrmConAdmin; implementation uses DateUtils, CadUsuario; {$R *.dfm} procedure TfrmConAdmin.mmnSairClick(Sender: TObject); begin Close; end; procedure TfrmConAdmin.FormCreate(Sender: TObject); begin UsuarioLogIn := False; cod := 1; end; procedure TfrmConAdmin.mmnCadastroClick(Sender: TObject); begin frmCadUsuario.Show; end; procedure TfrmConAdmin.checkLoginUsuario; var I: Integer; begin if UsuarioLogIn = True then begin for I := 1 to 10 do begin if tblResumoCod_Clientes.Index = I then begin if tblResumoCod_Clientes.Value <> I then begin frmConAdmin.UpdClientes.InsertSQL.Text := ´INSERT INTO Clientes (Cod_Clientes, Nome_Clientes )´+ ´VALUES (´+IntToStr(I)+´, ´+novoUsuario+´)´; ShowMessage(´Seu login é o numero: ´+IntToStr(I)); end; end; end; dbgResumo.Enabled := True; btnFluxos.Enabled := True; btnResumo.Enabled := True; btnCotacao.Enabled := True; grbSaldoAtual.Enabled := True; tblResumo.Open; end; end; end.
E o codigo do form que abre.
unit CadUsuario; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TfrmCadUsuario = class(TForm) panCadUsuarios: TPanel; btnCadOk: TButton; edtCadUsuario: TEdit; btnCadCancel: TButton; procedure btnCadCancelClick(Sender: TObject); procedure btnCadOkClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmCadUsuario: TfrmCadUsuario; implementation uses Cli_ConAdmin; {$R *.dfm} procedure TfrmCadUsuario.btnCadCancelClick(Sender: TObject); begin frmConAdmin.UsuarioLogIn := False; Close; Free; end; procedure TfrmCadUsuario.btnCadOkClick(Sender: TObject); begin frmConAdmin.novoUsuario := edtCadUsuario.Text; frmConAdmin.UsuarioLogIn := True; frmConAdmin.checkLoginUsuario(); Close; end; end.
Se tiver criticas a respeito do jeito ou do modo de como eu faço pode falar trankilamente, sou aberto à criticas.
Para os que preferirem abrir o codigo no delphi... aí vai o link pra download do codigo zipado.
[url]http://www.2shared.com/file/3311669/32437a51/TEMP.html[/url]
.lg.
Curtir tópico
+ 0
Responder
Posts
20/05/2008
Rodc
Ocorre porque o formulário frmCadUsuario não está criado na memória. Para que ele seja criado automaticamente na inicialização do programa, você deve colocá-lo na lista de AutoCreate que está na guia ´Forms´ das opções do projeto.
Mas o melhor é criar ele dinamicamente, apenas quando for ser usado, como no código abaixo:
Mas o melhor é criar ele dinamicamente, apenas quando for ser usado, como no código abaixo:
procedure TfrmConAdmin.mmnCadastroClick(Sender: TObject); begin if not Assigned(frmCadUsuario) then // Verifica se o objeto existe Application.CreateForm(TfrmCadUsuario, frmCadUsuario); // Cria o objeto caso não exista frmCadUsuario.Show; end;
Responder
20/05/2008
.lg.
Obrigado.
Vou me lembrar desse detalhe. Não tinha visto ainda um exemplo ou um tutorial q ensinasse a jogar na memoria. :roll:
:Resolvido:
Vou me lembrar desse detalhe. Não tinha visto ainda um exemplo ou um tutorial q ensinasse a jogar na memoria. :roll:
:Resolvido:
Responder
Clique aqui para fazer login e interagir na Comunidade :)