PDA

View Full Version : عکس دلخواه برای کرسر موس



AbiriAmir
سه شنبه 28 مهر 1388, 15:06 عصر
سلام
چطوری میتونم کرسرم رو عکس دلخواه انتخاب کنم؟؟؟
ممنون

Mahmood_M
سه شنبه 28 مهر 1388, 20:19 عصر
می تونید Cursor مورد نظر رو در فایل Resource قرار بدید و به صورت زیر اون رو لود کنید :
procedure TForm1.BitBtn1Click(Sender: TObject);
const
MyCursor = 1;
begin
Screen.Cursors[MyCursor] := LoadCursor(hInstance,'MYCUR');
Form1.Cursor := MyCursor;
end;
MYCUR در کد بالا نام کرسر در فایل رسورس هست ...
یک نکته ی دیگه : کرسرهای برنامه هرکدام یک مقدار عددی دارند که این مقادیر از 1 شروع میشه ...

اگر برای استفاده از فایلهای رسورس نیاز به توضیح هست بگید تا داده بشه ...

موفق باشید ...

AbiriAmir
چهارشنبه 29 مهر 1388, 16:10 عصر
اگه توضیح بدین ممنون میشم...

Mahmood_M
چهارشنبه 29 مهر 1388, 22:50 عصر
فایلهای Resource این امکان رو به کاربر میدن که بتونه چند فایل رو همراه برنامه قرار بده ، یعنی چند فایل رو درون فایل exe قرار بدن و به اونها دسترسی داشته باشه ...
نحوه ی ساختن فایلهای رسورس بدون هیچ ابزار خاصی به این صورته :
ابتدا باید یک فایل RC بسازید ، این فایل تنها یک فایل متنیه که پسوند rc. داره !
برنامه ی NotePad رو اجرا کنید و توی اون لیست فایلهاتون رو بنویسید، تنها نکته ای که باید توجه کنید نحوه ی نوشتن لیست فایلها هست ...
قالب نوشتن فایلها به صورت زیر هست :

ResName ResTYPE ResFileName


ResName : نام فایل مورد نظر در فایل رسورس
ResType : نوع فایل رسورس
ResFileName : نام و مسیر فایل

فرض کنید سه تا فایل داریم ، یک فایل آیکون ، یک فایل کرسر و یک فایل Bitmap
مقادیری که باید به عنوان نوع فایل Resource در فایل نوشته بشه به شرح زیر هست :

برای آیکون : ICON
برای کرسر : CURSOR
برای فایلBITMAP : Bitmap

لیست نهایی به صورت زیر میشه :

MyIcon ICON MyIcon.ico
MyCursor CURSOR MyCursor.cur
MyBmp BITMAP MyBmp.bmp

در نهایت فایل رو ذخیره می کنیم و پسوندش رو به rc تغییر می دیم ! ، حالا باید کامپایلش کنیم ، کامپایلری که فایل های Resource رو برای دلفی کامپایل میکنه اسمش هست brcc32.exe ، کافیه نام ( و مسیر ) فایل rc رو به عنوان پارامتر به برنامه ارسال کنیم تا کامپایل بشه ، فایل نهایی که با پسوند res هست در همون پوشه ای که فایل rc قرار داره ذخیره میشه ، دستور زیر رو در Command Prompt ویندوز بنویسید تا کامپایل انجام بشه :

brcc32.exe C:\MyResource.rc

حالا باید از فایل رسورس استفاده کنیم ...
در ابتدا باید دستور قرار دادن فایل رسورس در فایل exe رو به کامپایلر دلفی بدیم ، که به صورت زیر هست :

{$R MyResource.RES}
اگه به پروژه ی خودتون توجه کنید عبارتی به صورت " {R *.DFM$} " می بینید ، این دستور به کامپایلر اعلام می کنه که تمام فایلهای DFM درون پوشه ی پروژه رو در فایل اصلی برنامه Embed کنه ( قرار بده ) ...
به طور کلی R$ برای قرار دادن یک فایل به عنوان فایل رسورس همراه برنامه استفاده میشه ...

استفاده از فایلهای رسورس راه های مختلفی داره ( برای هر نوع فایل ) مثلا اگه فایل قرار داده شده از نوع AVI باشه و بخواید از اون در کامپوننت TAnimate دلفی استفاده کنید ، خود کامپوننت خاصیتهایی مثل ResName و ResHandle یا ResID داره که به وسیله اونها میشه فایل Resource رو لود کرد ، ولی در اینجا ما میخوایم استفاده از سه نوع فایل Bmp و کرسر و آیکون رو بررسی کنیم ...
برای فایل Cursor همونطور که توضیح داده شد به صورت زیر عمل میکنید :
procedure TForm1.BitBtn1Click(Sender: TObject);
const
MyCursor = 1;
begin
Screen.Cursors[MyCursor] := LoadCursor(hInstance, 'MYCURSOR');
Form1.Cursor := MyCursor;
end;
برای استفاده از فایلهای bmp :
var
MyBmp : TBitmap;
begin
MyBmp := TBitmap.Create;
MyBmp.LoadFromResourceName(hInstance, 'MYBITMAP');
end;
یا می تونید مستقیما اون رو در یک TImage قرار بدید :
Image1.Picture.Bitmap.LoadFromResourceName(hInctan ce, 'MyBitmap');
یا به صورت زیر هم می تونید اون رو لود کنید :
var
MyBmp : TBitmap;
begin
MyBmp := TBitmap.Create;
MyBmp.Handle := LoadBitmap(hInstance, 'MYBITMAP');
end;

برای استفاده از فایل آیکون :
var
MyIcon : TIcon;
begin
MyIcon := TIcon.Create;
MyIcon.Handle := LoadIcon(hInstance, 'MYICON');
end;
*عبارت hInstance هندل برنامه ما و محتویات درون اون رو برمیگردونه ( Module (http://www.google.com) ) ...

راه های دیگه ای هم برای استفاده از فایلهای رسورس هست که بتره از Help دلفی استفاده کنید و یا جستجویی در اینترنت (http://www.Google.com) داشته باشید ...

امیدوارم مفید بوده باشه ، موفق باشید ...

AbiriAmir
پنج شنبه 30 مهر 1388, 18:27 عصر
فشار دادن دکمه تشکر رو کافی ندونستم...
واقعا ممنون
فقط یه سوال...
نمیشه تو فایل رسورس ذخیره نکرد؟؟؟
مثلا به صورت یه عکس تو فایل های برنامه باشه...

Mahmood_M
یک شنبه 03 آبان 1388, 10:46 صبح
می تونید از تابع LoadCursorFromFile استفاده کنید ، مثال :
const
MyCursor = 2;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.Cursors[2] := LoadCursorFromFile('MyCursor.cur');
Form1.Cursor := MyCursor;
end;
توجه کنید که باید ابتدا یکی از کرسرهای Screen رو برابر با فایل کرسر مورد نظرتون قرار بدید و بعد کرسر فرم ( یا هر کنترل دیگر ) رو برابر با MyCursor که یک مقدار عددی است و به کرسری از Screen که اون عدد بهش نسبت داده شده اشاره می کنه ، قرار بدید ...

موفق باشید ...