PDA

View Full Version : روالی به زبان VB6 برای ترمیم خودکار حرف ی فارسی



mkbo_webmaster
جمعه 01 اردیبهشت 1385, 00:16 صبح
تابعی با VB6 نوشتم که میتونه مشکل نقطه در حرف ی رو حل کنه.
تنها کاری که شما باید انجام بدید اینه که تابع فوق رو کپی کنید و داخل کدهاتون قرار بدید و برنامه رو اجرا کنید.
از اون به بعد دیگه ی نقطه دار نخواهید دید !!!
در ابتدا که میخواستم این تابع رو بنویسم در امتحان اول ناموفق بود. بخاطر اینکه تمامی حروف ی رو اعم از چسبیده و بزرگ تعویض میکرد. که این باعث میشد، که نتیجه مطلوب بدست نیاد ولی با توجه به اینکه معمولا این نوع حروف در انتهای یک کلمه میان ، و بعد از اونا معمولا space هستش، اونو بهمراه space ، تعویض کردم تا فقط حروفی که در انتهای کلمات اومدن رو تغییر بده نه تمامی حروف ی رو .
راستی این تابع یه آرگومان هم میگیره که برای راحتی کارتون بهتره که اونو me قرار بدید.
اجرای این تابع تنها یکبار و اونم در روالهای اجرائی مثل form_load کافیه. و اجرای بیش از یکبار اون بستگی به نوع برنامه داره ...

امیدوارم متوجه شده باشید.
اینم کدش :



Private Sub Repair_Farsi_Ye(Form_Name As Object)
On Error Resume Next
Dim i As Variant

For Each i In Form_Name.Controls
i.Caption = Replace(i.Caption, Chr$(237) & " ", ChrW(1609) & " ")
i.Text = Replace(i.Caption, Chr$(237) & " ", ChrW(1609) & " ")
Next
End Sub





/

yavari
جمعه 01 اردیبهشت 1385, 17:03 عصر
سلام
خیلی قشنگ بود :تشویق: :تشویق: :تشویق:
با اجازه آقای جزینی ، یه تغییر کوچیک تو روال دادم ،امیدوارم جسارت تلقی نشه
:اشتباه:

Private Sub Repair_Farsi_Ye(Form_Name As Form)
On Error Resume Next
Dim i As Object

For Each i In Form_Name.Controls
i.Caption = Replace(i.Caption, Chr$(237) & " ", ChrW(1609) & " ")
i.Text = Replace(i.Caption, Chr$(237) & " ", ChrW(1609) & " ")
Next
End Sub

Payman62
جمعه 01 اردیبهشت 1385, 20:44 عصر
سلام
خیلی قشنگ بود :تشویق: :تشویق: :تشویق:
با اجازه آقای جزینی ، یه تغییر کوچیک تو روال دادم ،امیدوارم جسارت تلقی نشه
:اشتباه:
جناب یاوری لطفا کدها را داخل تگ کد قرار دهید.
نقل قول برای بیان صحبت های دوستان دیگر است.

mkbo_webmaster
شنبه 02 اردیبهشت 1385, 01:03 صبح
آقای یاوری راست گفتید من یادم رفته بود که یکی از فرمها رو از حالت وابستگی خارج کنم.
لطف کردید. ادیتش کردم.






/

yavari
شنبه 02 اردیبهشت 1385, 09:39 صبح
سلام


جناب یاوری لطفا کدها را داخل تگ کد قرار دهید.
نقل قول برای بیان صحبت های دوستان دیگر است.

شما درست می فرمائید ، معذرت میخوام ، یه خورده عجله داشتم نشد ادیتش کنم :اشتباه:

Mehdi0016
یک شنبه 03 اردیبهشت 1385, 00:18 صبح
سلام
یه راهشم اینه که یه جای حرف ی کلید alt رو نگه دارید و کد 65262 را بزنید .
ممنون

mkbo_webmaster
یک شنبه 03 اردیبهشت 1385, 15:05 عصر
آقای MEHDI0016 من که توی VB6 امتحان کردم نشد !!!
از کجا این راه رو پیدا کردید ؟




/

Mehdi0016
یک شنبه 03 اردیبهشت 1385, 15:41 عصر
من که همیشه از این روش استفاده میکنم .
راستی کیبورد باید رو حالت فارسی باشه ها

Payman62
یک شنبه 03 اردیبهشت 1385, 16:41 عصر
باید آلت رو نگه داری و کد اسکی حرف رو بزنی تا تایپ شه. ولی 65262 معلوم نیست چیه.

yavari
یک شنبه 03 اردیبهشت 1385, 21:31 عصر
سلام
جالبه

از کجا این راه رو پیدا کردید ؟

Mehdi0016
دوشنبه 04 اردیبهشت 1385, 19:21 عصر
ساده اس با character map ویندوز و انتخاب مثلا فونت tahoma میشه کد اون رو درآورد .
با برنامه های فونت ساز هم میشه

mkbo_webmaster
سه شنبه 05 اردیبهشت 1385, 01:22 صبح
منظور ما در این بحث نوع فونت نیست. منظور charset قضیس.






/

mkbo_webmaster
سه شنبه 05 اردیبهشت 1385, 01:29 صبح
نگارش قبلی م یه مشکل داشت که هیچ کس نفهمید تا بگه !!!
مشکل اون این بود که ی هایی رو که آخر یک جمله بدون فاصله میاد عوض نمیشن.

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

مشکل اول که حل شد و مسئله دوم هم با استفاده از خصوصیت tag در vb6 حل شد.
کافیه تا بعد از استفاده از کد زیر اون اشیایی داخل فرم رو که نمیخواید عملیات مورد نظر روشون انجام بشه رو ، tag اونها رو برابر کلمه NC کنید.

راستی در این کد تغییر متون tooltiptext فارسی هم در نظر گرفته شده . حالا شما هرجو میتونید develop ش کنید.

اینم کدش ، موفق باشید.




Public Sub Repair_Farsi_Ye(Form_Name As Object) 'IF YOU WANT TO DON'T CHANGE A CONTROL PUT "NC" STRING TO IT'S TAG PROPERTY
On Error Resume Next
Dim i As Variant

For Each i In Form_Name.Controls
If i.Tag <> "NC" Then
i.Caption = i.Caption & " "
i.Caption = Replace(i.Caption, Chr$(237) & " ", ChrW(1609) & " ")
i.Caption = Trim$(i.Caption)
i.Text = i.Text & " "
i.Text = Replace(i.Caption, Chr$(237) & " ", ChrW(1609) & " ")
i.Text = Trim$(i.Text)
If Trim$(i.ToolTipText) <> "" Then
i.ToolTipText = i.ToolTipText & " "
i.ToolTipText = Replace(i.ToolTipText, Chr$(237) & " ", ChrW(1609) & " ")
i.ToolTipText = Trim$(i.ToolTipText)
End If
End If
Next
End Sub

yavari
سه شنبه 05 اردیبهشت 1385, 19:08 عصر
سلام
ممنون ،

هیچ کس نفهمید تا بگه
سکوت دلیل نفهمیدن نیست !!! :متعجب: