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 

Incrustar excel en formulario

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Incrustar excel en formulario Responder citando

Buenos días,

Espero puedan ayudarme, ya que llevo varios dias y no doy con la solución a mi problema.

Estoy intentando incrustar un fichero excel en mi formuario.
Lo hago mediante:

OleContainer1->CreateObjectFromFile(filename,false);

El fichero excel se abre dentro del formulario, pero no veo las pestañas. Solo la hoja principal, sin scrollbars.

Si hago click sobre el Olecontainer, se abre el fichero en edición, mostrando la barra de excel en la parte superior de mi formulario, pero no visualizco de primeras el contenido del fichero, ni las pestañas de la hoja excel.
Cuando paso con el ratón por encima se empiezan a visualizar estas cosas, es como si faltara ejecutar un repaint.

Trabajo con Builder 10.2 y Office 365.

gracias,
Javi.
_________________
Javi
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Yo lo hago así con word:

PageControl1->ActivePage=HojaModPlant;
OC1->CreateObjectFromFile(sPlantilla.c_str(),false);
OC1->Align=alClient;
//OC1->AutoVerbMenu=false;
//OC1->AutoActivate = aaManual;
//OC1->Iconic=false;
OC1->DoVerb(ovPrimary); //ovShow);//ovPrimary);
//OC1->Enabled=true;
//OC1->SetFocus();

//esto se hace para ajustar el scrollbox del documento para que pueda subir y bajar
WindowState=wsMinimized;
WindowState=wsMaximized;
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Muchas gracias por la ayuda,

Ya lo tengo funcionando.

A la hora de guardar si he visto algo extraño a lo que no termino de encontrar explicación.

Para guardar el fichero excel previamente abierto en el OLEContainer, utilizo lo siguiente:

void TFormPrincipal::GuardadFicheroExcel(void)
{
try
{
WideString sFicheroGenerado;
sFicheroGenerado = PanelNombreFich->Caption ;

Variant vOLEExcel = OleContainer1->OleObject.GetActiveObject("Excel.Application");
// Get document out of the OLE container
Variant vActiveDocument = vOLEExcel.OlePropertyGet("ActiveWorkBook");
//vActiveDocument.OleProcedure("SaveAs", NombreFichero);
vActiveDocument.OleProcedure("SaveAs",sFicheroGenerado);
// set saved-flag to inhibit save-questions
vActiveDocument.OlePropertySet("Saved", true);

vOLEExcel = vActiveDocument = Unassigned();
}
catch(...)
{
// ERROR
}
}

Si este metodo lo invoco al hacer click sobre un Panel funciona OK.
Si lo llamo al pulsar un TButton, da el siguiente error:

Assertion failed: is Bound(), file
C:\Builds\tp\include\windows\rtl\utilcls.h, line 3571.

No sé porque puede ser, que se comporte distinto con un TPanel y un TButton.
_________________
Javi
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Yo lo guardo así:

void __fastcall TfrmPlantillas::Cerrar1Click(TObject *Sender)
{
AnsiString sPlantilla=HojaPlant->Caption;

if(OC1->State==osUIActive)
{
if(OC1->Modified)
{
// bOk=Mensaje("pregunta","El documento ha sido modificado. ¿Deseas guardar los cambios?","Validación");
// if(bOk)
// {

sPlantilla = ReemplazaTexto(sPlantilla,"/","-");


OC1->OleObject.OleProcedure("SaveAs", sPlantilla);
OC1->DestroyObject();

AnsiString sSerial= QryTabpl_serial->Value;
DTM1->QryTemp1->Close();
DTM1->QryTemp1->SQL->Text = "update gen_plant set pl_plant_fisica=:DOCUMENTO where pl_serial =:SERIAL";
DTM1->QryTemp1->ParamByName("SERIAL")->AsInteger =StrToInt(sSerial);
DTM1->QryTemp1->ParamByName("DOCUMENTO")->LoadFromFile(sPlantilla.c_str(), ftBlob);
DTM1->QryTemp1->ExecSQL();

ConsultaGeneral();
LocalizaRegistro("pl_serial",sSerial,QryTab,false);

}
// }
else
OC1->DestroyObject();
}
else
OC1->DestroyObject();

BorraArchivo(sPlantilla);
PageControl1->Pages[0]->TabVisible=true;
//ocultar el boton cerrar
/////////////////////////
HMENU hMenu = GetSystemMenu(Handle, FALSE);
EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND | MF_ENABLED);
DrawMenuBar(Handle);

MainMenu1->Items->Items[0]->Visible=false;
PageControl1->Pages[1]->TabVisible=false;
PageControl1->ActivePage=HojaDatos;
}
//---------------------------------------------------------------------------
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
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.