PDA

View Full Version : گفتگو: StringProvider کامپوننتی برای فراهم کردن متن برای اشیاء



ROSTAM2
دوشنبه 30 آبان 1401, 23:40 عصر
سلام.

عنوان این کامپوننت StringProvider هست که در Designer میتوان از آن برای فراهم کردن متن از خصوصیتهای Strings، RegistryDatas و ExternalValues آن استفاده کرد.


خصوصیت Strings یک دیکشنری هست با کلیدی از نوع عددی برای Id و با مقداری از نوع String برای Value (مقدار) از رشته برگشتی که بصورت فرمتبندی های خاصی که برای آن تعریف شده مقدار رو برمی گردونه.

154244

خصوصیت RegistryDatas هم یک دیکشنری هست که می شه از با اضافه کردن کلیدی که در رجیستری موجود هست و یک ValueName از اون کلید مقدار ValueName بعنوان متن برای اشیاء استفاده کرد.

154245

می مونه خصوصیت ExternalValues که خاص هست و می شه متن رو از ریسورس فایلهای dll موجود در سیستم مثل Shell32.dll فراخوانی کرد مثل کاربرد این مورد در رجیستری ویندوز البته بدون کاراکتر @ و - با آدرس فایل مورد نظر و آی.دی ریسورس با استفاده از جدا کننده کاما.

154246

برای فراهم کردن متن برای چند شیء که خصوصیت Text داره CheckBox, TextBox, Form,Lable

154247

به خصوصیات این اشیاء یک ProvideProperty اضافه می شه که یکی Id که همون شماره Id موجود در جدول هست و یکی هم ProvideType که نوع جدول رشته مقادیر هست،

154248

که از طریق این دو خصوصیت پروواید متن شیء تغییر می کنه هم در حالت Designer و هم در RunTime.

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

ROSTAM2
دوشنبه 30 آبان 1401, 23:43 عصر
برای دانلود کامپوننت از لینک زیر استفاده کنید:

(با آخرین تغییرات در تاریخ: 1401/09/10)

ROSTAM2
سه شنبه 01 آذر 1401, 10:12 صبح
در مورد ExternalValues این رو اضافه کنم که شما می تونید خودتون یک فایل dll ایجاد کنید با ++C یا خود ویژوال استودیو ریسورس StringTable اون رو ویرایش کنید و از آن استفاده کنید.

و اینکه ان شاء الله در آینده برای اشیاء دیگه هم کاربرد خواهد داشت. و کاربرد رشته در اون قابلیت تعیین خصوصیت خواهد داشت به فرض مثال آدرس فایل تصویری برای PictureBox را مهیا خواهد کرد.

ROSTAM2
جمعه 04 آذر 1401, 17:18 عصر
برای نمایش توضیحات هنگام نگهداشتن ماوس روی اشیاء توسط StringProvider



کامپوننت StringProvider را به فرم اضافه می کنیم.

اشیاء مورد نظر را باهم انتخاب کرده و خصوصیت Target on StringProviderX را انتخاب و از خصوصیت های زیرمجموعه آن ProvideRole را به مقدار InfoTip تغییر می دهیم. 154266
کامپوننت StringProvider را انتخاب و خصوصیت Strings را انتخاب و برای مدیریت جدول رشته ها کلید سمت راست مقدار آن را کلیک می کنیم تا پنجره StringTable نمایش داده شود و مقادیر را به تعداد اشیاء آیتم اضافه می کنیم و اینا.154267 154268
اشیائی که می خواهیم برای آنها توضیحات نمایش داده شود را یک به یک انتخاب و از خصوصیت Target بچه خصوصیت ID را طبق اعدادی که در StringTable ایجاد شده مقدار می دهیم، مثلا برای Button1 ID برابر با 101: 154269
و همین طور به اندازه آیتم ها و آی.دی هایی که در StringTable داریم می تواینم برای اشیاء مقدار ID ست کنیم.


154270

تذکر: در صورتی که آیتم ها را بخواهیم از خصوصیت Strings داشته باشیم خصوصیت ProvideType از اشیاء باید برابر با FormattedText باشد.

ROSTAM2
دوشنبه 07 آذر 1401, 23:56 عصر
سلام دوباره.

ی تغییرات اساسی برای کامپوننت اعمال کردم و خصوصیات مجزا برای هر خصیصه مورد نیاز برای تغییرات در شیء ایجاد کردم و می شه همزمان چندین خصوصیت از یک شیء رو تغییر داد مثل Image, Text, ToolTip و ...

توانایی نمایش آیکونهای ریسورس فایل DLL خارج از برنامه:

این آیکون در Shell32.dll قرار دارد و آی.دی آن 1001 هست.
154289
یک آیتم با متن:

C:\Windows\System32\Shell32.dll, 1001


به کالکشن ExternalValues از StringProvider اضافه می کنیم بصورت پیشفرض اگر تنها آیتم باشد آی.دی آن در کالکشن StringProvider می شود 101:
154290

154291

حالا فرم را انتخاب و خصوصیت StringBind on StringProviderX را Expand و بچه خصوصیت Icon را به مقدارد 101 و همچنین خصوصیت BindingType را به مقدار ExternalLibrary تغییر دهید و دیباگ را شروع کنید(آیکونی که در ریسورس فایل Shell32.dll بود با آی.دی 1001 به فرم مربوطه تعلق می گیرد):

154292

154293

ROSTAM2
پنج شنبه 10 آذر 1401, 20:30 عصر
سلام دوباره.

طبق تغییراتی که کامپوننت داره نامش هم باید به ResourceProvider تغییر کنه، متن(رشته) - آیکون - عکس و کرسر رو می شه توسط آی دی برای اشیاء فرم تعیین کرد:

ایجاد فایل DLL برای فراخوانی اجزای ریسورس توسط ++Visual C
154303 (https://learn.microsoft.com/en-us/cpp/build/creating-a-resource-only-dll?view=msvc-140)

برای اضافه کردن کرسر به فایل DLL رو پروژه ایجاد شده راست کلیک Add --> Resource
از پنجره Add Resource آیتم Cursor انتخاب و کلید ...Import

154304

فایلهای کرسر را با هم انتخاب و کلید Open
154305

پروژه رو Build و آدرس پوشه فایل رو کپی و از طریق اون فایل dll رو به پوشه برنامه اصلی انتقال دهید:
154306

برای مشاهده ریسورس و دانستن آی.دی کرسر ها از طریق Visual Studio فایل dll را برای ویرایش انتخاب کنید
154308

ادامه در پست بعدی...

ROSTAM2
پنج شنبه 10 آذر 1401, 20:37 عصر
ادامه پست قبل...

در پروژه اصلی ResourceProvider را انتخاب و کلید خصوصیت ExternalValues را کلیک
154313

و یک آیتم با محتوای نام فایل dll و آی.دی کرسری که می خواهید را بعد از یک کاما می نویسید:
154309

در آخر فرم یا یک شیء که می خواهید Cursor آن را تغییر دهید انتخاب Resource از اون رو طبق آی دی آیتم ایجاد شده تعیین می کنید:
154310

دانلود مجموعه کرسر 154312 (http://www.rw-designer.com/cursor-set/proton)