Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Cambiar de idioma el botón del preview de quickreport

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Cambiar de idioma el botón del preview de quickreport Responder citando

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
Mensaje    Asunto: Cambiar de idioma el botón del preview de quickreport Responder citando

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
Mensaje    Asunto: Cambiar de idioma el botón del preview de quickreport Responder citando

Muchas gracias _Leo. Siento haber tardado en contestar, pero andaba un poco perdido últimamente. Muchas Gracias de nuevo.

GLYCYMERIS

Volver arriba
Mensaje    Asunto: Botonera en castellano Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: cambiar el idioma pero en esta funcion... Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Re: Botonera en castellano Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.