Erro ao fechar um MessageDLG personalizado
Pessoal, blz ?
Meu post anterior eu pedi ajuda de como montar um MessageDLG Personalizado com buttons.
Dai fuçando, fuçando consegui. Agora estou somente com um problema para fechá-lo.
Pois toda vez que mando fechá-lo da erro de ´Acesso violado´
Segue meu código abaixo:
Oque quero é que quando escolhida uma das opções ira abrir o tipo de cadastro e fechar o meu messageDLG personalizado.
Oque não estou sabendo fazer é fechar o MessageDLG sem acontecer o erro de ´Acesso violado´;
Alguem pode me ajudar?
Att.
Meu post anterior eu pedi ajuda de como montar um MessageDLG Personalizado com buttons.
Dai fuçando, fuçando consegui. Agora estou somente com um problema para fechá-lo.
Pois toda vez que mando fechá-lo da erro de ´Acesso violado´
Segue meu código abaixo:
procedure TFormFornecedoresNovo.FormShow(Sender: TObject); var AMsgDialog: TForm; A_Button, B_Button : TButton; begin AMsgDialog := CreateMessageDialog(´Informe sua situação:´, mtConfirmation,[]); A_Button := TButton.Create(AMsgDialog); B_Button := TButton.Create(AMsgDialog); With AMsgDialog do try Caption := ´Minha Caixa de Diálogo Personalizada´; Height := 140; Width := 300; Position := poMainFormCenter; Align := alCustom; BorderStyle := bsSizeable; BorderIcons := [biSystemMenu]; With A_Button do Begin Parent := AMsgDialog; Top := 70; Height := 33; Width := 133; Left := 10; Caption := ´PESSOA FÍSICA´; Font.Style := [fsBold]; TabOrder := 0; ShowHint := True; Hint := ´Escolha esta opção para cadastrar um cliente por situação Física!´; OnClick := ClickPessoaFisica; end; With B_Button do Begin Parent := AMsgDialog; Top := 70; Height := 33; Width := 133; Left := 150; Caption := ´PESSOA JURÍDICA´; Font.Style := [fsBold]; TabOrder := 1; ShowHint := True; Hint := ´Escolha esta opção para cadastrar um cliente por situação Júridica!´; OnClick := ClickPessoaJuridica; end; ShowModal; except A_Button.Free; B_Button.Free; Free; end; end;
public
{ Public declarations }
procedure ClickPessoaJuridica(Sender:TObject);
procedure ClickPessoaFisica(Sender:TObject);
procedure TFormFornecedoresNovo.ClickPessoaFisica(Sender:TObject);
Begin
showmessage(´Opcao PESSOA FISICA ´);
end;
procedure TFormFornecedoresNovo.ClickPessoaJuridica(Sender:TObject);
Begin
showmessage(´Opcao PESSOA JURIDICA ´);
end;
Oque quero é que quando escolhida uma das opções ira abrir o tipo de cadastro e fechar o meu messageDLG personalizado.
Oque não estou sabendo fazer é fechar o MessageDLG sem acontecer o erro de ´Acesso violado´;
Alguem pode me ajudar?
Att.
Devmedia
Curtidas 0
Respostas
Marcosrocha
08/11/2007
Lucas... pra só a título de informação, ´Access Violation´ não é ´Acesso Violado´ e sim ´Violação de Acesso´.
Quanto ao seu código, eu copiei e colei no meu Delphi 7 e não deu esse erro, tem algo mais em seu código?
Quanto ao seu código, eu copiei e colei no meu Delphi 7 e não deu esse erro, tem algo mais em seu código?
GOSTEI 0
Massuda
08/11/2007
Como você criou os botões com Owner, não precisa destruir os botões, já que o Owner irá fazer isso por você quando for executado AMsgDialog.Free.
GOSTEI 0
Devmedia
08/11/2007
Lucas... pra só a título de informação, ´Access Violation´ não é ´Acesso Violado´ e sim ´Violação de Acesso´.
Quanto ao seu código, eu copiei e colei no meu Delphi 7 e não deu esse erro, tem algo mais em seu código?
Cara, fiz assim, declarei a variavel:
var AMsgDialog: TForm;
Como global, nisso no:
public
{ Public declarations }
procedure ClickPessoaJuridica(Sender:TObject);
procedure ClickPessoaFisica(Sender:TObject);
procedure TFormFornecedoresNovo.ClickPessoaFisica(Sender:TObject);
Begin
showmessage(´Opcao PESSOA FISICA ´);
AMsgDialog.Close;
end;
procedure TFormFornecedoresNovo.ClickPessoaJuridica(Sender:TObject);
Begin
showmessage(´Opcao PESSOA JURIDICA ´);
AMsgDialog.Close;
end;
E deu certo!
A duvida que estou agora é que se atribuo para abrir um Form.
Por exemplo com um TEdit -> Enabled := False;
E no código faço para abrir como True, exemplo:
procedure TFormFornecedoresNovo.ClickPessoaJuridica(Sender:TObject); Begin FormOpcaoFisica.ShowModal; FormOpcaoFisica.EditNome.Enabled := True; AMsgDialog.Close; end; Ele abre o Form, Fecha a messageDLG, mas não Abilita o Campo EditNome. Oque pode ser? Att.
GOSTEI 0
Devmedia
08/11/2007
Como você criou os botões com Owner, não precisa destruir os botões, já que o Owner irá fazer isso por você quando for executado AMsgDialog.Free.
Fala Massuda, blz?
Não havia prestado atenção nisso. Quando chegar em casa, vou fazer o teste, porque aqui não tem Delphi.
Abraço... vlw.
Att.
GOSTEI 0
Marcosrocha
08/11/2007
Massuda tem razão, não tinha reparado naquela parte do código, mas mesmo assim aqui no escritório não deu erro de ´Access Violation´ :S
GOSTEI 0