Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Varios
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 21/05/2007
Isabel_AS Isabel_AS is offline
Registrado
 
Join Date: Jan 2007
Posts: 9
Poder: 0
Isabel_AS Va por buen camino
¿Se puede modificar el idioma predeterminado por código?

Hola,
Me gustaría saber como se modifica por código la configuración regional y de idioma, para poner el idioma a portugués(Portugal), hacer una impresión, y volver a cambiarlo a lo que tuviera antes.
He encontrado las funciones GetSystemDefaultLangID y GetUserDefaultLangID para ver el idioma que hay, pero ¿me puede decir alguien cuáles hay para modificarlo?
Gracias de antemano.
Reply With Quote
  #2  
Old 21/05/2007
cHackAll's Avatar
[cHackAll] cHackAll is offline
Baneado?
 
Join Date: Oct 2006
Posts: 2,159
Poder: 22
cHackAll Va por buen camino
Cool Sipi

Todo se puede... revisa éste link

Suerte!

Last edited by cHackAll : 21/05/2007 at 21:32.
Reply With Quote
  #3  
Old 22/05/2007
Isabel_AS Isabel_AS is offline
Registrado
 
Join Date: Jan 2007
Posts: 9
Poder: 0
Isabel_AS Va por buen camino
No soy capaz de conseguirlo por ese camino.
Estoy intentando esto:

Código Delphi [-]
          
          if Mensaje('¿ Imprimir Contrato en Portugués ?', '', '', True) then begin
             SysLocale.DefaultLCID := 2070;
             SysLocale.PriLangID   := LANG_PORTUGUESE;
             SysLocale.SubLangID   := SUBLANG_PORTUGUESE;
          end
          else begin
             SysLocale.DefaultLCID := 3082;
             SysLocale.PriLangID   := LANG_SPANISH;
             SysLocale.SubLangID   := SUBLANG_SPANISH;
          end;

pero no lo pilla. El caso es que cuando cambio manualmente por el panel de control el idioma los valores de SysLocale son esos.
¿Sabe alguien qué está mal aquí?
Gracias
Reply With Quote
  #4  
Old 24/05/2007
cHackAll's Avatar
[cHackAll] cHackAll is offline
Baneado?
 
Join Date: Oct 2006
Posts: 2,159
Poder: 22
cHackAll Va por buen camino
Cool Mmm...

Isabel, SysLocale es un objeto utilizado por la funcion FormatDateTime para interpretar las fechas, no cambiará la lengua que usa el S.O. Procuraré analizar el caso... intentando ayudarte; hasta entonces por qué no nos cuentas más especificamente lo que necesitas: acaso quieres imprimirlo en Word? o es que quieres usar sierto grupo de caracteres? por que necesitas eso? Pregunto pues talvez haya una forma más sencilla de solucionar el problema.

Saludos.
Reply With Quote
  #5  
Old 24/05/2007
Isabel_AS Isabel_AS is offline
Registrado
 
Join Date: Jan 2007
Posts: 9
Poder: 0
Isabel_AS Va por buen camino
Muchas gracias por tu interés cHackAll.

Lo que quiero es imprimir en word, tengo dos ficheros base, uno en español y otro en portugues con una serie de marcadores, que relleno desde delphi (datos del cliente y demás). El tema del idioma viene por la fecha del contrato, que cojo del sistema.
También utilizo:
ShortDateFormat := 'dddd, d "de" mmmm "de" yyyy';
para que me salgan los nombres del día y del mes, y, claro, lo que quiero es que me salgan en español y en portugués dependiendo del caso.... y, esto sale muy bien..... cambiándolo desde el panel de control... ya solo me falta saber cambiarlo yo
Reply With Quote
  #6  
Old 24/05/2007
cHackAll's Avatar
[cHackAll] cHackAll is offline
Baneado?
 
Join Date: Oct 2006
Posts: 2,159
Poder: 22
cHackAll Va por buen camino
Cool Solucion

Tengo entendido que el meollo del asunto está en los nombres de los días y los meses... Siendo éste el caso divagué entre APIs y la unidad SysUtils para producir tu resultado, espero sea lo que necesitas.

Código Delphi [-]
function GetLocaleStr(const Locale, LCType: Cardinal): ShortString;
begin
 Result[0] := Char(GetLocaleInfo(Locale, LCType, @Result[1], 255) - 1);
 Result[1] := Char(Byte(Result[1]) and not $20);
end;

function GetDateStr(DateTime: TDateTime; Lang: Cardinal): string;
var SystemTime: TSystemTime; Locale, LCID: Cardinal;
begin
 LCID := GetThreadLocale;
 SetThreadLocale(Lang);
 Locale := GetThreadLocale;
 DateTimeToSystemTime(DateTime, SystemTime);
 Result := GetLocaleStr(Locale, LOCALE_SDAYNAME1 + Word(SystemTime.wDayOfWeek - 1) mod $FFF9) + ', ' + IntToStr(SystemTime.wDay) + ' de ' +
           GetLocaleStr(Locale, LOCALE_SMONTHNAME1 + SystemTime.wMonth - 1) + ' del ' + IntToStr(SystemTime.wYear);
 SetThreadLocale(LCID);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var xxx: string;
begin
 DateTimeToString(xxx, 'dddd, d "de" mmmm "de" yyyy', Now);
 Caption := xxx + ' ~ ' + GetDateStr(Now, LANG_PORTUGUESE) + ' ~ ' + GetDateStr(Now, LANG_ENGLISH) + ' ~ ' + GetDateStr(Now, LANG_SPANISH);
end;

Saludos

Last edited by cHackAll : 24/05/2007 at 19:07.
Reply With Quote
  #7  
Old 24/05/2007
cHackAll's Avatar
[cHackAll] cHackAll is offline
Baneado?
 
Join Date: Oct 2006
Posts: 2,159
Poder: 22
cHackAll Va por buen camino
Cool Uppsss

Pequeño bug! para los que vieron antes de que lo corrija, hubo un errorcillo en el día ya esta solucionado !
Reply With Quote
  #8  
Old 28/05/2007
Isabel_AS Isabel_AS is offline
Registrado
 
Join Date: Jan 2007
Posts: 9
Poder: 0
Isabel_AS Va por buen camino
gracias, gracias

cHackAll, muchas gracias, efectivamente es lo que necesitaba, con esto funciona ok, como yo quería.
La verdad es que yo sola no lo hubiera sacado, ni siquiera entiendo muy bien el tema leyendo el código.... creo que me toca empollar un poquito por este camino...
Otra vez gracias y saludos!!
Reply With Quote
  #9  
Old 28/05/2007
DarKraZY's Avatar
DarKraZY DarKraZY is offline
Miembro
 
Join Date: Aug 2003
Posts: 460
Poder: 24
DarKraZY Va por buen camino
Anteriormente ví este código en la sección de trucos y puse un comentario. Y ahora que veo el hilo también responderé aquí.

Creo que sería más sencillo de la siguiente manera:

Código Delphi [-]
function GetDateStr(DateTime: TDateTime; Lang: Cardinal): string;
var
  fs: TFormatSettings;
begin
  GetLocaleFormatSettings(Lang, fs);
  Result := FormatDateTime('dddd, d "de" mmmm "del" yyyy', DateTime, fs);
end

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
 Caption := GetDateStr(Now, LANG_PORTUGUESE) + ' ~ ' + GetDateStr(Now, LANG_ENGLISH) + ' ~ ' + GetDateStr(Now, LANG_SPANISH);
end;
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
¿Se puede modificar el valor de una constante? DarKraZY Varios 3 27/08/2006 14:13
Modificar DSN desde código Iuconlas Conexión con bases de datos 0 20/07/2006 10:57
Modificar NetDir por código Delphi arex400 Conexión con bases de datos 2 24/08/2005 15:48
Modificar una gráfica por código hogol Servers 0 02/12/2003 21:55
Modificar LOCAL SHARE por código Lepe Conexión con bases de datos 2 16/09/2003 16:22


All times are GMT +2. The time now is 03:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi