 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
SumSum Lt JG


Registrado: 06 Oct 2002Mensajes: 52
|
Publicado: Vie 23 Abr, 2010 10:21 pm Asunto: Aplicación Multilingue |
|
|
Estoy reprogramando un programa que tengo hecho para que ahora se pueda utilizar en Bulgaro.
La cuestión es que finalmente me he decantado por guardar en una tabla la traducción de cada palabra/frase y luego en OnShow de cada Formulario utilicé un código genial para cambiar los Caption/Hint y que dejó Leo en una consulta y que detallo abajo. Funciona perfectamente salvo que resulta que los componentes que están dentro de un GroupBox o similar no los cambia.
for (int i = 0; i < ControlCount; i++)
{
TControl* control = static_cast<TControl*>(Controls[i]);
if (IsPublishedProp(control, "Hint"))
{
FILTRO="ORIGINAL ='"+GetPropValue(control, "Hint")+"'";
Datos->QIDIOMA->Filter="";
Datos->QIDIOMA->Filter=FILTRO;
if (Datos->QIDIOMA->FindFirst())
SetPropValue(control, "Hint",Datos->QIDIOMA->FieldByName("BG")->AsString);
}
if (IsPublishedProp(control, "Caption"))
{
FILTRO="ORIGINAL ='"+GetPropValue(control, "Caption")+"'";
Datos->QIDIOMA->Filter="";
Datos->QIDIOMA->Filter=FILTRO;
if (Datos->QIDIOMA->FindFirst())
SetPropValue(control, "Caption",Datos->QIDIOMA->FieldByName("BG")->AsString);
}
}
Podría utilizar FindComponent como indico abajo, pero resulta que tengo muchos tipos distintos de componentes en los que ademas les he cambiado el nombre y no tienen el nombre tipo de LMDButton1...etc... Y de ahí mi consulta, ¿alguna idea de cómo resolverlol?
int i;
TLabel* Etiqueta;
for (i = 1; i < FConfi->ComponentCount; i++)
{
Etiqueta = (TLabel *)FindComponent("Label" + (AnsiString)i);
FILTRO="ORIGINAL ='"+Etiqueta->Caption+"'";
Datos->QIDIOMA->Filter="";
Datos->QIDIOMA->Filter=FILTRO;
if (Datos->QIDIOMA->FindFirst())
Etiqueta->Caption = Datos->QIDIOMA->FieldByName("BG")->AsString;
} _________________ Asun |
|
| Volver arriba |
|
 |
SumSum Lt JG


Registrado: 06 Oct 2002Mensajes: 52
|
Publicado: Vie 23 Abr, 2010 10:53 pm Asunto: |
|
|
Bueno, pues la respuesta es tan sencilla como que el mismo codigo de TConrol funciona con TComponent. Lo había intentado hace dias pero seguramente algo hice mal porque hoy sí que funciona y perfectamente.
for (int i = 0; i < FConfi->ComponentCount; i++)
{
TComponent* componente = static_cast<TControl*>(Components[i]);
if (IsPublishedProp(componente, "Caption"))
{
FILTRO="ORIGINAL ='"+GetPropValue(componente, "Caption")+"'";
Datos->QIDIOMA->Filter="";
Datos->QIDIOMA->Filter=FILTRO;
if (Datos->QIDIOMA->FindFirst())
SetPropValue(componente, "Caption",Datos->QIDIOMA->FieldByName("BG")->AsString);
}
} _________________ Asun |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|