 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Javi6 Cdt

Registrado: 05 Ene 2003Mensajes: 17
|
Publicado: Vie 18 Feb, 2022 8:44 am Asunto: Incrustar excel en formulario |
|
|
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 |
|
 |
MarioMarieti Cmdr

Registrado: 28 Dic 2004Mensajes: 144Ubicación: Murcia (España)
|
Publicado: Mar 22 Feb, 2022 4:37 pm Asunto: |
|
|
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 |
|
 |
Javi6 Cdt

Registrado: 05 Ene 2003Mensajes: 17
|
Publicado: Mie 23 Feb, 2022 11:17 am Asunto: |
|
|
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 |
|
 |
MarioMarieti Cmdr

Registrado: 28 Dic 2004Mensajes: 144Ubicación: Murcia (España)
|
Publicado: Mar 01 Mar, 2022 10:02 pm Asunto: |
|
|
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 |
|
 |
|
|
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.
|