| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Glycymeris Invitado
|
Publicado: Vie 26 Jul, 2002 8:31 am Asunto: Cambiar de idioma el botón del preview de quickreport |
|
|
| Hola a todos: Aunque más o menos está claro, lo explico. Cuando hago un preview de un QuickReport, el botón close y los Hints de la ventana de vista previa aparecen en inglés, y yo quiero traducirlos al español. ¿Alguno sabría cómo hacer esto? Muchísimas gracias a todos y buen verano. GLYCYMERIS |
|
| Volver arriba |
|
 |
_Leo Invitado
|
Publicado: Jue 01 Ago, 2002 10:04 pm Asunto: Cambiar de idioma el botón del preview de quickreport |
|
|
| Hola Glycymeris: Tienes diferentes opciones: La mas comoda es cargar el archivo "QrPrev.Dfm" en el C++Builder (...\CBuilder6\Lib\Obj\qrprev.dfm) y traducirlo manualmente, con esto ya todo lo que compilemos lo llevara traducido y no hay que cambiar nada en el código. Otra opción es hacer la traducción en tiempo de ejecución, para ello metemos el siguiente código en el evento OnBeforePrint del QuickReport: HWND hWnd = FindWindow( "TQRStandardPreview", NULL ); hWnd = FindWindowEx( hWnd, NULL, "TToolBar", NULL ); if ( IsWindow(hWnd) ) { TToolBar *toolBar = dynamic_cast<TToolBar*>( FindControl(hWnd) ); if ( toolBar ) { // 0 - Separador toolBar->Buttons[1]->Hint = "Zoom: Página completa"; toolBar->Buttons[2]->Hint = "Zoom: 100%"; toolBar->Buttons[3]->Hint = "Zoom: Ancho de página"; // 4 - Separador toolBar->Buttons[5]->Hint = "Primera página"; toolBar->Buttons[6]->Hint = "Página anterior"; toolBar->Buttons[7]->Hint = "Página siguiente"; toolBar->Buttons[8]->Hint = "Última página"; // 9 - Separador toolBar->Buttons[10]->Hint = "Preparar impresora..."; toolBar->Buttons[11]->Hint = "Imprimir"; // 12 - Separador toolBar->Buttons[13]->Hint = "Guardar informe..."; toolBar->Buttons[14]->Hint = "Cargar informe..."; // 15 - Separador toolBar->Buttons[16]->Caption = "&Cerrar"; } } Saludos: _Leo PD: Creo que tal como esta tiene que funcionar bien al menos desde el BCB4 al BCB6. Para versiones anteriores habría que retocar cosas, pero no tengo instaladas esas versiones para hacer las pruebas. PD2: Si estas usando BCB6 y quieres ahorrarte el traducirlo tu, lo puedes bajar de [url=http://cppbuilder.hypermart.net/qrprev.zip]aquí[url] y sobrescribirlo.
|
|
| Volver arriba |
|
 |
Glycymeris Invitado
|
Publicado: Jue 08 Ago, 2002 6:40 am Asunto: Cambiar de idioma el botón del preview de quickreport |
|
|
| Muchas gracias _Leo. Siento haber tardado en contestar, pero andaba un poco perdido últimamente. Muchas Gracias de nuevo. GLYCYMERIS |
|
| Volver arriba |
|
 |
amatilla Cdt


Registrado: 03 Abr 2003Mensajes: 15
|
Publicado: Vie 04 Abr, 2003 11:38 am Asunto: Botonera en castellano |
|
|
Buen truco. Sólo me he encontrado un problema: el código funciona perfecto; la opción de traducir el formulario qrprev.dfm, que sería más cómoda, no me funciona.
Yo trabajo Builder 5 y me he encontrado con dos ficheros iguales en la instalción: uno en la carpeta que señalas (...\CBuilder5\Lib\Obj) y el otro en ...\CBuilder5\quickrpt y me pregunto dos cosas:
1ª. ¿Cuál es el que hay que traducir de los dos?
2ª Yo he traducido el módulo de ...\Obj, he cerrado Builder y vuleto a lanzar, he compilado el programa completo y me sigue saliendo en inglés. ¿He hecho algo mal? ¿Hay que hacer algo más? |
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Mar 08 Mar, 2005 7:49 pm Asunto: cambiar el idioma pero en esta funcion... |
|
|
Hola, me he encontrado esta funcion que me ha ayudado a generar reportes a partir de una consulta y enviando la Query inmediatamente.
este sería el codigo que encontre...
| Código: |
void TFunciones::GenerarInforme(TDataSet* dataset, String titulo, TStrings* campos)
{
if (campos->Count < 1)
throw Exception("No hay campos seleccionados.");
static TQuickRep* qr = 0;
if (qr)
delete qr;
qr = new TQuickRep(Application);
qr->DataSet = dataset;
TQRBand* bandPageHeader = qr->CreateBand(rbPageHeader);
TQRBand* bandPageFooter = qr->CreateBand(rbPageFooter);
TQRBand* bandColumnHeader = qr->CreateBand(rbColumnHeader);
TQRBand* bandDetail = qr->CreateBand(rbDetail);
qr->Units = MM;
bandPageHeader->Size->Height = 10;
bandPageHeader->Frame->DrawBottom = true;
bandPageHeader->Frame->Color = clSilver;
bandPageHeader->Frame->Width = 2;
bandPageFooter->Size->Height = 15;
bandPageFooter->Frame->DrawTop = true;
bandPageFooter->Frame->Color = clSilver;
bandPageFooter->Frame->Width = 2;
bandColumnHeader->Color = clSilver;
TQRSysData* QRSysData = new TQRSysData(bandPageHeader);
QRSysData->Parent = bandPageHeader;
QRSysData->Data = qrsReportTitle;
QRSysData->AlignToBand = true;
QRSysData->Alignment = taCenter;
QRSysData->Font->Style = TFontStyles() << fsBold;
QRSysData->Top += 10;
QRSysData = new TQRSysData(bandPageFooter);
QRSysData->Parent = bandPageFooter;
QRSysData->Data = qrsPageNumber;
QRSysData->AlignToBand = true;
QRSysData->Alignment = taCenter;
QRSysData->Text = "Página ";
QRSysData->Top += 4;
// Calcula el alto y el ancho medio de una letra
TForm* mainForm = Application->MainForm;
mainForm->Canvas->Font->Assign(bandDetail->Font);
int charWidth = mainForm->Canvas->TextWidth("x");
int charHeight = mainForm->Canvas->TextHeight("Xg");
mainForm->Canvas->Font->Assign(mainForm->Font);
// Definimos la altura de las bandas de cabecera y detalle
bandColumnHeader->Height = charHeight + 6;
bandDetail->Height = charHeight + 2;
// Añade el texto
TQRLabel *QRLabel;
TQRDBText *QRDBText;
int pos = 0;
for (int i=0; i<campos->Count; i++)
{
String fieldName = campos->Strings[i];
TField* field = qr->DataSet->Fields->FieldByName(fieldName);
QRLabel = new TQRLabel(bandColumnHeader);
QRLabel->Parent = bandColumnHeader;
QRLabel->AutoSize = false;
QRLabel->Transparent = true;
QRLabel->Caption = fieldName;
QRLabel->Width = field->DisplayWidth * charWidth;
QRLabel->Left = pos;
QRLabel->Top = 2;
QRDBText = new TQRDBText(bandDetail);
QRDBText->Parent = bandDetail;
QRDBText->AutoSize = false;
QRDBText->Color = bandDetail->Color;
QRDBText->Left = pos;
QRDBText->Top = 2;
QRDBText->Width = QRLabel->Width;
QRDBText->DataSet = dataset;
QRDBText->DataField = fieldName;
// Justificar a la derecha si es un campo numerico
switch(field->DataType)
{
case ftSmallint:
case ftInteger:
case ftAutoInc:
case ftLargeint:
QRDBText->Alignment = taRightJustify;
}
pos += QRLabel->Width + QRLabel->Font->Size;
}
// Cambia la orientación del papel dependiendo del ancho del texto
if (pos < bandDetail->Width)
qr->Page->Orientation = poPortrait;
else
qr->Page->Orientation = poLandscape;
qr->ReportTitle = titulo;
// Mostramos el report
qr->Preview();
}
|
mi pregunta es: ¿como hacer lo mismo pero para cuando se instancie el objeto como es el caso de la funcion anterior?? |
|
| Volver arriba |
|
 |
ciberale Cdt

Registrado: 17 Oct 2003Mensajes: 18
|
Publicado: Mie 04 Ene, 2006 2:04 am Asunto: Re: Botonera en castellano |
|
|
| amatilla escribió: | Buen truco. Sólo me he encontrado un problema: el código funciona perfecto; la opción de traducir el formulario qrprev.dfm, que sería más cómoda, no me funciona.
Yo trabajo Builder 5 y me he encontrado con dos ficheros iguales en la instalción: uno en la carpeta que señalas (...\CBuilder5\Lib\Obj) y el otro en ...\CBuilder5\quickrpt y me pregunto dos cosas:
1ª. ¿Cuál es el que hay que traducir de los dos?
2ª Yo he traducido el módulo de ...\Obj, he cerrado Builder y vuleto a lanzar, he compilado el programa completo y me sigue saliendo en inglés. ¿He hecho algo mal? ¿Hay que hacer algo más? |
Me gustaría saber sin necesidad de utilizar la programación del evento, modificar el fichero porque a mi tampoco me sale (en CBuilder 6 no se encuentra el fichero en el directorio quickrpt) |
|
| Volver arriba |
|
 |
ciberale Cdt

Registrado: 17 Oct 2003Mensajes: 18
|
Publicado: Jue 05 Ene, 2006 1:31 am Asunto: |
|
|
| Pos al final después de compilar varias veces el proyecto, si me ha salido. Por tanto, es posible modificar el fichero y obtener los cambios para la traducción. |
|
| Volver arriba |
|
 |
siervo Cdt

Registrado: 16 Nov 2005Mensajes: 5
|
Publicado: Mar 29 Ago, 2006 7:21 pm Asunto: |
|
|
Hice lo que dijo _Leo: "cargar el archivo "QrPrev.Dfm" en el C++Builder (...\CBuilder6\Lib\Obj\qrprev.dfm) y traducirlo manualmente" pero al recompilar y ejecutar me seguian apareciendo los mensajes en ingles.
Despues de hacer algunas pruebas encontre que basta con abrir la ventana de opciones del proyecto (Project->Options) y darle Ok para que al recompilar aplique los cambios realizados al archivo QrPrev.Dfm.
Ya me aparecen los mensajes en español, pero me gustaría poder cambiar el icono que aparece en la parte superior izquierda de la ventana, pues aparece el que pone Builder por default, ¿alguien sabe como cambiarlo?
Saludos. |
|
| Volver arriba |
|
 |
LIGERO Cmdr


Registrado: 13 May 2004Mensajes: 134Ubicación: Granada
|
Publicado: Mie 20 Sep, 2006 7:39 am Asunto: |
|
|
Seguramente ese problema lo tendrás tambien en el icono de tu aplicación.
Para cambiar el icono debes ir a Project->Option->Application. (Builder 6) _________________ La pintura es la expresión de la mente. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 21 Sep, 2006 11:56 am Asunto: |
|
|
Hay otra opción, que permite cambiar el icono sin tener que compilar otra vez el proyecto:
En el fichero cpp que tiene el mismo nombre del proyecto (fichero bpr) se puede incluir este código:
| Código: | WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR cmdLine, int)
{
HWND OtraVentana;
AnsiString cVersion = "Versión " + FileDateToDateTime(FileAge(Application->ExeName)).FormatString("ddmmyy");
OtraVentana = FindWindow(NULL, cVersion.c_str());
if (OtraVentana != NULL)
{
ShowWindow(OtraVentana, SW_RESTORE);
SetForegroundWindow(OtraVentana);
return 0;
}
try
{
cComando = cmdLine;
Application->Initialize();
Application->Title = cVersion;
Application->Icon->Empty;
if (FileExists("Logo.ico"))
Application->Icon->LoadFromFile("Logo.ico");
Application->CreateForm(__classid(TfForm1), &fForm1);
Application->Run();
}
catch (Exception &exception)
{
}
return 0;
} |
Hay varias cosas metidas:
- Cargo el icono de la aplicaicón con la líneaApplication->Icon->LoadFromFile
- Evito que se lance dos veces el programa con al línea OtraVentana = FindWindow(NULL, cVersion.c_str()); y el if siguiente _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
|