PDA

View Full Version : سوال: تعییر زبان برنامه



karim orooji
چهارشنبه 07 اسفند 1387, 12:48 عصر
با سلام
در یک برنامه دیدم که زمانی در یک textbox کلیک میکردی مثلا نام . کلمات فارسی در آن تایپ میشد در صورتی قبل از کلیک زبان برنامه انگیلسی بود.
چطور میشه این کار رو انجام داد.

با تشکر

taheri-ali
چهارشنبه 07 اسفند 1387, 13:09 عصر
تو قسمت ناگفته ها در VIsual basic تو بالاي صفحه يه پست راجع بع اين مطلب هست با كمي تغيير مي توني استفاده كني

mina.net
چهارشنبه 07 اسفند 1387, 18:42 عصر
با سلام
در یک برنامه دیدم که زمانی در یک textbox کلیک میکردی مثلا نام . کلمات فارسی در آن تایپ میشد در صورتی قبل از کلیک زبان برنامه انگیلسی بود.
چطور میشه این کار رو انجام داد.

با تشکر
ماژول زیر را تو برنامه ات بزار و تو رویداد تکست چنجش sub english یا farsi رو فرا خوانی کن به همین سادگی


Option Strict Off
Option Explicit On
Module far_eng
Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszklid As String, ByVal flags As Integer) As Integer
'be passed as an argument in this Declare statement.
Public Declare Function GetVersionExA Lib "KERNEL32" (ByRef lpversionInformation As OSVERSIONINFO) As Short
Public Structure OSVERSIONINFO
Dim dwosOSVERSIONINFOsize As Integer
Dim dwmanjorVERSION As Integer
Dim dwminorVERSION As Integer
Dim dwbuildnumber As Integer
Dim dwplat As Integer
<VBFixedString(128), System.Runtime.InteropServices.MarshalAs(System.Ru ntime.InteropServices.UnmanagedType.ByValTStr, sizeconst:=128)> Public szcsdversion As String
End Structure
Public Function getversion() As String
Dim osinfo As OSVERSIONINFO
Dim retvalue As Short
osinfo.szcsdversion = Space(128)
retvalue = GetVersionExA(osinfo)
With osinfo
getversion = CStr(.dwplat) & "" & .dwmanjorVERSION & "" & .dwminorVERSION
End With
End Function
Public Sub farsi()
If CDbl(getversion()) = 0 Then
LoadKeyboardLayout("00000429", 1) 'xp,2000
End If
If CDbl(getversion()) = 2 Then
LoadKeyboardLayout("00000429", 1) 'xp,2000
End If
If CDbl(getversion()) = 1 Then
LoadKeyboardLayout("00000401", 1) '95,98
End If
End Sub
Public Sub english()
LoadKeyboardLayout("00000409", 1)
End Sub
End Module

anooshiran
جمعه 09 اسفند 1387, 01:18 صبح
سلام دوست عزيز

علاوه بر راه حل خوبي كه دوستمون mina.net ارائه دادند. از اين راه حل هم ميتوانيد استفاده كنيد.




Public Class Form1

Public fLanguage As New System.Globalization.CultureInfo("fa-ir")
Public eLanguage As New System.Globalization.CultureInfo("en-us")

Private Sub TextBox1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Enter
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(fLanguage)

End Sub
Private Sub TextBox2_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.Enter
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(eLanguage)
End Sub

End Class