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

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

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

    باز کردن و بستن چند فرم با 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.

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

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

    با این روشهایی که دوستان گفتند مشکل اولیه ام حل می شود.
    حال یک مشکل دیگر داریم:
    اگر فرم اول یک فرم دیگر مثلا FORM1_1 را با ShowModule باز کند، تا این فرم بسته نشود، نه تنها فرم اول غیر فعال است (که ذات ShowModule همین است) بلکه فرم دوم هم تا FORM1_1 بسته نشود غیر فعال می ماند. من میخواهم فرم 1 و فرم 2 مستقل باشد

  4. #4

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

    نقل قول نوشته شده توسط masoode مشاهده تاپیک
    با این روشهایی که دوستان گفتند مشکل اولیه ام حل می شود.
    حال یک مشکل دیگر داریم:
    اگر فرم اول یک فرم دیگر مثلا FORM1_1 را با ShowModule باز کند، تا این فرم بسته نشود، نه تنها فرم اول غیر فعال است (که ذات ShowModule همین است) بلکه فرم دوم هم تا FORM1_1 بسته نشود غیر فعال می ماند. من میخواهم فرم 1 و فرم 2 مستقل باشد
    خوب با ShowModule نشون نده از Show استفاده کن که این مشکل ر و نداشته باشی

  5. #5

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

    در سطح یک اپلیکیشن، نمی تونید بیش از یک شومودال اکتیو داشته باشید، آخرین مودال همیشه روی کل پروژه مودال است، چنانچه رفتار دیگه ای مد نظره، باید خودتون در سطج مستر فرم پیادش کنید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
    پایگاه داده، تیونینگ، طراحی و پیاده سازی ..

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

  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 صبح

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

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