نمایش نتایج 1 تا 2 از 2

نام تاپیک: باز کردن و بستن چند فرم با form.show

  1. #1
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان - ایران
    پست
    297

    باز کردن و بستن چند فرم با form.show

    سلام
    من همیشه فراری هستم از اینکه به کاربرم اجازه باز کردن چند فرم بدهم. اما الان مجبور شدم!!
    فرض کنید من دو تا فرم با نامهای زیر دارم
    Form1:Tform1
    Form2:Tform2

    می خواهم روی فرم اول یک کلید بگذارم که با زدن آن فرم دوم باز شود ولی به فرم اول هم دسترسی داشته باشد. ضنما فرم دوم Auto-Create نیست و موقع زدن کلید ساخته میشود.
    یک همچین چیزی:

    frm2:=Tform2.Create(self);
    frm2.show;

    تا اینجا که ساده بود. اما می خواهم اولا موقعی که فرم دوم بسته شد free شود و ضمنا موقعی که روی کلید زده میشود اگر فرم دوم قبلا ساخته شده بود دیگر کاری انجام ندهد.
    البته در onClose فرم دوم Action:=caFree; را قرارداده ام که ظاهرا باید موقع بسته شدن فرم آن را آزاد کند.
    همچنین در زمانی که کلید زده میشود با assigned چک میکنم:
      if not Assigned(frmPM) then begin
    frm1:=TForm1.Create(Self);
    frm.Show;
    end;

    اما با این کد یک بار فرم دوم ساخته و نمایش داده میشود ولی اگر فرم بسته شد دیگر ساخته نمی شود و خروجی تابع Assigned همچنان true برمیگرداند!

  2. #2

    Post نقل قول: باز کردن و بستن چند فرم با form.show


    unit Unit1;


    interface


    uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;


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


    var
    Form1: TForm1;


    implementation


    {$R *.dfm}


    uses Unit2;


    function FormExists(MyForm: TObject): boolean;
    var i: Integer;
    begin
    Result := False;
    for i := 0 to Application.ComponentCount-1 do
    if Application.Components[i] = MyForm then begin
    Result := True;
    Break;
    end;
    end;


    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if FormExists(Form2) = False then
    begin
    try
    Application.CreateForm(TForm2, Form2);
    finally
    Form2.Show;
    end;
    end;
    end;


    end.






    unit Unit2;


    interface


    uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs;


    type
    TForm2 = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    private
    { Private declarations }
    public
    { Public declarations }
    end;


    var
    Form2: TForm2;


    implementation


    {$R *.dfm}


    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    Destroy;
    end;


    end.

تاپیک های مشابه

  1. سوال: show form in thread
    نوشته شده توسط aysha_6586 در بخش C#‎‎
    پاسخ: 7
    آخرین پست: یک شنبه 15 خرداد 1390, 00:47 صبح
  2. form.Show() در ویژوال بیسیک 6
    نوشته شده توسط saed2006 در بخش برنامه نویسی در 6 VB
    پاسخ: 3
    آخرین پست: یک شنبه 04 مرداد 1388, 03:23 صبح
  3. اشکال در ()form.show
    نوشته شده توسط anooshiran در بخش VB.NET
    پاسخ: 3
    آخرین پست: پنج شنبه 25 بهمن 1386, 15:25 عصر
  4. Form.Show()
    نوشته شده توسط AspNet در بخش C#‎‎
    پاسخ: 6
    آخرین پست: جمعه 09 آذر 1386, 20:56 عصر
  5. show form
    نوشته شده توسط Future در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: شنبه 26 اسفند 1385, 11:53 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •