خوش آمديد!
07:04 يكشنبه 31 ارديبهشت ماه ، 1391
تبلیغات راست
پکیج آموزش جامع دوره مهندسی شبکه مایکروسافت MCSE
خبر خوان

خبر خوان

دسته بندی مقالات
وب
  مقالات HTML
  مقالات PHP
  مقالات ASP.NET
  مقالات CSS
  مقالات XML
  مقالات JavaScript
  مقالات CMS
  مقالات Dreamweaver
  مقالات ColdFusion
  مقالات IIS
  مقالات Apache
  مقالات AJAX
  مقالات Flex
  مقالات AIR
  مقالات Expression Web
  مقالات SEO
  مقالات عمومی وب
برنامه نویسی
  مقالات C / C++
  مقالات C#
  مقالات VB.NET
  مقالات VB6
  مقالات دلفی
  مقالات VbScript
  مقالات اکشن اسکریپت
  مقالات Python
  مقالات سیلور لایت
  مقالات عمومی برنامه نویسی
سخت افزار
  مقالات CPU
  مقالات RAM
  مقالات دیسک سخت
  مقالات MainBoard
  مقالات کیبورد
  مقالات کارت گرافیک
  مقالات چاپگر
  مقالات عمومی سخت افزار
سیستم عامل
  مقالات ویندوز سون
  مقالات ویندوز ویستا
  مقالات ویندوز XP
  مقالات لینوکس
  مقالات سیستم عامل مک
  مقالات عمومی سیستم عامل
گرافیک دو بعدی
  مقالات فتوشاپ
  مقالات Illustrator
  مقالات Corel
  مقالات Painter
  مقالات QuarkXpress
  مقالات InDesign
  مقالات Fireworks
  مقالات Lightroom
  مقالات Bridge
  مقالات آکروبات
  مقالات فلش
  مقالات Expression Medial
  مقالات Expression Blend
  مقالات عمومی گرافیک دو بعدی
گرافیک سه بعدی و انیمیشن سازی
  مقالات تردی مکس
  مقالات مایا
  مقالات اتوکد
  مقالات عمومی گرافیک سه بعدی
میکس و مونتاژ
  مقالات After Effects
  مقالات پرمیر
  مقالات ادیوس
  مقالات SoundBooth
  مقالات Apple Reason
  مقالات Corel Video Studio
  مقالات Audition
  مقالات Pro Tools
  مقالات FLStudio
  مقالات SoundFordge
  مقالات عمومی ویرایش صوت و فیلم
پایگاه داده
  مقالات SQL Server
  مقالات اکسس
  مقالات MySQL
  مقالات اراکل
  مقالات عمومی پایگاه داده
شبکه
  مقالات اکسچنج سرور
  مقالات SharePoint Server
  مقالات ویندوز سرور 2003
  مقالات ویندوز سرور 2008
  مقالات ISA Server
  مقالات VMware
  مقالات MS Virtualization
  مقالات MCSE
  مقالات MCITP
  مقالات CCNA
  مقالات CCNP
  مقالات CCIE
  مقالات مایکروسافت System Center
  مقالات Wireless
  مقالات Wi-Fi
  مقالات WiMax
  مقالات Citrix
  مقالات DSL
  مقالات BizTalk
  مقالات Commerce Server
  مقالات Forefront
  مقالات Groove
  مقالات Communication Server
  مقالات Project Server
  مقالات Storage Server
  مقالات امنیت شبکه
  مقالات VoIP
  مقالات عمومی شبکه
آفیس و برنامه های تجاری
  مقالات Word
  مقالات Excel
  مقالات Access
  مقالات PowerPoint
  مقالات Visio
  مقالات OneNote
  مقالات Publisher
  مقالات Outlook
  مقالات Amalga
  مقالات Dynamics AX
  مقالات Dynamics CRM
  مقالات Dynamics GP
  مقالات Dynamics NAV
  مقالات Dynamics POS
  مقالات Dynamics RMS
  مقالات Dynamics SL
  مقالات عمومی آفیس و برنامه های تجاری

آموزش دلفی - بخش سوم

 آموزش دلفی

نمایش میزان كپی شدن فایل با 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 ;



ارسال شده در مورخه : دوشنبه، 18 آبان ماه ، 1388   چاپ مطلب

آموزش مجازی سازی با VMWare


مرتبط با موضوع :

 آموزش دلفی - بخش دوم  [دوشنبه، 18 آبان ماه ، 1388]
 آموزش دلفی - بخش اول  [دوشنبه، 18 آبان ماه ، 1388]


تبلیغات چپ
پکیج Windows Server 2008 MCITP Enterprise Administ
آخرین مقالات
· لپ تاپ های Samsung Series 7 Game 3D
· پرطرفدارترین موبایل های هوشمند تا بهار ۲۰۱۲
· Sony Unveila Xperia Sola و صفحه نمایش شناور
· کنترل دستگاه اندرویدی توسط دسکتاپ
· 10 تبلت برتر بهار سال 2012
· Optimus 3D Max دومین گوشی سه بعدی ال جی به عنوان محصولی بی همتا
· G6-1160EE لپ تاپ باقابلیت و پرمخاطب HP
· راه های افزایش امنیت در اینترنت
· آموزش مراحل پاک کردن آرشیو یاهو مسنجر
· مانیتورهایی مخصوص بازی های ویدئویی و گیمرها
· نکات مهم در مورد سرچ گوگل
· معرفی بهترین تبلت های بازار از نظر کیفیت نمایشگر
· معرفی رایانه ها و تبلت های سازگار با ویندوز ۸
· ویژگی های Galaxy note 10.1 شرکت سامسونگ
· مهمترین دلایل خرابی سریع لپ تاپ ها
· معرفی ۶ لپ تاپ برتر مخصوص گیمرهای حرفه ای
· نصب مجدد ویندوز ۸ با یک کلیک ساده توسط مایکروسافت!
· وای-گیگ چیست؟
· هر آنچه باید در مورد اولترابوک ها بدانیم
· معرفی Google Cloud Print و آموزش راه اندازی این سرویس
· بررسی تلفن هوشمند HTC One X
· فوجیتسو اولین سری از اولترابوک های خود را معرفی کرد
· هر آنچه که لازم است از Galaxy S III سامسونگ بدانید
· راهنمای گام به گام اشتراک گذاری فایل های بزرگ در SkyDrive
· 15 روش برای سرعت بخشیدن به کندترین بخش کامپیوتر

[ موارد بیشتر در بخش اخبار و تازه ها ]
پربیننده ترین مقالات
· استاندارد های ISO/IEC 17799 و BS7799-2
· توصیه های مهم امنیتی در مورد لینوکس و یونیکس
· گرما در cpuها
· معماری client/Server در اینترنت
· آشنایی با سیستم فایل GNU/Linux
· یک MAC BOOK PRO جدید در بازار ایران
· معرفی دو مدل لپ تاپ با قابلیت سونی سری F
· F137HG/B، لپ تاپ سایز بزرگ سونی در بازار داخلی
· اندر احوالات کرک و کپی رایت
· EE31FX/BJ، لپ تاپ ارزان قیمت سونی در بازار داخلی
· معرفی z216 FX/L از لپ تاپ های سونی
· مدل MD313LL/A ، Macbook ارزان قیمت در بازار داخل
· تاریخچه کامپیوتر
· مشاهده آنلاین سوابق بیمه شدگان
· چگونگی اختصاص دادن یک آدرس IP استاتیک به یک رایانه در شبکه در ویندوز Xp ، Vista یا Seven
· آشنایی با روتر و سوئیچ(router and switch)
· تاریخچه ی پیدایش زبان های برنامه نویسی شی گرا
· الگوریتم های مرتب سازی آرایه ها
· GPS چیست؟
· به روز رسانی ویندوز 7 با نرم افزار Windows Update
· پایگاه داده های سیار Mobile database
· بازیابی رمز عبور در ویندوز 7
· معماری سرویس گرا Service Oriented Architecture چیست؟
· انتقال اطلاعات با Replication در SQL Server
· آموزش نرم افزار Virtual Box

[ موارد بیشتر در بخش اخبار و تازه ها ]
مقالات تصادفی
· دنیای لینک و لینکدونی ها
· گوشی هوشمند جدید HTC با کلید ویژه برای فیس بوک
· 10 سایت برتر سال 1389 از نگاه وبنا
· چگونه حافظه های یو اس بی را از کامپیوتر جدا کنیم؟
· بررسی فایروال رایگان ZoneAlarm Free Firewall 9.2
· دسترسی به سیستم از راه دور با TeamViewer
· لینگرو (Lingro) دیکشنری مخصوص زبان آموزان
· ویراش های مختلف SQL Server 2008
· شبکه اجتماعی مای اسپیس فروخته شد
· بررسی ۳ مدل از جدیدترین لپ تاپ سونی در بازار ایران
· طراحی اینترنت جدید
· طرحهای پس‌زمینه در برنامه WordPerfect
· معرفی تبلتی دیگر از توشیبا
· معارف اسلامی در اینترنت
· بررسی کامل Samsung Galaxy Note، تلفن هوشمند و تبلت در یک دستگاه
· هر آنچه که لازم است از Galaxy S III سامسونگ بدانید
· شبکه شبکه ها
· بررسی توان باتری با نرم افزار Battery Eater
· وجود يک باگ در ويندوز 7
· دعوای مایکروسافت گوگل بر سر حفره های امنیتی!
· معرفی و مقابله با ویروس ها
· شارپ تلفن همراه ۳ بعدی دیگری را معرفی کرد
· آن سوی جستجو
· قالب دستوری اكشن اسكریپت
· آشنایی با Google Web Toolkit ابزاری برای پیاده سازی Ajax

[ موارد بیشتر در بخش اخبار و تازه ها ]
امتیاز دهی به مطلب
امتیاز متوسط : 2
تعداد آراء: 2


لطفا رای مورد نظرتان را در مورد این مطلب ارائه نمائید :

عالی
خیلی خوب
خوب
متوسط
بد

آموزش طراحی وب با دریم ویور