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 

CreateOleObject con C++ Builder 4

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: CreateOleObject con C++ Builder 4 Responder citando

Hola
Soy practicamente nuevo en esto del c++ Builder, tengo conocimientos basicos, y desearia que alguien me explique, o me indique donde encontrar un ejemplo completo que emplee CreateOleObject, OleProcedure y Exec.
Gracias

favor de ser posible responder tambien a luisraisel@iname.com

Volver arriba
Mensaje    Asunto: CreateOleObject con C++ Builder 4 Responder citando

Hola, te envio un pequeño accediendo a Excel...

Hay que añadir:
#include <Comobj.hpp>

//-------- Abre EXCEL
Variant xlApp;

xlApp = CreateOleObject("Excel.Application");

//-------- hace EXCEL visible
xlApp.Exec(PropertySet("Visible") << true);

//-------- crea acceso al objeto 'libro'/workbook
Variant xlBooks = xlApp.Exec(PropertyGet("Workbooks"));

//-------- Crea un fichero nuevo
xlBooks.Exec(Procedure("Add"));
// ... o abre uno existente
// xlBooks.Exec(Procedure("Open") << "C:\\directorio\\fichero.xls");

//-------- coge el primer libro de la aplicacion
Variant xlBook = xlBooks.Exec(PropertyGet("Item") << 1);

//-------- crea acceso al objeto 'hoja'/worksheets
Variant xlSheets = xlBook.Exec(PropertyGet("Worksheets"));

//-------- coge la primera hoja del libro
Variant xlSheet = xlSheets.Exec(PropertyGet("Item") << 1);

//-------- Trabajando con celdas...
Variant VRange;
//-------- Escribe texto en las primeras 3x3 celdas
VRange = xlSheet.Exec(PropertyGet("Range") << "A1");
VRange.Exec(PropertySet("Value") << "CeldaA1");
VRange = xlSheet.Exec(PropertyGet("Range") << "A2");
VRange.Exec(PropertySet("Value") << "CeldaA2");
VRange = xlSheet.Exec(PropertyGet("Range") << "A3");
VRange.Exec(PropertySet("Value") << "CeldaA3");
//------
VRange = xlSheet.Exec(PropertyGet("Range") << "B1");
VRange.Exec(PropertySet("Value") << "CeldaB1");
VRange = xlSheet.Exec(PropertyGet("Range") << "B2");
VRange.Exec(PropertySet("Value") << "CeldaB2");
VRange = xlSheet.Exec(PropertyGet("Range") << "B3");
VRange.Exec(PropertySet("Value") << "CeldaB3");
//------
VRange = xlSheet.Exec(PropertyGet("Range") << "C1");
VRange.Exec(PropertySet("Value") << "CeldaC1");
VRange = xlSheet.Exec(PropertyGet("Range") << "C2");
VRange.Exec(PropertySet("Value") << "CeldaC2");
VRange = xlSheet.Exec(PropertyGet("Range") << "C3");
VRange.Exec(PropertySet("Value") << "CeldaC3");

//-------- Borra las primeras 2 x 2 celdas
VRange = xlSheet.Exec(PropertyGet("Range") << "A1:B2");
VRange.Exec(Function("ClearContents"));

//-------- Guarda el libro actual
xlBook.Exec(Procedure("SaveAs") << "c:\\fichero.xls");

//-------- Cierra excel
xlApp.Exec(PropertySet("Visible") << false);
xlApp.Exec(Procedure("Quit"));
xlApp.Clear();


...espero que te sirva,

Saludos.
_Leo

Volver arriba
Mensaje    Asunto: CreateOleObject con C++ Builder 4 Responder citando

Y que tengo mal aqui???

me da el sgte error en sysvari.h:
Could not find a match for TVariant::operator=(voi *)

NOTA:fijate que no uso EXEC sino OleProcedure


GRACIAS por tu atencion

respondeme si puedes a luisraisel@iname.com
//---------------------------------------------------------------------------
#include <vcl.h>
#include <utilcls.h>
#include <comobj.hpp>
#pragma hdrstop
#include "Ubicacion.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Variant MapInfo;
TFormVentanaDelMapa *FormVentanaDelMapa;
//---------------------------------------------------------------------------
__fastcall TFormVentanaDelMapa::TFormVentanaDelMapa(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFormVentanaDelMapa::FormCreate(TObject *Sender)
{
char msg[11],ventana[50];

try
{
MapInfo=CreateOleObject("MapInfo.Application");
}
catch(...)
{
//Application->MessageBox("Creando Enlace con Mapinfo.","Ventana de Error");
}
strcpy(msg,"Set Application window ");
ltoa((int) MarcoDelMapa->Handle ,ventana,10);
strcat(msg,ventana);
MapInfo.OleProcedure("Do",MarcoDelMapa->Handle);
msg[0]=0;
ventana[0]=0;
strcpy(msg,"Set Next Document Parent ");
itoa((int)MarcoDelMapa->Handle ,ventana,10);
strcat(msg,ventana);
strcat(msg," Style 1");
MapInfo.OleProcedure("Do",msg);
//Cargar WorkSpace
msg[0]=0;
strcpy(msg,"Run Application \"C:\\Miscel\\builder4.wor\"");
MapInfo.OleProcedure("Do",msg);

}
//---------------------------------------------------------------------------
void __fastcall TFormVentanaDelMapa::BTNCerrarClick(TObject *Sender)
{
//Cerrar Todas las tablas
MapInfo.OleProcedure("runmenucommand" , "104");
//Cerrar Mapinfo
MapInfo.OleProcedure("runmenucommand" , "113");
exit(0);
}
//---------------------------------------------------------------------------

Volver arriba
Mensaje    Asunto: CreateOleObject con C++ Builder 4 Responder citando

Prueba a utilizar:

MapInfo.OleProcedure("Do", (THandle)MarcoDelMapa->Handle);

o bien UINT o unsigned int que seria realmente lo mismo

ya que los "Handles" de ventanas son de tipo void*

Volver arriba
Mensaje    Asunto: CreateOleObject con C++ Builder 4 Responder citando

Ok, voy a probar
Volver arriba
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.