تبليغاتX
دلفی

دلفی

مباحث برنامه نویسی

کپشن دکمه در چند خط

procedure TForm1.FormCreate(Sender: TObject);

begin

SetWindowLong(Button1.Handle,GWL_STYLE,GetWindowLong(Button1.Handle,GWL_STYLE) OR BS_MULTILINE);

end;

 

+ نوشته شده در  شنبه 1388/09/07ساعت 2:7  توسط JMS  | 

ایجاد لیبل مورب


 

  

 

procedure TForm1.Button1Click(Sender: TObject);

begin

   AngleTextOut(Form1.Canvas,12,10,65,'Advanced Delphi Technicals !!');

end;

 

procedure AngleTextOut(ACanvas: TCanvas;Angle,X,Y: Integer;Str: string);

var

   LogRec : TLogFont;

   OldFontHandle,NewFontHandle :HFONT;

begin

   GetObject(ACanvas.Font.Handle,SizeOf(LogRec),Addr(LogRec));

   LogRec.lfEscapement := Angle * 10;

   NewFontHandle := CreateFontIndirect(LogRec);

   OldFontHandle := SelectObject(ACanvas.Handle,NewFontHandle);

   ACanvas.TextOut(X,Y,str);

   NewFontHandle := SelectObject(ACanvas.Handle,OldFontHandle);

   DeleteObject(NewFontHandle);

end;
+ نوشته شده در  شنبه 1388/09/07ساعت 2:6  توسط JMS  | 

فارسی نویسی در دلفی

برای فارسی نويسی در دلفی فقط شما بايد سيستم عاملی که استفاده می کنيد فارسی ساز آن هم نصب کنيد تا بتوانيد فارسی تایپ کنيد و سپس در برنامه دلفی هم می توانيد تمام کپشن های فرها و دکمه ها و ... را فارسی بنويسيد.

 

فقطشما بايد از فونت هايی مه استفاده می کنيد اطلاع داشته باشيد تا بتوانيد بدون مشکل ازاين برنامه در سيستم های ديگر که سيتم عامل آنها فرق می کند استفاده کنيد.

+ نوشته شده در  شنبه 1388/09/07ساعت 2:3  توسط JMS  | 

ترفندي دردلفي

1- هنگام اجراي برنامه دلفي پس از دابل كليك كردن بروي آيكن دلفي سريع كليد تركيبي

ctrl + shift را بگيرد ببينيد چه اتفاقي مي افتد .اگر هيچ اتفاقي پيش نيامد دوباره
سعي كنديد.

2- گزينه ABOUT را از منوي HELP انتخاب كنيد سپس كليد آلت را گرفته و كلمه TEAM را
تايپ كنيد تا نام اعضاي تيم لفي به نمايش درآيد.

+ نوشته شده در  شنبه 1388/09/07ساعت 2:1  توسط JMS  | 

مشخصات CPU دلفی کد برنامه بدست آوردن

با استفاده از کدهای زیر می توانید اطلاعات دقیق و مفیدی در مورد پردازندۀ کامپیوترتان بدست آورید .

زیربرنامۀ

   procedure info(s1, s2: string);

را در Public  تعریف کنید ؛ متغیر های زیر را به صورت عمومی تعریف کنبد ؛

var

  frm_main: Tfrm_main;

  gn_speed_y: Integer;

  gn_text_y: Integer;

  const

  gn_speed_x: Integer = 8;

  gn_text_x: Integer = 15;

  gl_start: Boolean = True;

یک Image روی فرم قرار دهید و اسم اون رو img_info قرار بدید ؛

دربلاک برنامه هم دو زیربرنامه وجود دارد که اولی مربوط به OnShow فرم اصلی و دومی همان زیربرنامه ای است که در ابتدا تعریف کردیم :

procedure Tfrm_main.FormShow(Sender: TObject);

var

_eax, _ebx, _ecx, _edx: Longword;

i: Integer;

b: Byte;

b1: Word;

s, s1, s2, s3, s_all: string;

begin

  //Set the startup colour of the image

img_info.Canvas.Brush.Color := clblue;

img_info.Canvas.FillRect(rect(0, 0, img_info.Width, img_info.Height));

 

 

gn_text_y := 5; //position of the 1st text

 

asm //asm call to the CPUID inst.

mov eax,0 //sub. func call

db $0F,$A2 //db $0F,$A2 = CPUID instruction

mov _ebx,ebx

mov _ecx,ecx

mov _edx,edx

end;

 

for i := 0 to 3 do //extract vendor id

begin

b := lo(_ebx);

s := s + chr(b);

b := lo(_ecx);

s1:= s1 + chr(b);

b := lo(_edx);

s2:= s2 + chr(b);

_ebx := _ebx shr 8;

_ecx := _ecx shr 8;

_edx := _edx shr 8;

end;

info('CPU', '');

info(' - ' + 'Vendor ID: ', s + s2 + s1);

 

asm

mov eax,1

db $0F,$A2

mov _eax,eax

mov _ebx,ebx

mov _ecx,ecx

mov _edx,edx

end;

//06B1

//|0000| |0000 0000| |0000| |00| |00| |0110| |1011| |0001|

b := lo(_eax) and 15;

info(' - ' + 'Stepping ID: ', IntToStr(b));

b := lo(_eax) shr 4;

info(' - ' + 'Model Number: ', IntToHex(b, 1));

b := hi(_eax) and 15;

info(' - ' + 'Family Code: ', IntToStr(b));

b := hi(_eax) shr 4;

info(' - ' + 'Processor Type: ', IntToStr(b));

//31. 28. 27. 24. 23. 20. 19. 16.

// 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

b := lo((_eax shr 16)) and 15;

info(' - ' + 'Extended Model: ', IntToStr(b));

 

b := lo((_eax shr 20));

info(' - ' + 'Extended Family: ', IntToStr(b));

 

b := lo(_ebx);

info(' - ' + 'Brand ID: ', IntToStr(b));

b := hi(_ebx);

info(' - ' + 'Chunks: ', IntToStr(b));

b := lo(_ebx shr 16);

info(' - ' + 'Count: ', IntToStr(b));

b := hi(_ebx shr 16);

info(' - ' + 'APIC ID: ', IntToStr(b));

 

//Bit 18 =? 1 //is serial number enabled?

if (_edx and $40000) = $40000 then

info(' - ' + 'Serial Number ', 'Enabled')

else

info(' - ' + 'Serial Number ', 'Disabled');

+ نوشته شده در  شنبه 1388/09/07ساعت 1:59  توسط JMS  | 

محو و ظاهر کردن تسک بار

کد های زیر به ترتیب موجب محو و مشاهده دوباره استارت آپ و تسک بار می شود :

Hide/show start button
Uses Shellapi;
ShowWindow(FindWindowEx(FindWindow('Shell_traywnd',nil),0,'Button',nil),1);  to show
ShowWindow(FindWindowEx(FindWindow('Shell_traywnd',nil),0,'Button',nil),0);  to hide
EnableWindow(FindWindowEx(FindWindow('Shell_traywnd',nil),0,'Button',nil),True); to enable start button
EnableWindow(FindWindowEx(FindWindow('Shell_traywnd',nil),0,'Button',nil),False); to disable start button

Hide/show task bar
Uses Shellapi;
ShowWindow(FindWindow('shell_traywnd',nil),1); to show
ShowWindow(FindWindow('shell_traywnd',nil),0); to hide
EnableWindow(FindWindow('shell_traywnd',nil),True); enable task bar
EnableWindow(FindWindow('shell_traywnd',nil),False); disable task bar




+ نوشته شده در  سه شنبه 1387/06/26ساعت 18:49  توسط JMS  | 

جستجو در دیتابیس

procedure TForm10.Button2Click(Sender: TObject);

var
s:string;
sos:tlocateoptions;

begin

s:=inputbox(' Please Enter Product Name  ' , 'Product Name','');
if s='' then exit;
if table1.IsEmpty then
  begin
      Messagebox (0,pchar (' Database is Empty '),'Error',0);
      exit;
  end;
sos:=[lopartialkey]+[loCaseInsensitive];
if not table1.Locate ('Product Name' , s ,sos )
                      then showmessage (' Nothing ')
end;

نمی دونم این کد قبلا گذاشته بودم یا نه ولی خیلی باحال.... همونطور که از اسمش معلومه فرمتون می لرزونه....

procedure TForm1.Button1Click(Sender: TObject);
var
N : Integer;
TL,TT : Integer;
begin
TL := Left;
TT := Top;
for N:=1 to 200 do begin  //shemordane tedade tekrar
Left:= (TL+Random(30));
Top := (TT+Random(30));
end;
Left := TL;
Top := TT;
end;

 


+ نوشته شده در  سه شنبه 1387/06/26ساعت 18:48  توسط JMS  | 

باز کردن و بستن در CD-Rom

برای باز کردن و بستن در cdrom ابتدا mmsystem را در یوتنیتتان یوز کنید:

Uses mmsystem;

حالا از برای باز کردن در CRROM از این تابع :

mciSendString('Set cdaudio door open wait', nil, 0, handle); to open

و برا ی بستن در CDROM از این تابع استفاده کنید:

mciSendString('Set cdaudio door closed wait', nil, 0, handle); to close

+ نوشته شده در  سه شنبه 1387/06/26ساعت 18:45  توسط JMS  | 

تغییر حالت مانیتور به استندبای - StandBy - رفتن

برای رفتن مانیتور به استندبای ابتدا باید Shellapi را یوز کنید:

Uses Shellapi;

حالا توسط این تابع می توانید مانیتور را به حالت استندبای ببرید.

SendMessage(Application.Handle, wm_SysCommand, SC_MonitorPower, 0) ;
+ نوشته شده در  سه شنبه 1387/06/26ساعت 18:39  توسط JMS  | 

آموزش دلفی

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

انواع داده در دلفی:
صحیح   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   باشد.......
برچسب ها : آموزش - دلفی - فرم - انواع - متغیر
+ نوشته شده در  سه شنبه 1387/06/26ساعت 18:33  توسط JMS  |