چگونه می توان با کدنویسی می توان در قسمت advance مربوط به regional languaugeویندوز زبان non-unicode را به زبان دلخواه (مثلا عربی یا فارسی) تغییر داد
چگونه می توان با کدنویسی می توان در قسمت advance مربوط به regional languaugeویندوز زبان non-unicode را به زبان دلخواه (مثلا عربی یا فارسی) تغییر داد
سلام دوستان
سال نو مبارک
اگه منظورت رو درست متوجه شده باشم
کد زیر صفحه کلید رو تغییر میده
کد زبان مورد نظر =: Application.BiDiKeyboard
انگلیسی 00020409
فارسی 00000429
موفق باشین
ممنون ولی منظورم این نیست (کد مربوطه جهت تغییر صفحه کلید است ) حال آنکه منظورم من تغییر کلی ساختار زبان non-unicode به زبان دیگر (مثلا عربی) است (مشکل اصلی از آنجا ناشی می شود که در برخی Object های مورد استفاده در برخی زبانها مانند: Listbox,grid,combox) زبان فارسی را به عنوان یک زبان right-to-left نمی شناسد و در متن فارسی را از سمت چپ تراز میکند که با تغییر گزینه موردنظر در کنترل پنل به زبان عربی این مشکل حل می شود و حال منظور من این است که این کار را در برنامه نصب با برنامه نویسی انجام بدهم تا نیازی به تغییر آن توسط کاربر نباشد
با سلام.
من فکر کنم موفق شدم بفهمم چه کلیدی باید در رجیستری تغییر کند تا این مشکل حل شود البته من فقط توانستم روی دو تا سیستم تست کنم . لطفا شما هم تست کنید و نتیجه را بگید . امیدوارم درست باشه :
برای اینکه زبان برنامه های non-unicode را به فارسی تغییر دهید به آدرس زیر در رجیستری بروید :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\C ontrol\Nls\CodePage]و این مقادیر را set کنید :
"ACP"="1256"
"OEMCP"="720"
"MACCP"="10004"
همچنین به آدرس زیر بروید :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\C ontrol\Nls\Language]
و مقدار زیر را set کنید :
"Default"="0429"
برای اینکه زبان برنامه های non-unicode را به انگلیسی تغییر دهید به آدرس زیر در رجیستری بروید :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\C ontrol\Nls\CodePage]و مقادیر زیر را set کنید :
"ACP"="1252"
"OEMCP"="437"
"MACCP"="10000"
همچنین به آدرس زیر بروید :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\C ontrol\Nls\Language]
و مقدار زیر را set کنید :
"Default"="0409"
موفق باشید .
سلام
"اقا شکوه ممنون "
من آقا نیستم
با تشکر از آقای Farshad Paydar :flower:
آیا این تغییرات فقط برای این کاربر ذخیره میشود یا برای تمام کاربران ؟
ضمنا کد پیچ سیستم را می توانی از طریق GetACP بدست بیاوری که اگر عربی تنظیم شده باشد 1256 خواهد داد.
البته در خصوص سوال مطرح شده جواب کاملتری در کتاب 296 برنامه دلفی 6 آمده است که آن هم از طریق رجیستری توضیح داده است.
گرچه من نه آن را تست کرده ام و نه کدی را که جناب فرشاد نوشتند.
(نیازمند تست بر روی چند سیستم و مقادیری وقت می باشد)
اقا محسن میشه لطفا کنید اون نمونه برنامه مربوطه را که گفته اید در کتاب 296 برنامه دیده اید اینجا بگذارید؟
با تشکر
کسی نبود کد نویسی مربوط به این تغییرات رجیستری را بنویسه؟
در رجیستری سیستم می تونه چندین شاخه ControlSetXXX وجود داشته باشه. تعداد این شاخه بستگی به دفعاتی که تنظیمات سیستم رو تغییر میدید داره،کلیدهای دیگری نیز وجود دارد یعنی بجای کلید CurrentControllset چیزی مثل Controllset001 وجود دارد که عینا همان مقادیر را دارد. من اینطور برداشت کردم که هر یک از Controllset ها به یک user مربوط است و CurrentControllSet به user فعلی . اما چون من خودم تست نکردم مطمین نیستم . اما فکر کنم اگر می خواهید برای تمام کاربران تنظیم شود باید در تمام ControllSet ها تغییر گفته شده را اعمال کنید .
CurrentControlSet به یکی از COntrolSetهای موجود که فعال هست اشاره می کنه و خودش مقدار متفاوتی نداره. یعنی اگر در سیستم شما چهار ControlSet (از ControlSet001 تا ContrlSet004) وجود داشته باشه، مقدار CurrentControlSet برابر با یکی از اونها ست.
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
کسی نبود کد نویسی مربوط به این تغییرات رجیستری را بنویسه؟
uses Registry;
type
TLanguageName = (Fa,En);
procedure NonUnicode_Lang(Language: TLanguageName);
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
with Reg do
try
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('SYSTEM\CurrentControlSet\Control\Nls\ CodePage',False) then
case Language of
Fa : begin
WriteString('ACP','1256');
WriteString('OEMCP','720');
WriteString('MACCP','10004');
CloseKey;
end;
En : begin
WriteString('ACP','1252');
WriteString('OEMCP','437');
WriteString('MACCP','10000');
CloseKey;
end;
end;//case
if OpenKey('SYSTEM\CurrentControlSet\Control\Nls\ Language',False) then
case Language of
Fa : begin
WriteString('Default','0429');
CloseKey;
end;
En : begin
WriteString('Default','0409');
CloseKey;
end;
end;//case
finally
Reg.Free;
end;//try..finally
end;
با تشکر فراوان از آقای کشاورز
ولی مشکلی است و آن هم اینکه بعد از انجام این کار علامت مربوط به تغییر زبان در گوشه پایین سمت راست ویندوز از بین می رود
برای رفع این مشکل چاره ای هست
من روی سیستم خودم همچین مشکلی ندارم.ولی مشکلی است و آن هم اینکه بعد از انجام این کار علامت مربوط به تغییر زبان در گوشه پایین سمت راست ویندوز از بین می رود
برای رفع این مشکل چاره ای هست
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
اگر لطف کنید و به لینک زیر بروید و سورس بنده را ببنید ممنون می شوم (برنامه نصب مشابه اینستال شیلد)
http://www.barnamenevis.org/viewtopic.php?t=25862
سلام :
از همگی شما برای این اطلاعات خوبتان ممنونم .
دوستان عزیز البته سیستم باید رسیت بشه تا تغییرات اعمال شود.با سلام.
من فکر کنم موفق شدم بفهمم چه کلیدی باید در رجیستری تغییر کند تا این مشکل حل شود البته من فقط توانستم روی دو تا سیستم تست کنم . لطفا شما هم تست کنید و نتیجه را بگید . امیدوارم درست باشه :
برای اینکه زبان برنامه های non-unicode را به فارسی تغییر دهید به آدرس زیر در رجیستری بروید :
1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe t\C ontrol\Nls\CodePage]
و این مقادیر را set کنید :
1
2
3
"ACP"="1256"
"OEMCP"="720"
"MACCP"="10004"
همچنین به آدرس زیر بروید :
1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe t\C ontrol\Nls\Language]
و مقدار زیر را set کنید :
1
"Default"="0429"
برای اینکه زبان برنامه های non-unicode را به انگلیسی تغییر دهید به آدرس زیر در رجیستری بروید :
1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe t\C ontrol\Nls\CodePage]
و مقادیر زیر را set کنید :
1
2
3
"ACP"="1252"
"OEMCP"="437"
"MACCP"="10000"
همچنین به آدرس زیر بروید :
1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe t\C ontrol\Nls\Language]
و مقدار زیر را set کنید :
1
"Default"="0409"
موفق باشید .