Jump to content
Fórum Script Brasil
  • 0

Procedure para criar formulários


nicolasbraz
 Share

Question

Estou com o seguinte código para criar formulários.

procedure Tfrmprincipal.CriaForm (teste:TFormClass; teste2:Tform);
begin
    if not assigned (teste2) then
    begin
        Screen.Cursor := crHourGlass;
       application.createForm(teste, teste2);
      teste2.show;
      Screen.Cursor := crDefault;
  end;
end;
Ele cria o formulário tranquilo o problema é que eu tenho uma biblioteca onde eu preciso alterar algumas funções dos formulários de cadastro, só que quando eu faço referencia aos formulários criados por essa procedure eu recebo o erro de "Acess Violation". O código que eu posso dar como exemplo que me retorna erro é o seguinte.
Frm_Clientes.KeyPreview := True;

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Jhonas,

Usei o código.

function TForm1.CriaFormModal(Formulario: TFormClass): Boolean;
begin
With Formulario.Create(Application) do
begin
Try
Result := ShowModal = mrYes;
Form2.Caption := 'aaa';
Finally
Free;
end;
end;
end;
E no botão eu chamo o formulário assim.
If CriaFormModal(TForm2) then
ShowMessage('Pressionou OK!\')
else
ShowMessage('Pressionou Cancela!\')

Usei o exemplo do site (código acima)! E também o meu código ambos dão o mesmo erro.

Eu tinha o código no create e dava o erro passei o código para o show o erro continua então eu coloquei o código em um botão e o erro continua também!

Link to comment
Share on other sites

  • 0

Não encontrei nenhum erro

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
    TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


function CriaFormularioClientes:Boolean;
begin
   With TForm.Create(Application) do
   begin
      Try
        Result := ShowModal = mrOk;
      Finally
        Free;
      end;
   end;
end;

function CriaFormModal(Formulario : TFormClass) : Boolean;
begin
   With Formulario.Create(Application) do
   begin
      Try
        Result := ShowModal = mrYes;
      Finally
        Free;
      end;
   end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
   If CriaFormModal(TForm) then
      ShowMessage('Pressionou OK!')
   else
      ShowMessage('Pressionou Cancela!')

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   If CriaFormularioClientes = true then
      ShowMessage('Pressionou OK!')
   else
      ShowMessage('Pressionou Cancela!')
end;

end.

abraço

Link to comment
Share on other sites

  • 0

Coloquei o seguinte código.

function CriaFormulario:Boolean;
begin
   With TForm.Create(Application) do
   begin
      Try
        Result := Show = mrOk;
      Finally
        Free;
      end;
   end;
end;

Ele não compila e gera erro :(

O compilador aponta para a linha do mrOK.

Edited by nicolasbraz
Link to comment
Share on other sites

  • 0

Foi mal ... coloquei no lugar errado

seria isso

function CriaFormularioClientes:Boolean;

begin

frmClientes := TfrmClientes.Create(Application);

//frmClientes.ShowModal;

frmClientes.Show;

If frmClientes.ModalResult = mrOk Then

Result := True

Else

Result := False;

frmClientes.Free;

frmClientes := Nil;

End;

abraço

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.8k
    • Total Posts
      648.8k
×
×
  • Create New...