PDA

View Full Version : راهنمایی برای استفاده از دستور create در دلفی 7 !!!



morrteza323
جمعه 20 فروردین 1389, 12:06 عصر
سلام
دوستان من دارم یه برنامه می نویسم که احتیج دارم وقتی کاربر رویه button کلیک کرد 4 تا image نمایش داده بشه.می خوام image ها رو به صورت دستی بسارم وجای عکس رو آدرس دهی کنم.
**یه سوال دیگه من ویندوز 7 دارم.هر کاری می کنم نمی تونم تو دلفی 7 فارسی بنویسم.لطفا راهنماییم کنید چجوری درستش کنم

Felony
جمعه 20 فروردین 1389, 13:21 عصر
دوستان من دارم یه برنامه می نویسم که احتیج دارم وقتی کاربر رویه button کلیک کرد 4 تا image نمایش داده بشه.می خوام image ها رو به صورت دستی بسارم وجای عکس رو آدرس دهی کنم.
var
IMG: TImage;
begin
IMG:= TImage.Create(Form1);
with IMG do
begin
Parent:= Form1;
Top:= 10;
Left:= 10;
Height:= 100;
Width:= 100;
Picture.LoadFromFile('G:\JPG\Iran Flag.jpg');
end;
end;


**یه سوال دیگه من ویندوز 7 دارم.هر کاری می کنم نمی تونم تو دلفی 7 فارسی بنویسم.لطفا راهنماییم کنید چجوری درستش کنم
به بخش Regional and Language در Control Panel برید و در سربرگ Administrative روی دکمه Change System Locale کلیک و زبان رو بر روی persian بزارید .

morrteza323
جمعه 20 فروردین 1389, 20:25 عصر
با تشکر از silversoft عزیز .می شه بگید حالا که این عکس ها ایجاد شد چه جوری میشه پاکشون کرد؟؟؟
همچنین می خوام برای هر کدوم از عکس های ایجاد شده رو ی event کلیک(onclick) برنامه بنویسم

Felony
جمعه 20 فروردین 1389, 20:53 عصر
منظورتون حذف کلی هست یا حذف عکس داخل اون ؟

برای حذف کلی باید به وسیله متد Free شئ ایجاد شده رو آزاد کنید :

IMG.Free;

morrteza323
جمعه 20 فروردین 1389, 21:49 عصر
منظورتون حذف کلی هست یا حذف عکس داخل اون ؟

برای حذف کلی باید به وسیله متد Free شئ ایجاد شده رو آزاد کنید :

IMG.Free;
دوست عزیز این دستور کل فرم رو می بنده.من می خوام عکس ها از رو صفحه پاک شه.راستی سوال دوم ام رو جواب ندادین

SAASTN
جمعه 20 فروردین 1389, 22:45 عصر
دوست عزیز این دستور کل فرم رو می بنده.
حتما اشتباهی شده، نباید ببنده. کدتو بذار ببینیم.

راستی سوال دوم ام رو جواب ندادین
حتما بعد از اینکهSilverSoft پاسخ داده شما پستتو ویرایش کردی. زمانشون خیلی نزدیکه.

همچنین می خوام برای هر کدوم از عکس های ایجاد شده رو ی event کلیک(onclick) برنامه بنویسم
شما باید یه روال بنویسید که ترتیب و نوع پارامتر هاش دقیقا مثل OnClick کنترل Image باشه. بعد هر عکسی رو که ایجاد کردی بعد از ست کردن مشخصات عکس، روال مورد اشاره رو به OnClickش اختصاص بدی. اگه اسم روال مثلا ImageClick باشه:

IMG.OnClick:=ImageClick;
اگه توی روالت هم می خوای با خود عکسی که روش کلیک شده کاری بکنی باید از Sender استفاده کنی. مثلا اگه بخوای عکس Imageی که روش کلیک شده رو تغییر بدی:

(Sender as TImage).Picture.LoadFromFile('G:\JPG\Iran Flag2.jpg');

morrteza323
جمعه 20 فروردین 1389, 23:17 عصر
حتما اشتباهی شده، نباید ببنده. کدتو بذار ببینیم.

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

morrteza323
شنبه 21 فروردین 1389, 15:07 عصر
دوست عزیز اینم یه تست از گفته های دوستمون .وقتی برنامه رو باز کردین وارد یه پوشه بشید که حداقل 4 تا عکس داخلش باشه.وقتی عکس ها رو نمایش میدیم و روی دکمه clear کلیک می کنم یدونه از عکس ها رو بیشتر حذف نمی کنه.من می خوام همش پاک شه.در ضمن چه جوری میشه یه کاری کرد وقتی رو هر کدوم از عکس ها کلیک شد .اون عکس رو full screen نشون بده.



http://barnamenevis.org/forum/attachment.php?attachmentid=46850&stc=1&d=1270897328

Mahmood_M
شنبه 21 فروردین 1389, 15:46 عصر
براي حذف تصاوير مي تونيد در هنگام ساختن اونها يك نام براشون در نظر بگيريد ، مثلا عبارت IMG به علاوه ي يك شماره كه مي تونه از يك تا چهار باشه ( يا از 0 تا 3 !! ) ، در اينصورت به صورت زير مي تونيد هر چهارتا رو حذف كنيد :

for I := 0 to 3 do
Form1.FindComponent('IMG'+IntToStr(I)).Free;
راه هاي ديگه اي هم هست كه دردسرش زياده ... !!

براي نمايش FullScreen هم مي تونيد يك فرم جدا در نظر بگيريد و درونش يك TImage قرار بديد ، نحوه نمايش هم به اين صورت هست كه ابتدا يك Procedure مثلا به صورت زير تعريف مي كنيد :

public
procedure IMGOnClick(Sender : TObject);
{ Public declarations }
end;

var
...

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.IMGOnClick(Sender : TObject);
begin
Form2.Image1.Picture := (Sender as TImage).Picture;
Form2.WindowState := wsMaximized;
Form2.ShowModal;
end;


و هنگام ساخت Image ها اين Procedure رو به OnClick اونها اختصاص مي ديد :

IMG.OnClick := IMGOnClick;


راستی سوال دوم ام رو جواب ندادین
براي سئوال دومتون يك تاپيك جدا ايجاد كنيد ...

نمونه ي تصحيح شده ي برنامتون رو هم ضميمه كردم ، موفق باشيد ...

moein+
جمعه 27 فروردین 1389, 00:07 صبح
بذار ببینم آقا مرتضی:متفکر:
نکنه می خواهید یک جور ImageViewer بنویسی ؟؟

اگر جوابت مثبته بگو تا برات توضیح بیشتری بدم!
ولی به عنوان پیش درامد :
- از یک TListView استفاده کن
- برای نمایش و انتخاب مسیر از TShellTreeView
-در مسیر انتخاب شده تمام فایل هایی رو که میتونی باز کنی پیدا کن بعد به ازای تک تک اونها یک ایتم به لیست خالیت اضافه کن!
حالا تصویر متناظر را که لود کردی در ابعادی که ابعادی که می خواهی پیش نمایش کنی StrechDraw کن (توصیه می کنم Aspect رو حفظ کنی) و آن را در ImageList ای که قبلا به اندازه همین ابعاد در آورده ای اضافه کن و imageIndex ایتم اخیرا اضافه شده را مساوی آن قرار بده......

rasool1363
سه شنبه 19 مرداد 1389, 09:43 صبح
با سلام خدمت یاران همیشگی


شما باید یه روال بنویسید که ترتیب و نوع پارامتر هاش دقیقا مثل OnClick کنترل Image باشه. بعد هر عکسی رو که ایجاد کردی بعد از ست کردن مشخصات عکس، روال مورد اشاره رو به OnClickش اختصاص بدی. اگه اسم روال مثلا ImageClick باشه:

IMG.OnClick:=ImageClick; اگه توی روالت هم می خوای با خود عکسی که روش کلیک شده کاری بکنی باید از Sender استفاده کنی. مثلا اگه بخوای عکس Imageی که روش کلیک شده رو تغییر بدی:

(Sender as TImage).Picture.LoadFromFile('G:\JPG\Iran Flag2.jpg');سوال منم تقریباً مربوط به ای موضوع هستش :
اگه همین کنترل ها بصورت آرایه باشه چطور میشه رویداد کلیکشون رو بررسی کرد.

img_array:array[1..20] of Timage;کنترلو به این صورت ^ تعریف کردم.

Felony
سه شنبه 19 مرداد 1389, 12:20 عصر
اگه همین کنترل ها بصورت آرایه باشه چطور میشه رویداد کلیکشون رو بررسی کرد.
چیشو بررسی کنید ؟ اینکه بهش رویدادی اختصاص داده شده یا نه ؟

tdkhakpur
سه شنبه 19 مرداد 1389, 13:09 عصر
اگه همین کنترل ها بصورت آرایه باشه چطور میشه رویداد کلیکشون رو بررسی کرد.

برای image ها بصورت زیر متد رویداد را تعریف کنید


img_array[0].MyOnClick;

خود متد اصلی رویداد را هم بصورت زیر میشه کد کرد.(البته آرایه image شما باید قبلا ایجاد شده باشد و کد ایجاد ارسال نشد.)


procedure TForm1.MyOnClick(Sender: TObject);
begin
ShowMessage('i,m here');
end;