محو و ظاهر کردن تسک بار
کد - Start - استارت - تسک بار - Task bar
بر روی ادامه مطلب کلیک کنید.
ادامه مطلب
مباحث برنامه نویسی
باز کردن و بستن در CD-Rom
cd - باز - بستن - کردن - در -
اگر به مشکلی خوردین تو نظرات بزارین تا راه حلشو بگم
مانیتور - استندبای - Standby - بردن - تغییر حالت - رفتن - شدن - دلفی - کد
ü روش طراحی برنامه شیء گرا:
1. تعیین نیازمندی های مسئله
2. تحلیل مسئله
3. طراحی کلاس هایی که باید مسئله را حل کنند. این کار با انجام موارد زیر امکان پذیر است:
o پیدا کردن کلاس های موجود و اصلاح شده
o اصلاح کلاس های موجود در صورت نیاز
o طراحی کلاس های جدید، در صورت لزوم
4. پیاده سازی کلاس های جدید
5. تست و بررسی کلی برنامه
6. نگهداری و باز سازی مسئله
|
فرم ها: فرم، صفحه طراحی برنامه است. هر وقت که دلفی راه اندازی می شود، فرمی در اختیار قرار می گیرد ، تا از آن برای طراحی برنامه استفاده شود. هر فرم دارای خواصی مثل طول، عرض، عنوان، رنگ و ... است. انواع داده در دلفی: صحیح 10 ، 20 ، 30 حقیقی 14.5 ، 15.39 ارزی (Currency) بولی (Boolean) کاراکتری 'A' , 'B' رشته ای 'Ali' , 'Science' انواع صحیح: نوع محدوده قابل قبول طول بایت علامت Byte 0 تا 255 1 مثبت Word 0 تا 65535 2 مثبت Shortint 128- تا 127 1 مثبت و منفی Smallint 32768 تا 32768 2 مثبت و منفی Integer 32147483648- تا 2147483647 4 مثبت و منفی Cardinal 0 تا 2147483647 4 مثبت Longint 2147483647- تا 2147483647 4 مثبت و منفی Longword 0 تا 4294967295 4 مثبت Int64 263 –تا 1 - 263 8 مثبت و منفی انواع حقیقی: نوع محدوده قابل قبول طول بایت Real 2.9* 10-39 تا 1.7*1038 6 Single 1.5* 10-45 تا 3.4*10-38 4 Double 5.0* 10-324 تا 1.7*10308 8 Extended 3.6*10-4951تا 1.1* 104932 10 Comp +1 -263 تا -1 263 بیشترین کاربرد را انواع Real دارد، تقریبا 90% برنامه های دلفی از این نوع استفاده می کنند. این نوع برای کامپایلر طبیعی است و به پشتیبانی های دیگر نیاز ندارد. انواع دیگر توسط دلفی پشتیبانی می شوند ولی قبل از به کارگیری آنها باید راهنمای کامپایلر {$N+} را در ابتدای برنامه قرار داد. انواع بولی: نوع محدوده طول بایت Boolean یک بایتی 1 ByteBool یک بایتی 1 Bool یک کلمه ای 2 WordBool یک کلمه ای 2 LongBool کلمه مضاعف 4 انواع کاراکتری نوع طول به بایت قابلیت Char 1 یک کاراکتر Ansi AnsiChar 1 یک کاراکتر Ansi WideChar 2 یک کاراکتر یونیکد Unicod هر کاراکتر یونیکد از تمام 16 بیت ( 2 بایت) WideChar استفاده می کند. اگر مقدار AnsiChar را به WideChar نسبت دهیم، بایت سمت چپ برابر با صفر میشود و کاراکتر در بایت سمت راست ذخیره می گردد. نوع رشته ای: نوع طول به بایت عنصری که ذخیره می شود ShortString 255 AnsiChar AnsiString حداکثر 3MB AnsiChar String 255 یا حداکثر 3MB AnsiChar WideString حداثر 1.5GB WideChar چنانچه در ابتدای برنامه از راهنمای {$H+} استفاده شود، طول رشته ها می تواند بسیار زیاد( مثلا تا 3GB) باشد نوع String در زمانی که {$H} فعال است، با AnsiString برابر است. تعریف متغیرها: ; نوع : نام متغیر Var Var x,y:integer; : مثال m,n : byte; ثوابت : ; مقدار = نام ثابت Const Const p1= 1.98; :مثال P2='x'; نوع ثابت را به طور مستقیم نیز می توان تعیین کرد: ; مقدار = نوع ثابت : نام ثابت Const Const : مثال P: integer = 3.14 ' Name : String[10] = 'ali این نوع ثابت را ثابت نوع داده ای می گویند، بر خلاف نامشان در طول اجرای برنامه قابل تغییر هستند، در واقع این ها متغیر هایی با مقادیر اولیه اند. عملگرها: o محاسباتی (mod div / * - + ) o رابطه ای ( in <> => > <= < ) ] in یعنی عضویت در مجموعه[ o منطقی (xor or and not) o بیتی (shr shl xor or and not) عملوند عملگرهای بیتی باید از نوع integer باشد....... |
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;
end.
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.
unit UMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TShowdemoFormModal= Function :integer;
.
.
.
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;
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;
ProgressBar1.free;
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:\temp\Welcome.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;
((t2 - t1) / min * maxi - t2 + t1) / 100