PDA

View Full Version : Image



reza_king_sh
سه شنبه 13 مرداد 1388, 20:45 عصر
با سلام.
بنده چند تا ايميج رو در زمان اجرا create مي كنم. بعداً بايك پيكچر ديالوگ مي خوام تو اين ايميج هام عكس هاي مختلف قرار بدم. به اين صورت كه كاربر رو هر كدوم كه كليك كرده بود يا انتخاب شده بود، تصوير تو همون ايميج لود بشه. يا اگه خواستم، اون ايميج رو حذف كنم. مي خوام بدونم چطور ميشه فهميد كدوم كنترل روي فرم در حالت انتخاب قرار داره. در ضمن اسم همه اونها imge هست.
با سپاس.

Felony
سه شنبه 13 مرداد 1388, 21:23 عصر
مگه میشه اسم همه image باشه ؟!؟!؟!
میتونی تو رویداد کلیک کنترل image مورد نظرت یه تو یه متغیر نام اون کنترل رو ذخیره کنی و ادامه ی کار ...

reza_king_sh
چهارشنبه 14 مرداد 1388, 12:29 عصر
بله ميشه اسم همه اونها image باشه. يعني حال كه شده. مي توني شمام امتحان كني.
حالا فرضاً كه نامشون هم با هم فرق كنه. شما گفتي كه نام اون ايميج رو تو يه متغير ذخيره كنم. خوب نام اون كنترل كه بدرد من نميخوره. من مي خوام تو خاصيت picture اون ايميجي كه انتخاب شده يه عبارتي رو قرار بدم.

vcldeveloper
چهارشنبه 14 مرداد 1388, 13:53 عصر
بله ميشه اسم همه اونها image باشه. يعني حال كه شده. مي توني شمام امتحان كني.
کنترل های موجود بر روی یک فرم نمی توانند نام های یکسان داشته باشند؛ پس یا شما خصوصیت Name در TComponent را با چیز دیگه ایی اشتباه گرفتید، یا کنترل هایی که ایجاد می کنید Parent ندارند.

shervin farzin
چهارشنبه 14 مرداد 1388, 16:41 عصر
سلام
قطعا براي انتخاب يك كنترل از چند تايي كه همه فرندهاي يك Parent هستند، نياز به داشتن
حداقل نام اون كنترل مورد نظر داريد.
در مورد سوال شما من پيشنهاد ميكنم تمام Image ها رو با هم انتخاب كنيد، بعد در رويداد
OnClick به صورت زير بنويسيد:

if OpenDialog1.Execute then
Timage(sender).Picture.LoadFromFile(OpenDialog1.Fi leName);

موفق باشيد.

reza_king_sh
چهارشنبه 14 مرداد 1388, 21:25 عصر
کنترل های موجود بر روی یک فرم نمی توانند نام های یکسان داشته باشند؛ پس یا شما خصوصیت Name در TComponent را با چیز دیگه ایی اشتباه گرفتید، یا کنترل هایی که ایجاد می کنید Parent ندارند.


در مورد اينكه گفتيد نميشه؛ من اين كد رو روي يك button نوشتم:

procedure TForm2.Button3Click(Sender: TObject);
var
image: timage;
begin
Image := TImage.Create(self);
with Image do
begin
SetBounds(10,10,100,100);
Parent := Panel2;
OnClick := image1.OnClick;
end;

مي بينيد كه هم parent دارن و هر چند بار هم كه رو button كليك كنيد، يه ايميج به اسم image درست ميشه.

shervin farzin
چهارشنبه 14 مرداد 1388, 23:11 عصر
سلام


هر چند بار هم كه رو button كليك كنيد، يه ايميج به اسم image درست ميشه.
خير ، به نمونه هايي كه به وسيله كد شما ساخته ميشه ميگن Anonymous Object .
كامپوننتهاي Image كه به اين شكل درست ميشه هيچ نامي ندارند ( كما اين كه شما هم در طول
اجراء فرايند Create ، به اونها نام نداديد) اگر شما كد زير رو :

Name:='Image1';
داخل بدنه WITH اضافه كنيد و همچنان بعد از كليك كردن مداوم هيچ پيام خطايي دريافت نكنيد جاي تعجب داره !
موفق باشيد.

vcldeveloper
چهارشنبه 14 مرداد 1388, 23:47 عصر
مي بينيد كه هم parent دارن و هر چند بار هم كه رو button كليك كنيد، يه ايميج به اسم image درست ميشه.
دوستمون جواب شما را دادند. همانطور که گفتم؛ در درک مفهوم خصوصیت Name کلاس TComponent مشکل دارید.

reza_king_sh
پنج شنبه 15 مرداد 1388, 18:16 عصر
باشه من درك مفهوم name اشكال دارم. ولي سوال من اين نبود. يعني فكر نمي كنم نام image ايجاد شده به دردم بخوره. من روي يك دكمه نوشتم:

(sender as TImage).Picture.LoadFromFile(edit3.Text);

يا:

Timage(sender).Picture.LoadFromFile(edit3.Text;

كه از آدرسي كه در اديت باكس قرار داره براي لود كردن عكس تو ايميج انتخاب شده استفاده كنم. اما خطا ميگيره :

invalid class typecast.

نمي دونم به خاطر چيه. من از اين كد تو جاهاي ديگه استفاده كردم مثلاً تو رويداد mouse move نوشتم:

if (sender as TImage).Left < 2 then
( sender as TImage).Left:=2;

و براي خارج نشدن همون ايميج ها از فرم، ازش استفاده مي كنم و به خطايي بر نمي خورم. اگه ممكنه راهنمايي كنيد.

vcldeveloper
پنج شنبه 15 مرداد 1388, 19:59 عصر
من روي يك دكمه نوشتم
اما خطا ميگيره :
invalid class typecast.

بله، باید خطا بگیره، چون شما کد را در رویداد OnClick یک Button نوشتید، آن وقت دارید سعی می کنید پارامتر Sender متد مربوطه را به عنوان TImage در نظر بگیرید، در حالی که وقتی روی یک دکمه کلیک می کنید، پارامتر Sender شما یک TButton هست، نه یک TImage. کلاس TButton هم خصوصیتی به نام Picture نداره که شما بخواید ازش استفاده کنید. برای همین هم از Type Cast شما ایراد میگیره.

reza_king_sh
جمعه 16 مرداد 1388, 00:42 صبح
خوب بايد چكار كرد. راه حل چيه؟
اگه ممكنه راهنمايي كنيد.

reza_king_sh
جمعه 16 مرداد 1388, 18:02 عصر
خوب حالا بايد چيكار كرد. راه حل چيه؟
راهنمايي كنيد لطفاً.

Felony
جمعه 16 مرداد 1388, 19:54 عصر
کد یا برنامه ای که نوشتین رو به صورت کامل قرار بدین تا یه نگاهی بهش بکنیم .

reza_king_sh
شنبه 17 مرداد 1388, 17:25 عصر
براي اين قسمت هيچي ننوشتم. من آدرس عكسيو كه با ايميج ديالوگ لود كردم رو تو يه اديت باكس كپي مي كنم و بعد ممي خوام بازدن button "ثبت"، عكسي كه توي اون آدرس قرار داره در ايميجي كه توسط كاربر روي فرم انتخاب شده، قرار بگيره. ايميج ها توسط كاربر در حين اجرا با همون كدي كه تو صفحه قبل بود به تعداد دلخواه ايجاد مي شن. بعد كاربر يكي رو انتخاب مي كنه و مي خواد تويه اون يه عكس بذاره.

shervin farzin
شنبه 17 مرداد 1388, 19:27 عصر
سلام
به اين برنامه نگاه كنيد.
موفق باشيد.

reza_king_sh
شنبه 17 مرداد 1388, 20:32 عصر
به اين برنامه نگاه كنيد.
موفق باشيد.

برنامه رو ديدم. هنوز امتحانش نكردم. البته كدشو خوندم . فكر كنم همونس باشه كه ما لازم داريم. اگه همون باشه كه مي خوايم، خيلي از مسكلاتمون حل ميشه!
بسيار متشكرم shervin farzin.