PDA

View Full Version : سوال - معرفی متغیر از طریق Object Inspector



MHajiSoft
شنبه 14 فروردین 1389, 01:56 صبح
سلام به دوستان :لبخندساده:
من در حال نوشتن چند کامپوننت برای ذخیره اطلاعات در بانک اطلاعاتی هستم و میخواهم مقادیر مورد نیاز برای ذخیره سازی اطلاعات را، در زمان طراحی برنامه اصلی، فقط از طریق Object Inspector مقدار دهی کنم.
توضیح بیشتر اینکه در برنامه نیاز به ذخیره عددی که در یک Edit نوشته شده دارم، برای این کار در کامپوننت یک property از نوع Edit ایجاد کرده و در طراحی اصلی Edit موجود در فرم را از طریق Object Inspector به کامپوننت معرفی میکنم تا خود کامپوننت مقدار را از Edit بخواند.
اما گاهی اوقات تمامی اطلاعات در کامپوننت ها نیست و در متغیرها موجود است، مثلا من متغیری از نوع عددی با نام MyCode دارم میخواهم به جای آنکه مقدار عددی این متغیر را از طریق کد در برنامه اصلی به کامپوننت ذخیره سازی مقدار دهی کنم، از طریق Object Inspector خود متغیر را به کامپوننت معرفی کنم.
برای این کار سعی کردم از Pointer استفاده کنم که موفق نشدم. دوستان اگر راه حلی دارند، لطف کرده و یک راهنمایی ارائه نمایند.
پیشاپیش ممنون :خجالت: :خجالت: :خجالت:

vcldeveloper
شنبه 14 فروردین 1389, 18:23 عصر
من متوجه نشدم که چیکار میخواید بکنید

Felony
شنبه 14 فروردین 1389, 20:09 عصر
من متوجه نشدم که چیکار میخواید بکنید
تا اونجا که من فهمیدم ایشون میخوان مثلا توی Object Inspector یکئ پراپرتی تعریف کنن که با کلیک بر روی فلش کنار آن متغیر ها تعریف شده در برنامه لیست بشه و کاربر بتونه یک متغیر رو انتخاب کنه و دیگه با کد متغیر رو مثلا به صورت زیر اختصاص نده :


var
Str: String;
begin
Str:= 'test';
Table.FieldByName:= Str
end;

MHajiSoft
یک شنبه 15 فروردین 1389, 00:39 صبح
من متوجه نشدم که چیکار میخواید بکنید

سلام به دوستان
منظورم همینه که جناب SilverSoft فرمودند. واقعا اگه امکان همچین کاری وجود داشته باشه، به نظرم خیلی جالبه، چون در بعضی مواقع که ذخیره های یکسان در چند جای مختلف وجود داشته باشه ، نوشتن خطوط تکراری برای معرفی متغیر ها هم از بین میرود.
پیشاپیش از دوستانی که جوابی برای این سوال دارند متشکرم. :لبخندساده: :لبخندساده:

MFiRE
یک شنبه 15 فروردین 1389, 01:11 صبح
درود

نمي دونم درست متوجه شدم يا نه، اما :
شما ميتونيد از آرايه استفاده كنيد و مثلاً در خانه ي [1] نام متغيير و در خانه ي [2] مقدار متغيير رو ذخيره كنيد. نوعش رو هم Variant در نظر بگيريد.

يا اينكه از Record استفاده كنيد.

Understanding and Using Record Data Types in Delphi (http://delphi.about.com/od/beginners/a/record_type.htm)

vcldeveloper
یک شنبه 15 فروردین 1389, 02:19 صبح
تا اونجا که من فهمیدم ایشون میخوان مثلا توی Object Inspector یکئ پراپرتی تعریف کنن که با کلیک بر روی فلش کنار آن متغیر ها تعریف شده در برنامه لیست بشه و کاربر بتونه یک متغیر رو انتخاب کنه و دیگه با کد متغیر رو مثلا به صورت زیر اختصاص نده
متغیرهای برنامه؟! برای همچین چیزی باید کل پروژه کامپایل، یا حداقل سورس کدها Parse بشند. Object Inspector فقط خصوصیات Published شده کامپوننت انتخاب شده در Form Designer را نمایش میده. متغیرهای برنامه ربطی به یک کامپوننت ندارند. برای همچین چیزی، فرد باید یک IDE Expert بنویسه، و از طریق OpenTools API به کامپایلر Editor که در پشت صحنه برای نمایش خطاها، و Code Completion یا Class Explorer استفاده میشه، ارتباط برقرار کنه.

حتی در صورتی هم که همچین IDE Expertایی نوشته بشه (که کار ساده ایی نیست)، برای مقداردهی به متغیرها، باید به ازاء هر متغیری که کاربر از طریق این IDE Expert مقداردهی اولیه میکنه، این Expert با ارتباط برقرار کردن با Editor، یک یا چند خط کد معادل آن انتصاب ها را در سورس وارد کنه.

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