Fórum [erro] Access violation ... #358784
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
Gostei + 0
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)