PDA

View Full Version : سوال: اجراء یا فراخوانی یک دستور متنی



atf_1379
یک شنبه 19 شهریور 1396, 03:37 صبح
سلام
در فایل ضمیمه دو کمند باتن و یک تکست باکس وجود دارد ؛ ایونت باتن 1 را بصورت متنی در داخل تکست باکس درج کرده ام .
از طریق کمند باتن 2 می خواهم غیر مستقیم دستوری که در تکست باکس وارد شده فراخوانی و اجرا شود .
به عبارتی بجای استفاده از Call Command1_Click میخواهم از دستور Call text1 استفاده کنم
با تشکر

www.pc3enter.tk
یک شنبه 19 شهریور 1396, 20:02 عصر
سلام ببین هم متوجه شدم چی میخواهی و هم نه متوجه نشدم.
نمیدونم میخواهی چه کار کنی که مجبور هستی از این روش استفاده کنی. ولی به هر حال
ببین چیزی که بهت میگم اون چیزی هست که میخواهی یا نه تا کدشو برات بنویسم.


شما مثلا ۱۰ تا دکمه دارید و داخل هر کدام از دکمه ها یک کدی نوشتی که یک کاری را انجام میده
حالا. یک تکس باکس داری و هم یک دکمه جداگانه ی دیگر(تا اینجا درست)

حالا برنامه را اجرا میکنید و بعد داخل تکس باکس مثلا مینویسی ۵ و بعد روی دکمه پایینی که جداگانه بود کلیک میکنی و بعد برنامه به صورت هوشمند بیاد دکمه ی مثلا پنجم که کدی داخل اون نوشتی بیاد اجرا کنه ، !!!!!

ها درسته، اگر همینه بگو تا بنویسم

atf_1379
دوشنبه 20 شهریور 1396, 00:09 صبح
سلام ببین هم متوجه شدم چی میخواهی و هم نه متوجه نشدم.
نمیدونم میخواهی چه کار کنی که مجبور هستی از این روش استفاده کنی. ولی به هر حال
ببین چیزی که بهت میگم اون چیزی هست که میخواهی یا نه تا کدشو برات بنویسم.


شما مثلا ۱۰ تا دکمه دارید و داخل هر کدام از دکمه ها یک کدی نوشتی که یک کاری را انجام میده
حالا. یک تکس باکس داری و هم یک دکمه جداگانه ی دیگر(تا اینجا درست)

حالا برنامه را اجرا میکنید و بعد داخل تکس باکس مثلا مینویسی ۵ و بعد روی دکمه پایینی که جداگانه بود کلیک میکنی و بعد برنامه به صورت هوشمند بیاد دکمه ی مثلا پنجم که کدی داخل اون نوشتی بیاد اجرا کنه ، !!!!!

ها درسته، اگر همینه بگو تا بنویسم
با سلام و تشکر از توجهتون
فرض کنید بر روی یک فرم 10 تا Image با نام های متفاوت وجود دارد و در رخداد کلیک هر کدام از این ایمیج ها کد هائی نوشته شده که باید اجرا گردند و یک Image جداگانه هم وجود دارد با عنوان برگشت
در مرحله بعد فرض کنید روی چهار تا از ایمیج ها کلیک کردید و کد مر بوطه به آنها اجرا گردید . حالا شما میخواهید با کلیک بر روی ایمیج برگشت رخداد های انجام شده در هر کدام از ایمیج ها از آخر به اول اجرا شوند .
بنده برای این کار دو تکست باکس بر روی فرم قرار داده ام در تکست باکس اولی وقتی روی روی هر کدام از ایمیج ها کلیک کردم عنوان کلیک سابروتین آن را وارد می کنم و به فرض با کلیک بر روی 4 ایمیج در تکست باکس اول چیزی شبیه عبارت زیر درج میشود :
Imagex_Click/Imagek_Click/Imagep_Click/Imagep_Click

حالا من با کلیک بر روی ایمیج برگشت آخرین عبارت بعد از اسلش(/) را با استفاده از تابع split جدا کرده و آن را داخل تکست باکس دوم قرار میدهم بطوریکه در هر بار کلیک بر روی دکمه برگشت عبارت آخر در تکست باکس اول حذف میشود
در نتیجه من میخواهم در هر بار کلیک بر روی دکمه برگشت که عبارت آخر به داخل تکست باکس دوم وارد میشود در همان موقع عبارت تکست باکس دوم را فراخوانی و اجرا نمایم.
نمیدانم این راهی که برای اینکار در نظر گرفته ام درست است یا نه ؟ برای ذخیره رخدا ها ذهنم معطوف استفاده از آرایه گردید ولی چون با آرایه ها زیاد کار نکرده ام نمیدانم روش استفاده از آن چگونه است .البته در شیوه خودم فقط با فراخوانی و اجرای عبارت تکست باکس دوم مشکل دارم و بس

www.pc3enter.tk
دوشنبه 20 شهریور 1396, 14:46 عصر
هوووو وه گفتم مگه میخواهی چه کار کنی
برای این سوال که ، نوشتن این همه توضیح لازم نبود!


ببین گلم فرض کن مثلا چهار تا دکمه داری با هر نامی
حالا شما باید بیایی کدی بنویسی که داخل هر کدام از دکمه ها کلیک کردی یک متن با طول ثابت ، البته متغییر به تکس باکس اضافه کنه
Private Sub Command1_Click()
Text1.Text = Text1.Text & 1
End Sub
Private Sub Command2_Click()
Text1.Text = Text1.Text & 2
End Sub
Private Sub Command3_Click()
Text1.Text = Text1.Text & 3
End Sub
حالا داخل اون دکمه اخری و برگشت اینو بنویس که میاد حرکت اخرت را میخواند و چاپ میکند که شما میتوانی در اینجا بیایی به جای پرینت اونو بریزی داخل یک جعبه یا متغیر

Print Mid(Text1.Text, Len(Text1.Text), 1)
Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)

و ادامه همین میایی از کد select case استفاده میکنی برای اجرای عملیات‌های کدها

اگر فهمیدی چه کار کنی که الحمدالله اگه نه بگو تا بیشتر بازش کنم

atf_1379
دوشنبه 20 شهریور 1396, 21:00 عصر
هوووو وه گفتم مگه میخواهی چه کار کنی
برای این سوال که ، نوشتن این همه توضیح لازم نبود!


ببین گلم فرض کن مثلا چهار تا دکمه داری با هر نامی
حالا شما باید بیایی کدی بنویسی که داخل هر کدام از دکمه ها کلیک کردی یک متن با طول ثابت ، البته متغییر به تکس باکس اضافه کنه
Private Sub Command1_Click()
Text1.Text = Text1.Text & 1
End Sub
Private Sub Command2_Click()
Text1.Text = Text1.Text & 2
End Sub
Private Sub Command3_Click()
Text1.Text = Text1.Text & 3
End Sub
حالا داخل اون دکمه اخری و برگشت اینو بنویس که میاد حرکت اخرت را میخواند و چاپ میکند که شما میتوانی در اینجا بیایی به جای پرینت اونو بریزی داخل یک جعبه یا متغیر

Print Mid(Text1.Text, Len(Text1.Text), 1)
Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)

و ادامه همین میایی از کد select case استفاده میکنی برای اجرای عملیات‌های کدها

اگر فهمیدی چه کار کنی که الحمدالله اگه نه بگو تا بیشتر بازش کنم
سلام
متاسفانه کدهای پیشنهادی شما را در عمل نتوانستم اجراء کنم
در ضمیمه یک فایل نمونه قرارداده ام ؛ در رخداد کلیک هر کدام از کمند باتن های سمت راست فرم دو متغیر A و B با هم جمع زده میشوند و حاصل در تکست باکس 2 درج میشود
حالا شما بدون در نظر گرفتن ترتیب خاصی در خصوص کلیک کردن بر روی کمند باتن ها ، بر روی 3 تا از کمند باتن ها کلیک کن و در نهایت بر روی دکمه بازگشت کلیک کن
نتیجه هر بار کلیک بر روی دکمه بازگشت باید بدست آمدن محاسبات انجام شده بر روی کمند باتن هائی باشد که بر روی آنها کلیک کرده اید . به عبارتی با کلیک اول محاسبه آخرین کمند باتن باید در تکست 2 نمایش داده شود با کلیک دوم محاسبه کمند باتن ماقبل آخر و با کلیک سوم محاسبه کمند باتن اول.

با تشکر

www.pc3enter.tk
دوشنبه 20 شهریور 1396, 23:43 عصر
ببین ۵ تا دکمه بزار روی صفحه ات
۴ تاش بالا
یکش پایین

و یک نکس باکس بزار روی صفحه ات و این کدو کپی پیست کن.


Private Sub Command1_Click()
BackColor = vbRed
Text1.Text = Text1.Text & 1
End Sub

Private Sub Command2_Click()
BackColor = vbGreen
Text1.Text = Text1.Text & 2
End Sub

Private Sub Command3_Click()
BackColor = vbYellow
Text1.Text = Text1.Text & 3
End Sub

Private Sub Command4_Click()
BackColor = &H8000000F
Text1.Text = Text1.Text & 4
End Sub

Private Sub Command5_Click()
If Text1.Text = "" Then BackColor = &H8000000F: Exit Sub
Select Case Mid(Text1.Text, Len(Text1.Text), 1)
Case 1: Command1.Value = True
Case 2: Command2.Value = True
Case 3: Command3.Value = True
Case 4: Command4.Value = True
End Select
Text1.Text = Left(Text1.Text, Len(Text1.Text) - 2)
End Sub

atf_1379
سه شنبه 21 شهریور 1396, 02:08 صبح
احسنت !:تشویق::تشویق::تشویق::تشویق:: تشویق::تشویق::تشویق::تشویق:

www.pc3enter.tk
سه شنبه 21 شهریور 1396, 04:57 صبح
خواهش
درضمن کد از نظر مهندسی مشکل داشت و هجمش بالا بود. که برات کد بهینه و اطلاح کردم

حالا این کدو برای کجای می‌خواستی