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

نام تاپیک: ساخت پنجره ای برای waiting

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

    ساخت پنجره ای برای waiting

    با سلام
    من یک فرم ساخته ام که داخل آن یک شی
    َAnimate
    هست که یک فایل
    AVI
    را اجرا میکنه و این فرم موقعی نمایش داده میشه که مثلا من برای یک سری عملیات
    پشت پرده وقت نیاز دارم وقتی آن عملیات ها تمام شد باید با یک کد
    Form3.close
    بسته شود
    ولی این فرم با کد بسته نمیشه و فقط اگرشی مثل کلید روی آن بگذارم و این کد را
    داخل آن بگذارم بسته میشه
    این را هم بگم که با کد
    ّform3.showmodal;
    آن را باز میکنم اگه امکان داره راهنمائی کنید
    :roll:[/b]

  2. #2
    اگر آن را ShowModal کنی که دیگر اجرای برنامه به خط بعد نمی رود تا بتوانی آن را با کد Close کنی. برای اینکار بهتر است BorderStyle فرم را به bsNone تبدیل کرده و آن را Show کنی (و نه ShowModal) و بعد هر وقت که خواستی آن را Close کنی. :wink:

  3. #3
    کاربر دائمی
    تاریخ عضویت
    دی 1382
    محل زندگی
    پشت كامپيوتر
    پست
    381


    unit SmallMes_Frm;

    interface

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

    type
    TSmallMes = class(TForm)
    Label1:TLabel;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    private
    { Private declarations }
    public
    tm:integer;
    Procedure MyMessage(str:AnsiString;Sec:integer&# 41;;overload;
    Procedure MyMessage(str:AnsiString);overload;

    { Public declarations }
    end;

    var
    SmallMes: TSmallMes;

    implementation

    {$R *.dfm}

    {/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-}

    Procedure TSmallMes.MyMessage(str:AnsiString;Sec&#58 ;integer);
    begin
    Label1.Caption:=str;
    SmallMes.Width:=Label1.Width+15;
    Label1.Align:=alClient;
    tm:=Sec;
    SmallMes.Show();
    SmallMes.Update();
    if(tm>0)then
    Timer1.Enabled:=true
    else
    Screen.Cursor := crSQLWait;
    end;

    {/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-}

    Procedure TSmallMes.MyMessage(str:AnsiString);
    begin
    Label1.Caption:=str;
    SmallMes.Width:=Label1.Width+15;
    Label1.Align:=alClient;
    SmallMes.Show();
    SmallMes.Update();
    end;

    {/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-}

    procedure TSmallMes.Timer1Timer(Sender: TObject);
    begin
    Dec(tm);

    if tm<=0 then
    begin
    Timer1.Enabled:=false;
    Close();
    end;
    end;

    {/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-}

    procedure TSmallMes.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
    Screen.Cursor := crDefault;
    Label1.Align:=alCustom;
    Label1.Caption:=' ';
    end;

    end.



    بعد SmallMess.mymeesage را در فرم فراخوانی کن حتی می توانی فرم صدا زننده را Enable:=False کنی تا وقتی که می خواهی فعال شود

  4. #4
    من قبلا یه کامپوننت نوشته ام برای این کار!

    این کامپوننت با استفاده از یک Thread کار های مورد نیاز شما را انجام می دهد. در این صورت برنامه ات متقف نخواهد شد.

    نام کامپوننت ThreadWorker است از آدرس زیر بگیرش:
    http://www.geocities.com/salarsoftxp..._downloads.htm

    کارهایی رو که لازم است انجا بدی در رویداد OnExecute انجام بده.
    و در پایان رویداد onEndExecute رخ خواهد داد.

    نمونه استفاده شده از این کامپوننت برنامه Wrapper است! :wink:

    در ضمن از ShowModal استفاده نکن!

  5. #5
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    104
    ممنون از همه :flower: :flower: :flower: :flower:

  6. #6
    در ضمن از ShowModal استفاده نکن!
    این یعنی چی؟‌! :!:
    نوشتن این جمله به این صورت، یک معنی داره اونم اینه که یعنی ShowModal مشکل داره.
    اگر اینطوره مشکلش چیه؟

    با تشکر :wink:

  7. #7
    کاربر دائمی آواتار MiRHaDi
    تاریخ عضویت
    تیر 1383
    محل زندگی
    تهران - سوهانک
    پست
    982
    سلام
    ShowModal یعنی فرم اصلی DEsable تا وقتی که ModalForm فعال هست ! و برای همین هم تا نبندیش به فرم اصلی نمیره ! باید Show کنی و میتونی مثلا وقتی اینو نشون میدی فرم اولی رو پنهان کنی تا کارشو بکنه بعد جاشونو عوض کنی اگه نمیخوای از thread ها استفاده کنی این یک ماس مالیه راحته
    قربانت و بای !
    راستی SalarSoft جان !‌ این URL که دادی تو اینترنت من فیلتر شده :o
    اگه میشه اینجا بفرستش
    قربانت

  8. #8

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

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