GARANTIR DESCONTO

Fórum Erro ao fechar um MessageDLG personalizado #348686

08/11/2007

0

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:


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

Devmedia

Responder

Posts

08/11/2007

Marcosrocha

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?


Responder

Gostei + 0

08/11/2007

Massuda

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.


Responder

Gostei + 0

08/11/2007

Devmedia

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.



Responder

Gostei + 0

08/11/2007

Devmedia

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.


Responder

Gostei + 0

08/11/2007

Marcosrocha

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


Responder

Gostei + 0

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

Aceitar