close
تبلیغات در اینترنت
آموزش دلفی - بخش سوم
مرورگرهای پیشنهادی :
موضوعات
  • پایان نامه و مقاله فنی مهندسی
  • مهندسی برق ، الکترونیک ، مخابرات
  • مهندسی فناوری اطلاعات
  • مهندسی کامپیوتر
  • مهندسی مکانیک
  • مهندسی عمران
  • مهندسی معماری
  • مهندسی ساخت و تولید
  • مهندسی منابع طبیعی
  • مهندسی کشاورزی
  • مهندسی شیلات
  • مهندسی صنایع
  • مهندسی مواد
  • مهندسی نقشه برداری
  • مهندسی تاسیسات
  • مهندسی شیمی
  • مهندسی متالوژی
  • مهندسی نساجی
  • مهندسی معدن
  • مهندسی نفت
  • محیط زیست
  • جوشکاری
  • پایان نامه و مقاله علوم انسانی
  • حقوق
  • اقتصاد
  • مدیریت
  • جغرافیا
  • جهانگردی
  • حسابداری
  • تربیت بدنی
  • ادبیات فارسی
  • علوم سیاسی
  • علوم اجتماعی
  • مدیریت صنعتی
  • مدیریت روابط عمومی
  • احکام و معارف اسلامی
  • روانشناسی و علوم تربیتی
  • گرافیک
  • هنر
  • بیمه
  • تاریخ
  • موسیقی
  • صنایع دستی
  • پایان نامه و مقاله پزشکی
  • علوم آزمایشگاهی
  • بهداشت عمومی
  • طب هسته ای
  • چشم پزشکی
  • جنین شناسی
  • روان پزشکی
  • دندانپزشکی
  • پیراپزشکی
  • دامپزشکی
  • طب سنتی
  • داروسازی
  • پرستاری
  • پزشکی
  • مامایی
  • آناتومی
  • ژنتیک
  • پایان نامه و مقاله علوم پایه
  • زیست شناسی
  • زمین شناسی
  • دندانپزشکی
  • دامپزشکی
  • پزشکی
  • فیزیک
  • پاورپوینت و اسلاید فنی مهندسی
  • پاورپوینت معماری
  • پاورپوینت کامپیوتر و IT
  • نمونه سوالات استخدامی
  • نمونه سوالات استخدامی بانک
  • نمونه سوالات استخدامی آموزش و پرورش
  • نمونه سوالات استخدامی شهرداری
  • نمونه سوالات استخدامی تامین اجتماعی
  • نمونه سوالات استخدامی دستگاه اجرایی
  • نمونه سوالات استخدامی فنی و حرفه ای
  • نمونه سوالات استخدامی وزارت خانه ها
  • نمونه سوالات استخدامی نظامی
  • سایر نمونه سوالات استخدامی
  • جزوات دانشگاهی
  • جزوات دروس مشترک دانشگاهی
  • جزوات مهندسی برق
  • جزوات مهندسی مکانیک
  • جزوات مهندسی عمران
  • جزوات رشته حسابداری
  • جزوات مهندسی فیزیک
  • جزوات مهندسی معماری
  • جزوات مهندسی ریاضی
  • جزوات مهندسی صنایع
  • جزوات مهندسی شیمی
  • جزوات مهندسی کامپیوتر و IT
  • جزوات رشته زمین شناسی
  • جزوات رشته روانشناسی
  • جزوات مهندسی مخابرات
  • جزوات رشته مدیریت
  • جزوات تربیت بدنی
  • جزوات حقوق
  • گزارش کارآموزی فنی مهندسی
  • مهندسی کامپیوتر (سخت افزار - نرم افزار)
  • مهندسی مکانیک
  • مهندسی برق
  • مهندسی شیمی
  • مهندسی فناوری اطلاعات
  • صنایع غذایی
  • حسابداری
  • مدیریت
  • مطالب پربازدید
    مطالب تصادفی
    مطالب پیشین
  • بررسی رابطه تيپ های شخصيتی دبيران دبيرستانهای دخترانه با میزان موفقیت (پنجشنبه 13 اردیبهشت 1397)
  • بررسی پيش تجربی سياهه مشاوره ای لوئيس سوال هاي شماره 3 تا 45 (از مقياس اطمينان اجتماعی) (پنجشنبه 13 اردیبهشت 1397)
  • بررسی مقدماتی شخصيتی كرنل براي سوال 36 و 37 بر روي دانشجويان دانشگاه آزاد اسلامي (پنجشنبه 13 اردیبهشت 1397)
  • مقايسه مشكلات زبان عادی ويژه (چهارشنبه 12 اردیبهشت 1397)
  • مقایسه ویژگی های شخصیتی شخصیت ضد اجتماعی و انحرافات اجتماعی در بین دانشجویان دختر و پسر (جمعه 07 اردیبهشت 1397)
  • بررسی رابطة تك فرزندی با اختلالات رفتاری (چهارشنبه 05 اردیبهشت 1397)
  • بررسی توصيفی موسيقی و موسيقی درمانی بر روی انسان ها (چهارشنبه 05 اردیبهشت 1397)
  • بررسی تأثير ناكامی در ميزان پرخاشگری بين دانش آموزان دختر و پسر مقطع ابتدايی (چهارشنبه 05 اردیبهشت 1397)
  • بررسی ميزان تأثير اردوهای تربيتی ـ آموزشی بر رشد شخصيت دانش آموزان (چهارشنبه 05 اردیبهشت 1397)
  • نياز سنجی كاركنان اطلاعات (چهارشنبه 05 اردیبهشت 1397)
  • مقايسه هوش هيجانی و جرأت ورزی در دانش‌آموزان دختر و پسر نابينا و عادی (چهارشنبه 05 اردیبهشت 1397)
  • مقایسه میزان هیجان خواهی دانشجویان متأهل و مجرد (چهارشنبه 05 اردیبهشت 1397)
  • مددکاری (چهارشنبه 05 اردیبهشت 1397)
  • بررسی علل گرايش جوانان و نوجوانان به قرص های روان گردان (چهارشنبه 05 اردیبهشت 1397)
  • شناسايی نيازهای آموزشی و ترويجی توتون کاران (چهارشنبه 05 اردیبهشت 1397)
  • نمایش میزان كپی شدن فایل با ProgressBar در دلفی
    چطور میتوان زمان کپی شدن فایل را با استفاده از ProgressBarنمایش داد؟

    نمایش میزان كپی شدن فایل با ProgressBarدر دلفی
    چطور میتوان زمان کپی شدن فایل را با استفاده از ProgressBarنمایش داد؟
    برای انجام این کار ابتدا بر روی یک فرم یک ProgressBarاضافه کنید سپس تابع زیر را تایپ کنید:



     

    procedure TForm1.CopyFileWithProgressBar1(Source, Destination: string);
    var
       FromF, ToF: file of byte;
       Buffer: array[0..4096] of char;
       NumRead: integer;
       FileLength: longint;
    begin
       AssignFile(FromF, Source);
       reset(FromF);
       AssignFile(ToF, Destination);
       rewrite(ToF);
       FileLength := FileSize(FromF);
       with Progressbar1 do
       begin
          Min := 0;
          Max := FileLength;
          while FileLength > 0 do
          begin
             BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);
             FileLength := FileLength - NumRead;
             BlockWrite(ToF, Buffer[0], NumRead);
             Position := Position + NumRead; 
          end;
          CloseFile(FromF);
          CloseFile(ToF); 
       end;
    end;

    در این تابع شما در واقع فایل مبدا را خوانده و در مقصد مینویسید. حالا یک دکمه اضافه کرده کد زیر رو اضافه نمایید:

    procedure TForm1.Button1Click(Sender: TObject);
    begin
       CopyFileWithProgressBar1('c:Welcome.exe', 'c:tempWelcome.exe’);
    end;

    چطور می توان زمان کپی شدن فایل را محاسبه و نمایش داد؟
    برای این کار نیز میتوانید از تابع زیر استفاده کنید:

    procedure TForm1.CopyFileWithProgressBar1(Source, Destination: string);
    var
       FromF, ToF: file of byte;
       Buffer: array[0..4096] of char;
       NumRead: integer;
       FileLength: longint;
       t1, t2: DWORD;
       maxi: integer; 
    begin 
       AssignFile(FromF, Source); 
       reset(FromF); 
       AssignFile(ToF, Destination);
       rewrite(ToF);
       FileLength := FileSize(FromF);
       with Progressbar1 do
       begin 
          Min := 0;
          Max := FileLength;
          t1 := TimeGetTime;
          maxi := Max div 4096;
          while FileLength > 0 do
          begin
             BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);
             FileLength := FileLength - NumRead;
             BlockWrite(ToF, Buffer[0], NumRead);
             t2 := TimeGetTime;
             Min := Min + 1;
             // Show the time in Label1
             label1.Caption := FormatFloat('0.00', ((t2 - t1) / min * maxi - t2 + t1) / 100);
             Application.ProcessMessages;
             Position := Position + NumRead;
          end;
          CloseFile(FromF);
          CloseFile(ToF);
       end;
    end;

    در این تابع ابتدا زمان اولیه در متغیر t1ذخیره شده و سپس پس از کپی شدن هر قسمت از فایل، زمان در متغیر t2ذخیره میشود و توسط فرمول زیر مقدار زمان باقی مانده تا کپی کامل فایل بدست می آید.

    ((t2 - t1) / min * maxi - t2 + t1) / 100

    نصب ProgressBarروی StatusBarدر دلفی
    انجام این کار بسیار ساده است. برای این کار کافی است بر روی فرم خود یک StatusBarاضافه نمایید حالا در قسمت تعاریف متغیر های عمومی کد زیر را بنویسید:

    ProgressBar1: TprogressBar;

    در ادامه دستورات زیر را در خاصیت OnCreateفرم خود بنویسید:

    var
       ProgressBarStyle: LongInt;
    begin
       {create a run progress bar in the status bar}
       ProgressBar1 := TProgressBar.Create(StatusBar1);
       ProgressBar1.Parent := StatusBar1;
       {remove progress bar border}
       ProgressBarStyle := GetWindowLong(ProgressBar1.Handle, GWL_EXSTYLE);
       ProgressBarStyle := ProgressBarStyle - WS_EX_STATICEDGE; 
       SetWindowLong(ProgressBar1.Handle, GWL_EXSTYLE, ProgressBarStyle);
       {set progress bar position and size - put in Panel[2]}
       ProgressBar1.Left := StatusBar1.Panels.Items[0].Width+
       StatusBar1.Panels.Items[1].Width + 4;
       ProgressBar1.Top := 4;
       ProgressBar1.Height := StatusBar1.Height - 6;
       ProgressBar1.Width := StatusBar1.Panels.Items[2].Width - 6; 
       {set range and initial state}
       ProgressBar1.Min := 0;
       ProgressBar1.Max := 100;
       ProgressBar1.Step := 1;
       ProgressBar1.Position := 0;
    end;

    حالا برای آنکه پس از خارج شدن از فرم حافظه اشغال شده آزاد گردد، در قسمت OnDestroyدر Eventفرمتان دستور زیر را اضافه نمایید:

    ProgressBar1.free;

    استفاده از DLLها در دلفی
    ایجاد یک DLL
    با استفاده از منو فایل گزینه New Itemsرا انتخاب کنید و آیتم DLL Wizardرا انتخاب نمایید. حال به فایل ایجاد شده، یک فرم با استفاده از روش بالا اضافه نمایید. دقت نمایید که Applicationرا بجای فرم انتخاب ننمایید. حال اگر فرض کنیم که نام فرم شما Demoباشد و بانام UDemo.pasآنرا ذخیره کرده باشید. باید در فایل DLLبصورت زیر کد نویسی نمایید:

    library demodll;

    {Important note about DLL memory management: ShareMem must be the
    first unit in your library's USES clause AND your project's (select
    Project-View Source) USES clause if your DLL exports any procedures or
    functions that pass strings as parameters or function results. This
    applies to all strings passed to and from your DLL--even those that
    are nested in records and classes. ShareMem is the interface unit to
    the BORLNDMM.DLL shared memory manager, which must be deployed along
    with your DLL. To avoid using BORLNDMM.DLL, pass string information
    using PChar or ShortString parameters.}

    uses
       SysUtils,
       Classes,
       UDemo in 'UDemo.pas' {Demo};

    {$R *.res}
    procedure ShowdemoForm;stdcall;
    begin
       Demo :=Tdemo.Create(nil);
       demo.Show;
    end;

    function ShowdemoFormModal:integer;stdcall;
    begin
       demo :=Tdemo.Create(nil);
       Result := demo.ShowModal;
    end;

    Exports
       ShowDemoForm,
       ShowdemoFormModal;
    begin
    end.

    دقت کنید که نام DLLفوق DemoDllمی باشد و با نام DemoDll.dprذخیره گردیده است.
    حال بر روی فرم موجود تمام دکمه ها و آبجکت های مورد نظرتان را اضافه و کد نویسی کنید (اختیاری). در پایان در منو Projectگذینه Build DemoDllرا انتخاب کرده و اجرا نمایید. فایلی با نام DemoDll.dllایجاد می گردد که برای استفاده آماده است.

    استفاده از یک DLLبصورت دینامیکی
    برای استفاده از یک DLL بصورت دینامیکی، ابتدا نام توابعی را که در فایل DLLشما موجود است بصورت زیر تعریف نمایید:

    unit UMain;
    interface
    uses
       Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
       Dialogs, StdCtrls, ExtCtrls;
    type
       TShowdemoFormModal= Function :integer;
       .
       .
       .

    دقت کنید که نام برنامه انتخابی پیش فرض Mainو با نام UMain.pasذخیره گشته است. حال برای لود کردن DLLیادشده، یک دکمه بر روی فرم قرارداده آنرا بصورت زیر کد نویسی کنید:

    var
       hndDLLHandle:THandle;
       ShowdemoFormModal:TShowdemoFormModal; 
       procedure TFMain.Button1Click(Sender: TObject);

    begin
       try 
       hndDLLHandle:=LoadLibrary('Demodll.dll’);

       if hndDLLHandle <> 0 then begin 
          @ShowdemoFormModal:=getProcAddress(hndDLLHandle,'ShowdemoFormModal’);

       if addr(ShowdemoFormModal) <> nil then begin 
          ShowdemoFormModal;
       end
       else
          showmessage ('function not exists…’);
       end
    else
          showMessage('Dll Not Found!’);
    finally 
    freelibrary(hndDLLHandle); 
    end;
    end;

    محدودكردن تغییر اندازه فرم در دلفی
    گاهی اوقات نیاز است فرم ما از نظر اندازه پیرو یک الگو باشد و کاربر نتواند خارج از محدوده این فرم را تغییر اندازه دهد، راهی که پیشنهاد می شود، استفاده از Windows Messages، تابع WM_GetMinMaxInfoمیباشد.

    unit MinMax;
    interface
    uses
       SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
       Forms, Dialogs;
    type
       TForm1 = class(TForm)
       private
       {Private declarations}
       procedure WMGetMinMaxInfo(var MSG: Tmessage); message WM_GetMinMaxInfo;
       public
       {Public declarations}
    end;

    var
       Form1: TForm1;
       implementation
       {$R *.DFM}
       procedure TForm1.WMGetMinMaxInfo(var MSG: Tmessage);
    Begin
       inherited;
       with PMinMaxInfo(MSG.lparam)^ do
       begin
          with ptMinTrackSize do
          begin
             X := 300;
             Y := 150;
          end; 
          with ptMaxTrackSize do
          begin
             X := 350;
             Y := 250;
          end; 
       end;
    end;



    کسب درآمد با فروش فایل های سایت ما

    درباره :
    برچسب ها :محدودكردن تغییر اندازه فرم در دلفی ,استفاده از یک DLL بصورت دینامیکی ,استفاده از DLLها در دلفی ,نصب ProgressBar روی StatusBar در دلفی ,
    بازدید : 1304 تاریخ : نویسنده : بهرام محمدپور | نظرات ()
    ارسال نظر برای این مطلب

    نام
    ایمیل (منتشر نمی‌شود) (لازم)
    وبسایت
    :):(;):D;)):X:?:P:*=((:O@};-:B/:):S
    نظر خصوصی
    مشخصات شما ذخیره شود ؟[حذف مشخصات] [شکلک ها]
    کد امنیتی
    آمار سایت
  • آمار مطالب
  • کل مطالب : 4311
  • کل نظرات : 17
  • آمار کاربران
  • افراد آنلاین : 7
  • آمار بازدید
  • بازدید امروز : 5,783
  • باردید دیروز : 23,407
  • گوگل امروز : 7
  • گوگل دیروز : 46
  • بازدید هفته : 5,783
  • بازدید ماه : 144,593
  • بازدید سال : 832,513
  • بازدید کلی : 6,686,239
  • نظرسنجی
    چه مطالبی در سایت قرار دهیم؟





    کدهای اختصاصی