فراخوانی دستورات از تکست باکس یا ...
سلام بر برنامه نویسان عزیز
من میخوام یه قفل نرم افزاری خاص بسازم در صورت امکان راهنمایی بفرمایید .
آیا امکان فراخوانی دستورات از تکست باکس وجود داره ؟ یعنی بفرض من بجای اینکه بنویسم Form1.show بنویسم Form1.Text1.text
و متن درون Text مساوی show. باشه ?
لطفا راهنمایی بفرمایید .
نقل قول: ،راخوانی دستورات از تکست باکس یا ...
نقل قول:
نوشته شده توسط
Behrouz3363
سلام بر برنامه نویسان عزیز
من میخوام یه قفل نرم افزاری خاص بسازم در صورت امکان راهنمایی بفرمایید .
آیا امکان فراخوانی دستورات از تکست باکس وجود داره ؟ یعنی بفرض من بجای اینکه بنویسم Form1.show بنویسم Form1.Text1.text
و متن درون Text مساوی show. باشه ?
لطفا راهنمایی بفرمایید .
شاید فکر کنید اینطوری دارید امنیت رو بیشتر می کنید ولی در نظر بگیرید که هر چقدر اجزاء خارجی (کتابخانه ها، کمپوننت ها، فایل ها) دخیل در ماجرا رو بیشتر کنید احتمال لو رفتن روتین تون بیشتر میشه.
یکی از روش های اجرای کد پویای ویژوال بیسیک، استفاده از Script Control ئه. در منوی Project ویژوال بیسیک با گزینه Components (ترکیب کلیدی Ctrl + T) کمپوننت Microsoft Script Control رو پیدا کنید و تیک بزنید و OK کنید.
کمپوننت اش به Toolbox اضافه میشه، از داخل Toolbox (از همونجا که TextBox و CommandButton رو برمیدارید) یک نمونه اش رو روی فرم برنامه تون قرار بدید که اسم پیشفرض اش ScriptControl1 میشه.
حالا اول اون اشیاء ای که در دستورهاتون لازم میشن رو برایش تعریف کنید، مثلا :
ScriptControl1.AddObject Form2.Name, Form2
این سطر بالا میگه ما شیء Form2 رو با نام "Form2" در اون ScriptControl1 معرفی کردیم. حالا ScriptControl1 در هر فرمانی که اجرا کنه، میدونه که معنی عبارت "Form2" چیه و به Form2 اشاره می کنه.
بعد می توانید دستوری رو اجرا کنید، مثلا :
ScriptControl1.ExecuteStatement Text1.Text
دقت کنید که ScriptControl1 مستقل از برنامه شما است، مثلا اگه قبلا با AddObject بهش Command1 رو معرفی نکنید، نمیدونه Command1 چه معنی ای داره و اگر در دستورتون اسمی از Command1 برده بشه، به عنوان یک عبارت ناشناخته شناسایی اش می کنه :
ScriptControl1.AddObject Comman1.Name, Command1
نقل قول: ،راخوانی دستورات از تکست باکس یا ...
نقل قول:
نوشته شده توسط
the king
شاید فکر کنید اینطوری دارید امنیت رو بیشتر می کنید ولی در نظر بگیرید که هر چقدر اجزاء خارجی (کتابخانه ها، کمپوننت ها، فایل ها) دخیل در ماجرا رو بیشتر کنید احتمال لو رفتن روتین تون بیشتر میشه.
یکی از روش های اجرای کد پویای ویژوال بیسیک، استفاده از Script Control ئه. در منوی Project ویژوال بیسیک با گزینه Components (ترکیب کلیدی Ctrl + T) کمپوننت Microsoft Script Control رو پیدا کنید و تیک بزنید و OK کنید.
کمپوننت اش به Toolbox اضافه میشه، از داخل Toolbox (از همونجا که TextBox و CommandButton رو برمیدارید) یک نمونه اش رو روی فرم برنامه تون قرار بدید که اسم پیشفرض اش ScriptControl1 میشه.
حالا اول اون اشیاء ای که در دستورهاتون لازم میشن رو برایش تعریف کنید، مثلا :
ScriptControl1.AddObject Form2.Name, Form2
این سطر بالا میگه ما شیء Form2 رو با نام "Form2" در اون ScriptControl1 معرفی کردیم. حالا ScriptControl1 در هر فرمانی که اجرا کنه، میدونه که معنی عبارت "Form2" چیه و به Form2 اشاره می کنه.
بعد می توانید دستوری رو اجرا کنید، مثلا :
ScriptControl1.ExecuteStatement Text1.Text
دقت کنید که ScriptControl1 مستقل از برنامه شما است، مثلا اگه قبلا با AddObject بهش Command1 رو معرفی نکنید، نمیدونه Command1 چه معنی ای داره و اگر در دستورتون اسمی از Command1 برده بشه، به عنوان یک عبارت ناشناخته شناسایی اش می کنه :
ScriptControl1.AddObject Comman1.Name, Command1
ممنونم از راهنمایی کاملتون . اما خیلی برام سنگین بود یعنی من باید برای نمایش فرم دوم در قسمت کدنویسی ScriptControl1 برای اینکه فرم 2 نمایش داده بشه اول باید کد ScriptControl1.AddObject Form2.Name, Form2 معرفی کنم بعد در Command1 بنویسم ScriptControl1.ExecuteStatement Text1.Text که متن درون Text1 برابر با Form2.show هست ؟
نقل قول: ،راخوانی دستورات از تکست باکس یا ...
نقل قول:
نوشته شده توسط
Behrouz3363
ممنونم از راهنمایی کاملتون . اما خیلی برام سنگین بود یعنی من باید برای نمایش فرم دوم در قسمت کدنویسی ScriptControl1 برای اینکه فرم 2 نمایش داده بشه اول باید کد ScriptControl1.AddObject Form2.Name, Form2 معرفی کنم بعد در Command1 بنویسم ScriptControl1.ExecuteStatement Text1.Text که متن درون Text1 برابر با Form2.show هست ؟
بله. البته فقط یکبار Form2 رو تعریف می کنید. ممکنه صد بار هم بهش دستوراتی بدید که اجرا کنه، ولی Form2 رو همون یکبار قبل از اینکه دستوری رو بهش بدید تعریف می کنید و دیگه بعد از اون میدونه Form2 یعنی چی.
وقتی دستور Form2.Show رو اجرا می کنید، میگرده در دستورات ویژوال بیسیک و می بینه چیزی به نام Form2 تعریف نشده و نمیشناسه. برای همین می توانید همون اول کار که فرم تون باز شده و قبل از اینکه دستوری رو اجرا کنید، Form2 رو برای ScriptControl1 تعریف کنید تا اگر در دستوری اسمی از Form2 اومد بدونه منظور کدوم شیء ئه.
نقل قول: ،راخوانی دستورات از تکست باکس یا ...
نقل قول:
نوشته شده توسط
the king
بله. البته فقط یکبار Form2 رو تعریف می کنید. ممکنه صد بار هم بهش دستوراتی بدید که اجرا کنه، ولی Form2 رو همون یکبار قبل از اینکه دستوری رو بهش بدید تعریف می کنید و دیگه بعد از اون میدونه Form2 یعنی چی.
وقتی دستور Form2.Show رو اجرا می کنید، میگرده در دستورات ویژوال بیسیک و می بینه چیزی به نام Form2 تعریف نشده و نمیشناسه. برای همین می توانید همون اول کار که فرم تون باز شده و قبل از اینکه دستوری رو اجرا کنید، Form2 رو برای ScriptControl1 تعریف کنید تا اگر در دستوری اسمی از Form2 اومد بدونه منظور کدوم شیء ئه.
هرکار میکنم پیام خطا میده و اجرا نمیشه میشه لطفا کد ها رو برام بفرستید؟