PDA

View Full Version : سوال: دو سؤال در مورد تکست



hr0694
چهارشنبه 19 مرداد 1390, 22:55 عصر
1- من میخواهم وقتی در تکست فارسی نوشتم خود بخود بین حروف نوشته شده ام یک فاصله بیفتد بدون زدن دکمه Space یعنی حرف اول را که نوشتم خود بخود یک فاصله بیفتد و بعد حرف دوم را بنویسم الی آخر کدش را باید چگونه بنویسم

2- چکار کنم که وقتی دکمه فلش پائین کیبورد را زدم خط چشمک زن داخل تکست 1 به داخل تکست 2 برای نوشتن برود یا برعکس

محسن واژدی
پنج شنبه 20 مرداد 1390, 00:07 صبح
سلام علیکم
1- در این مورد کد زیر را که خالی از اشکال هم نیست را امتحان کنید شاید جوابگوی مشکلتان باشد:


Private dis_chng As Boolean
Private Sub Text1_Change()
On Error Resume Next
If dis_chng = True Then dis_chng = False: Exit Sub
If Text1 = "" Then Exit Sub
dis_chng = True
Text1 = Text1 & " "
Text1.SelStart = Len(Text1)
End Sub


2- در مورد سوال دومتون برای اینکه بتوانید با فشار داد دکمه های جهت دار setfocus را مابین textboxها جابجا کنید بایستی textbox ها را به کنترل آرایه تبدیل کرده سپس با افزایش و کاهش مقدار index هر کنترل توسط کلید های جهت دار فشرده شده به کنترل منتقل شوید
موفق باشید

_behnam_
پنج شنبه 20 مرداد 1390, 02:43 صبح
بفرمایید
اینجوری میشه :
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then Exit Sub
Text1.Text = Text1.Text + " "
Text1.SelStart = Len(Text1.Text)
End Sub

hr0694
پنج شنبه 20 مرداد 1390, 07:39 صبح
جناب mohsenvj منظورتان از این حرف را متوجه نمیشوم ((در مورد سوال دومتون برای اینکه بتوانید با فشار داد دکمه های جهت دار setfocus را مابین textboxها جابجا کنید بایستی textbox ها را به کنترل آرایه تبدیل کرده سپس با افزایش و کاهش مقدار index هر کنترل توسط کلید های جهت دار فشرده شده به کنترل منتقل شوید)) من باید چکار کنم اصلا متوجه نشدم بیشتر توضیح بدید یک مثال بزنید

hr0694
پنج شنبه 20 مرداد 1390, 07:54 صبح
جناب mohsenvj و _behnam_ چکار کنم که قبل از حرف اول فقط فاصله نیفتد

returnx
پنج شنبه 20 مرداد 1390, 09:38 صبح
برای ساخت آرایه ای از اشیا کافی هست نام شی ها رو یکی بزارید ، بعد به هر کدوم یک Index (اندیس) بدید که البته این کار رو خود VB6 انجام میده...
دقت کنید زمانی که شما از یک شی Copy میگیرید و Past می کنید VB6 ازتون میپرسه که آیا میخواهید اشیا رو تبدیل به آرایه کنید ، اگه شما Yes رو بزنید VB6 به صورت خودکار این کار رو برای شما انجام میده...

محسن واژدی
پنج شنبه 20 مرداد 1390, 09:46 صبح
چکار کنم که قبل از حرف اول فقط فاصله نیفتد

کد جناب _behnam_ خیلی مختصرتر و مفیدتر است
با اجازه جناب _behnam_، قبل از افزودن space باید چک کنیم که آیا متنی موجود است یا خیر، بصورت زیر:

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 8 Then Exit Sub

If Text1 > "" Then Text1.Text = Text1.Text + " "

Text1.SelStart = Len(Text1.Text)

End Sub




جناب mohsenvj منظورتان از این حرف را متوجه نمیشوم ((در مورد سوال دومتون برای اینکه بتوانید با فشار داد دکمه های جهت دار setfocus را مابین textboxها جابجا کنید بایستی textbox ها را به کنترل آرایه تبدیل کرده سپس با افزایش و کاهش مقدار index هر کنترل توسط کلید های جهت دار فشرده شده به کنترل منتقل شوید)) من باید چکار کنم اصلا متوجه نشدم بیشتر توضیح بدید یک مثال بزنید

سورس زیر را بررسی کنید

موفق باشید

hr0694
پنج شنبه 20 مرداد 1390, 10:15 صبح
مشکل اولم برطرف شد ولی وقتی این کد دومی را برای Form خودم مینویسم برنامه از این قسمت ارور میدهد
(Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer

ِ:Compile error
Procedure declaration does not match description of event or procedure having the same name

و بعد من میخواهم با فشار دادن دکمه پائین کیبورد از Text1 بپره Text2 و بعد 3 و بعد 4 تا آخر بره ولی روی Form شما همگی تکست 1 هستند و اگر نام تکستها را تغییر بدم برنامه ارور میدهد

محسن واژدی
پنج شنبه 20 مرداد 1390, 10:59 صبح
ولی وقتی این کد دومی را برای Form خودم مینویسم برنامه از این قسمت ارور میدهد
(Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer

ِ:Compile error
Procedure declaration does not match description of event or procedure having the same name

در وریداد های معمولی textboxها پارامتر "Index As Integer" وجود ندارد به عبارت دیگر این رویداد مخصوص کنترلهای آرایه است که index کنترلها را نگه میدارد و اگر کنترل شما یک کنترل آرایه نباشد پیام خطای فوق ظاهر میشود، برای تغییر دادن یک کنترل به آرایه آن در بخش خصوصیات کنترل خصوصیتی است بنام Index که با مقدار دهی ان کنترل به آرایه آن تبدیل میشود



من میخواهم با فشار دادن دکمه پائین کیبورد از Text1 بپره Text2 و بعد 3 و بعد 4 تا آخر بره ولی روی Form شما همگی تکست 1 هستند و اگر نام تکستها را تغییر بدم برنامه ارور میدهد

یکی از خصوصیات کنترلهای آرایه همنام بودن آنهاست، که برای یکپارچگی و اشتراک گذاری نمیتوان نام انها را تغییر داد در واقع در صورت تغییر نام هر کنترل، آن کنترل به آرایه جدید تبدیل میشود که نیازمند کدنویسی جدید برای آن هستید،
برای تغییر دادن خصوصیات هرکنترل بایستی از index آنها استفاده کنید به عنوان مثال برای قرار دادن متن textbox اولی بایستی آنرا بصورت زیر وارد کنید:

Text1(0).Caption="new text"


موفق باشید

موفق باشید

hr0694
پنج شنبه 20 مرداد 1390, 11:37 صبح
اگر میشود خود شما همه این کارها را برایم انجام دهید و در یک سورس جدید برایم قرارش دهید

محسن واژدی
پنج شنبه 20 مرداد 1390, 17:10 عصر
اگر میشود خود شما همه این کارها را برایم انجام دهید و در یک سورس جدید برایم قرارش دهید
فکر نکنم سورس قبلی مشکلی داشته باشد چون با فشار دادن جهت دارهای بالا و پایین به ترتیب focus به textbox بالاتر یا پایین تر پرش میکند