Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-04-2009
Charly911 Charly911 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Bs As, Argentina
Posts: 11
Poder: 0
Charly911 Va por buen camino
.ini y modificacion de .Caption

Hace un par de dias que estoy tratando de hacer andar el codigo, pero ya me sale humo de la cabeza y no anda!!!
Lo que estoy tratando de hacer es modifocar las propiedades .Caption y .Hint de todos los componentes de la aplicacion. Con que objetivo?? Que sea multi-lenguaje.
La idea es leer los nombres de los objetos desde un archivo .ini, y a partir de ahi agregarle .Caption o .Hint :=.......
Pero no me deja :'(

Aca les dejo un ejemplo de parte del codigo:

Código Delphi [-]
procedure TL2PacketHackMain.ChangeLang(L:string, );
begin
 if not (L = 'NoLang') then
  begin
   for i:=1 to 100 do
     begin
       C[i]+'.Caption':=Language.ReadString('L',C[i],'NoText');
     end;
  end;
end;

Espero haber sido lo suficientemente claro...

Charly.
Responder Con Cita
  #2  
Antiguo 06-04-2009
Avatar de DarkMan
DarkMan DarkMan is offline
Miembro
 
Registrado: jul 2006
Posts: 102
Poder: 18
DarkMan Va por buen camino
Código Delphi [-]
procedure TL2PacketHackMain.ChangeLang(L:string);
var C: TControl;
    I: Integer;
begin
 if not (L = 'NoLang') then
   for i:=0 to Form1.ControlCount-1 do
     begin
       C:= Form1.Controls[i]; 
      
       If C is TButton then
          TButton(C).Caption:=Language.ReadString(L, TButton(C).Caption, 'NoText');

       If C is TLabel then
          TLabel(C).Caption:=Language.ReadString(L, TLabel(C).Caption, 'NoText');
       {...}
     end;
end;

Aunque con tu ejemplo no lo dejas claro, deduje que lo que pretendías hacer es recorrer la lista de componentes y asignarle a cada uno el valor que le corresponde a su propiedad caption (si la tiene) o hint. En el pedazo de código que te pongo yo, realiza en parte lo que pides, pero para que funcione correctamente tendrás que asignar una identificación a cada componente para que pueda tomar el valor que le corresponde, sino todos adquirirán el mismo valor.

Un saludo.
__________________
"La recompensa de una buena acción está en haberla hecho"

Última edición por DarkMan fecha: 06-04-2009 a las 06:28:21.
Responder Con Cita
  #3  
Antiguo 06-04-2009
Charly911 Charly911 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Bs As, Argentina
Posts: 11
Poder: 0
Charly911 Va por buen camino
Cita:
Empezado por DarkMan Ver Mensaje
Código Delphi [-]procedure TL2PacketHackMain.ChangeLang(L:string); var C: TControl; I: Integer; begin if not (L = 'NoLang') then for i:=0 to Form1.ControlCount-1 do begin C:= Form1.Controls[i]; If C is TButton then TButton(C).Caption:=Language.ReadString(L, TButton(C).Caption, 'NoText'); If C is TLabel then TLabel(C).Caption:=Language.ReadString(L, TLabel(C).Caption, 'NoText'); {...} end; end;


Aunque con tu ejemplo no lo dejas claro, deduje que lo que pretendías hacer es recorrer la lista de componentes y asignarle a cada uno el valor que le corresponde a su propiedad caption (si la tiene) o hint. En el pedazo de código que te pongo yo, realiza en parte lo que pides, pero para que funcione correctamente tendrás que asignar una identificación a cada componente para que pueda tomar el valor que le corresponde, sino todos adquirirán el mismo valor.

Un saludo.
DarkMan: Aunque no fui muy claro comprendiste lo que necesitaba. Ya habia pensado en hacerlo como vos decis, pero el inconveniente se presenta ya que no se llaman TButton 1, 2, 3.... sino que tienen nombres como ChkLogin, ChkDecrypt, etc... por lo que queria leerlos de la siguiente manera:

Archivo .ini :
-------------
[English]
ChkLogin=Login
Chkdecrypt=Decrypt
[Espanol]
ChkLogin=Identificarse
ChkDecrypt=Decodificar
-------------

A partir de este archivo, y en caso de que este en ingles, leer el primer valor (ChkLogin) y el segundo (Login) y cambiar las propiedades asi:

ChkLogin.Caption:=Login

Osea la idea es tomar las palabras del archivo y utilizarlas para identificar a los diferentes objetos y asi poder modificar sus propiedades..

Sere mas claro ahora?

Charly.
Responder Con Cita
  #4  
Antiguo 06-04-2009
Charly911 Charly911 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Bs As, Argentina
Posts: 11
Poder: 0
Charly911 Va por buen camino
Me olvide de comentarles que esto lo queria hacer asi, porque sino tendria que agregar alrededor de 300 lineas al codigo y quedaria bastante molesto...
En caso de que no se pueda hacer como pretendo, como podria hacer para crear un nuevo archivo .pas y desde este cambiar las propiedades del Form??

Charly.
Responder Con Cita
  #5  
Antiguo 06-04-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Lightbulb

Cita:
Empezado por Charly911 Ver Mensaje
.... Aunque no fui muy claro comprendiste lo que necesitaba. Ya habia pensado en hacerlo como vos decis, pero el inconveniente se presenta ya que no se llaman TButton 1, 2, 3.... sino que tienen nombres como ChkLogin, ChkDecrypt, etc...
Amigo Charly911 no importa como se llamen los botones,Label,etc, igual el codigo que te propone DarkMan va funcionar por que no se basa en el nombre sino se basa en la clase a la que pertenece, ¿me entiendes?, por ejemplo esta linea de codigo:
Código Delphi [-]
If C is TButton then//aqui se esta preguntando si el Control C es un boton
...
...
If C is TLabel then// aqui se pregunta si el Control C es Label 
...
...
Es decir no importa como se llame el control solo se pregunta que tipo de control es
para hacer lo que quiera con el.¿entiendes?
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 07-04-2009 a las 20:55:29.
Responder Con Cita
  #6  
Antiguo 06-04-2009
Charly911 Charly911 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Bs As, Argentina
Posts: 11
Poder: 0
Charly911 Va por buen camino
OK OK no lo habia entendido bien.
Despues lo pruebo, o mañana, porque ahora me voy a la facu.. :P

Charly.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Modificacion masiva Spynosa Firebird e Interbase 7 07-10-2010 06:06:05
Modificación de vistas feruiz Firebird e Interbase 3 12-06-2008 08:43:00
CDO.DLL Creacion/Modificacion Enan0 Varios 2 04-06-2006 18:05:01
modificación de TFlatComboBox Er_Manué OOP 3 11-08-2003 10:19:41


La franja horaria es GMT +2. Ahora son las 08:55:40.


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