# پایگاه‌های داده > سایر پایگاه‌های داده > Foxpro >  سویچ بین Hindi و context در numeral style

## rezamim

سلام
من میخواستم وقتی که برنامه ام اجرا میشه numeric style  به Hindi تبدیل بشه و موقع خروج از برنامه به Context . کسی میدونه چطر میشه اینکار رو کرد . همینطور که همه میدونن numeric style در control panel قسمت regional setting قسمت number قرار داره
ممنون از راهنماییهاتون

----------


## binyaz2003

فکر نکنم از داخل برنامه بشه اینکارو کرد!

----------


## Mohammad_Mnt

فکر کنم یکی از فانکشن های Focus این کار رو می کرد

----------


## binyaz2003

سلام آقا محمد بابا چی شدی؟
انگار کلی پیر شدین؟

----------


## Mohammad_Mnt

نظامه دیگه ، آدم رو پیر می کنه  :P

----------


## kia1349

محمد جان سلام کلی از دیدنت خوشحال شدم (هر روز هم که یه آواتور جدید داری)
آقای معمار cd را برایتان ارسال کردم ولی برگشت خورده 
روش نوشته که بعلت عدم مراجعه برگشت خورده :shock:

----------


## rezamim

سلام
یعنی چی بعلت عدم مراجعه؟ این پست هم از وقتی ایمیل راه افتاده فکر کنم بهتره فقط دفترچه کنکور بفروشه و کارت پستال .

اگه میشه به سپوال من هم یکی جواب بده

----------


## binyaz2003

> اگه میشه به سپوال من هم یکی جواب بده


من تا حلا نه دیدم نه شنیدم :?:

----------


## Mohammad_Mnt

فکر کنم من جواب دادم  :?

----------


## rezamim

دوست عزیز
متاسفانه هر چه جستجو کردم نتوانستم تابعی را که گفته بودید پیدا کنم .
آیا میتوانید بیشتر راهنماپی کنید؟

----------


## rezamim

:roll:  :?:  :?:  :?:

----------


## binyaz2003

اگر focus dll  رو دانلود کرده باشید از آدرس www.fastwrite.com یک فایل doc  همراهش داره که تمام تابع هاش و توضیح داده البته خواندنش یک ساعتی طول می کشه آیا شما اون رو خوندید ؟
جدیدا هم چند تابع جدید بهش اضافه کردند

----------


## naderigh

تاکنون راهی پیدا نکردید برای تبدیل اعداد به فارسی  البته بدون فونت هایی که عدد فارسی هستند

----------


## rezamim

نه

----------


## naderigh

با تشکر
حالا بفرماپید چگونه میشود از داخل فاکس فایل  intc.cpl  را اجرا کرد

----------


## rezamim

بعنوان نمونه :

?runCtrlPanelApplet&#40;&#41;
function runCtrlPanelApplet 
lparameter tcApplet, tcPage 
local lcCmd,lcPage,lnParamcount,lcApplet 
lnParamCount = pcount&#40;&#41; 
do case 
case lnParamCount = 0 
lcApplet = &#91;appwiz.cpl&#93; &amp;&amp; by default we run Add/Remove Programs 
lcPage = &#91;0&#93; 
case lnParamCount = 1 
if file&#40;tcApplet&#41; &amp;&amp; check the file existance 
lcApplet =alltr&#40;tcApplet&#41; 
lcPage = &#91;0&#93; 
else 
return .null. 
endif 
otherwise 
if file&#40;tcApplet&#41; 
lcApplet =alltr&#40;tcApplet&#41; 
lcPage = alltr&#40;tcPage&#41; 
else 
return .null. 
endif 
endcase 
lcCmd = &#91;run /n rundll32.exe shell32.dll,Control_RunDLL &#93;+; 
lcApplet+&#91;,@0,&#93;+lcPage 
&amp;lcCmd

----------


## naderigh

آقا بسیار بسیار ..... سپاسگزارم
اگر چیزی بهتر از این برای این مورد دارید اگر لطف بفرمائید ممنون شما خواهم بود :موفق:

----------


## rezamim

چیز دیگه ای ندارم. با عرض معذرت
مشکل دارید هنوز؟

----------


## naderigh

با تشکر مجدد
فعلا با همان دستوری که شما دادید جدول مربوطه ظاهر مشود و انتخاب میکنم hindi و .... :موفق:

----------


## rezamim

آیا میخواهید که بتوانید hindi را انتخاب ( تغییر ) کنید ( بدهید )؟
این کار راحت است ولی یک مشکلش این است که شاید کاربر شما نخواهد صفحه ویندوزش فارسی باشد.

----------


## rezamim

آیا میخواهید که بتوانید hindi را انتخاب ( تغییر ) کنید ( بدهید )؟
این کار راحت است ولی یک مشکلش این است که شاید کاربر شما نخواهد صفحه ویندوزش فارسی باشد.

----------


## binyaz2003

> آیا میخواهید که بتوانید hindi را انتخاب ( تغییر ) کنید ( بدهید )؟


همینه
اما اگر بشه وقتی برنامه شروع میه hindi بشه وقتی تمام میشه برگرده به حالت اول

----------


## rezamim

نه اینکار نمیشه متاسفانه. چون باید توی رجیستری دست برد. یا شاید من اینطور فکر میکنم.من خیلی وقت دنبالش بودم و وقتی پیداش کردم دیدم این مشکل هست.

----------


## Mohammad_Mnt

> چون باید توی رجیستری دست برد


خوب این مشکلش چیه ؟

----------


## binyaz2003

خوب حالا این دستکاری تو رجیستری چه جوری ؟ آیا میشه با اینستال شیلد این کار رو بکنیم اگر بشه خیلی خوب میشه !
همینطور در مورد right to left

----------


## MH2538

سلام
من اتفاقی به این تاپیک سر زدم ولی راه حل مشکل شما رو می دونم تنها مشکلی که هست اینه که من به این 3 تا زبون برنامه نویسی می تونم براتون کد بفرستم 

1 - Delphi
2 - VB.net
3 - C++‎ Family 

. انتخاب کنین تا من جواب بدم . راستی اگه واقعاً مایل بودین به من ایمیل کنین چون من بعید می دونم دوباره گذرم به این تاپیک بیافته :)

----------


## binyaz2003

فکر کنم یک بهتر باشه

----------


## MH2538

سلام
کد به Delphi
فقط مقادیر را تغییر دهید :

procedure RegisterIt(UserID : String);
var
  RootKey : DelphiHKEY;
  Key : String;
  Name : String;
  Value : String;
  Result : HKey;
Begin
    RootKey :=  HKEY_USERS;
    Key := Concat(UserID,'\Control Panel\International');
    Name := 'iCountry';
    Value := '981';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iCurrDigits';
    Value := '2';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iCurrency';
    Value := '2';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iDate';
    Value := '2';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iDigits';
    Value := '2';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iLZero';
    Value := '1';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iMeasure';
    Value := '0';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iNegCurr';
    Value := '3';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iTime';
    Value := '0';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iTLZero';
    Value := '1';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'Locale';
    Value := '00000429';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 's1159';
    Value := 'AM';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 's2359';
    Value := 'PM';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sCountry';
    Value := 'iran';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sCurrency';
    Value := 'Rials';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sDate';
    Value := '/';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iCurrency';
    Value := '2';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sDecimal';
    Value := '.';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sLanguage';
    Value := 'FAR';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sList';
    Value := ';';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sLongDate';
    Value := 'yyyy/MM/dd';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sShortDate';
    Value := 'yyyy/MM/dd';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sThousand';
    Value := ',';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sTime';
    Value := ':';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sTimeFormat';
    Value := 'hh:mm:ss tt';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iTimePrefix';
    Value := '0';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sMonDecimalSep';
    Value := '/';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sMonThousandSep';
    Value := '/';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iNegNumber';
    Value := '3';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sNativeDigits';
    Value := '0123456789';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'NumShape';
    Value := '0';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iCalendarType';
    Value := '2';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iFirstDayOfWeek';
    Value := '6';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'iFirstWeekOfYear';
    Value := '0';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sGrouping';
    Value := '3;0';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sMonGrouping';
    Value := '3;0';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sPositiveSign';
    Value := '';
    RegWriteString(RootKey,Key,Name,Value);
    Name := 'sNegativeSign';
    Value := '-';
    RegWriteString(RootKey,Key,Name,Value);
End;

----------


## binyaz2003

فکر کنم از اینجا به بعدش کار آقا جواد حسینی باشه!

----------


## MH2538

سلام
نکته ای که من یادم رفته بود
USERID : باید Enumrate بشه تا کد کاربران از بخش HKEY_USERS  در کنترل پنل استخراج بشه:

function RegEnum(RootKey: HKEY; Name: String; var ResultList: String; const DoKeys: Boolean): boolean;
var
  i: integer;
  iRes: integer;
  s: String;
  hTemp: HKEY;
  Buf: Pointer;
  BufSize: Cardinal;
begin
  Result := False;
  ResultList := '';
  if RegOpenKeyEx(RootKey, PChar(Name), 0, KEY_READ, hTemp) = ERROR_SUCCESS then
  begin
    Result := True;
    BufSize := 1024;
    GetMem(buf, BufSize);
    i := 0;
    iRes := ERROR_SUCCESS;
    while iRes = ERROR_SUCCESS do
    begin
      BufSize := 1024;
      if DoKeys then
        iRes := RegEnumKeyEx(hTemp, i, buf, BufSize, nil, nil, nil, nil)
      else
        iRes := RegEnumValue(hTemp, i, buf, BufSize, nil, nil, nil, nil);
      if iRes = ERROR_SUCCESS then
      begin
        SetLength(s, BufSize);
        CopyMemory(@s[1], buf, BufSize);
        if ResultList = '' then
          ResultList := s
        else
          ResultList := Concat(ResultList, ',', s);
        inc(i);
      end;
    end;
    FreeMem(buf);
    RegCloseKey(hTemp);
  end;
end;
-------------------------------------------------------------------------------
function RegEnumKeys(RootKey: HKEY; Name: String; var KeyList: String): boolean;
begin
  Result := RegEnum(RootKey, Name, KeyList, True);
end;
-------------------------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
var
  RootKey : DelphiHKEY;
  Key : String;
  Name : String;
  Value : String;
  KeyList : String;
  Users : TSplitArray;
  i : Integer;
  
begin
  StartUpDir := GetCurrentDir;
  Name := '';
  KeyList := '';
  RootKey :=  HKEY_USERS;
  RegEnumKeys(RootKey, Name, KeyList);
  Users := Split(KeyList,',');
  ShowMEssage(KeyList);
  for i:= 0 to Length(Users) - 1 do
    RegisterIt(Users[i]);
  LoadKeyboardLayout('00000429',KLF_ACTIVATE);
end;

----------

