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 

LEOOO!!USO DEL OBJETO SHAPE PARA OLE Aut. Word

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: LEOOO!!USO DEL OBJETO SHAPE PARA OLE Aut. Word Responder citando

Estoy tratando de encontrar algo sobre como manejar la entrada de una imagen mediante automatización ole en el Word, bueno se que hay que manejar el objeto Shape y el Método AddPicture pero no logro que funcione. Espero que alguien ( LEOOOOOOOOOOOO) me pueda hechar un mano.
Gracias
Volver arriba
Mensaje    Asunto: Responder citando

Hola "yo mismo" (como a todos nos de por firmar así Wink )

Para resumir, con Word abierto prueba lo siguiente:
Código:
// Añadimos: #include<ComObj.hpp>
Variant vWord = GetActiveOleObject("Word.Application");

vWord.OlePropertyGet("Selection")
     .OlePropertyGet("InlineShapes")
     .OleFunction("AddPicture", "C:\\tuDir\\tuImagen.bmp");

Saludos:
_Leo
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

" " Moitas Gracias " "
Me ha funcionado perfectamente.. te lo agradezco.
Volver arriba
Mensaje    Asunto: OTRA MAS LEO Responder citando

Hola:
Este es un tema que a mi tb me interesa, me gustaría saber tb como se utiliza el metodo del InlineShapes Range, lo digo para colocar la imagen en la posición del documento que yo quiera.Estuve buscando por internet pero todo esta para el "puto VB Embarassed "

GRACIAS A TODOS
Volver arriba
Mensaje    Asunto: Responder citando

Hola Leo:

Mira he encontrado esta página en Chino (Nunca mejor dicho) .

void __fastcall TForm1::Button5Click(TObject £ªSender)
Variant Vshape,Vactive1,Vline;
Vactive1=V.OleFunction("ActiveDocument");
Vshape=Vactive1.OleFunction("Shapes");
// »ñ È¡ µ± ǰ »î ¶¯ ÎÄ µµ µÄShapes ¶Ô Ïó
// ʹ ÓÃShapes ¶Ô Ïó µÄAddLine ·½ ·¨ »¯ Ö± Ïß
Vline=Vshape.OleFunction("AddLine",90,80,400,80);
if (OpenDialog1 £­>Execute())
// ʹ ÓÃShapes ¶Ô Ïó µÄAddPicture
·½ ·¨ ²å Èë Ö¸ ¶¨ λ ͼ
Vshape.OleFunction("AddPicture",OpenDialog1
£­>FileName,50,50,80,100);
}


Intento pasarle tambien las coordenadas donde quiero poner la foto y el tamaño. Pero no me deja, he probado a poner

Variant Select=vWord.OlePropertyGet("Selection");
Variant Rango=Select.OlePropertyGet("Range");
Variant Dib=Rango.OlePropertyGet("InlineShapes").OleFunction("AddPicture",imagen.c_str(),true,false,Rango);


Esto funciona pero ahora necesitaria meterle las propiedades a "Range".Sabes algo de esto, por cierto AddLine es un metodo de Shapes o tb de InlineShapes
Volver arriba
Mensaje    Asunto: Responder citando

Hola a todos;

A mi tb me gustaría saber más sobre esto, pero me interesa más La función AddLine y AddOleObject del objeto Shape..Leoooo sabes algo de esto
Volver arriba
Mensaje    Asunto: Responder citando

Hola:

Yo no utilizo mucho esto, todo lo saco de la propia ayuda de Office, que en el caso del Office XP se llama "WDMAIN10.CHM" en mi caso en el path: "C:\Archivos de programa\Microsoft Office\Office10\3082", y dentro de la ayuda bajo "Información de programación" como muestra la imagen. Pero bueno, intentaré ayudar en lo que pueda.

            

Cita:
"yo mismo" escribió: ...Intento pasarle tambien las coordenadas donde quiero poner la foto y el tamaño. Pero no me deja, he probado a poner

Variant Select=vWord.OlePropertyGet("Selection");
Variant Rango=Select.OlePropertyGet("Range");
Variant Dib=Rango.OlePropertyGet("InlineShapes").OleFunction("AddPicture",imagen.c_str(),true,false,Rango);

Esto funciona pero ahora necesitaria meterle las propiedades a "Range".Sabes algo de esto, por cierto AddLine es un metodo de Shapes o tb de InlineShapes

A ver si te sirve esto:
Código:
Variant vWord = GetActiveOleObject("Word.Application");

Variant vSelection = vWord.OlePropertyGet("Selection");

Variant vRange = vSelection.OlePropertyGet("Range");

// Funciona de manera similar al SelStart/SelLength de un TMemo
vRange.OleFunction("SetRange", 1 /*Start*/, 1 /*End*/);

String imagen = "c:\\imagen.jpg";
Variant vShape = vRange.OlePropertyGet("InlineShapes")
        .OleFunction("AddPicture", imagen.c_str(), true, false, vRange);

Y otra manera de hacerlo, colocandolo en las coordenadas que queramos:
Código:
// Añadimos: #include<ComObj.hpp>

Variant vWord = GetActiveOleObject("Word.Application");

Variant vDocument = vWord.OlePropertyGet("ActiveDocument");
Variant vShapes = vDocument.OlePropertyGet("Shapes");

Variant vShape = vShapes.OleFunction("AddPicture",
    "c:\\imagen.jpg", // Path a la imagen
    false,            // Vincular imagen al documento?
    true,             // Guardar la imagen vinculada con el documento?
    100,              // Coordenada X
    0,                // Coordenada Y
    100,              // Ancho de la imagen
    100               // Alto de la imagen
);

// Esto equivale a poner el "estilo de ajuste"
// como "cuadrado" en el dialogo de formato de imagen
Variant vWrapFormat = vShape.OlePropertyGet("WrapFormat");
vWrapFormat.OlePropertySet("Type", 0 /*wdWrapSquare*/);


Cita:
"Maria" escribió: ....A mi tb me gustaría saber más sobre esto, pero me interesa más La función AddLine y AddOleObject del objeto Shape..

Con respecto a AddLine:
Código:
Con respecto a AddLine:

Variant vWord = GetActiveOleObject("Word.Application");

Variant vDocument = vWord.OlePropertyGet("ActiveDocument");
Variant vShapes = vDocument.OlePropertyGet("Shapes");

Variant vShape = vShapes.OleFunction("AddLine",
    90, 200, // Coordenadas X1,Y1
    500, 90  // Coordenadas X2,Y2
);

Variant vLineFormat = vShape.OlePropertyGet("Line");
// Cambiamos el color de la linea
vLineFormat.OlePropertyGet("ForeColor").OlePropertySet("RGB", RGB(255,0,0));
// Cambiamos el grosor de la linea
vLineFormat.OlePropertySet("Weight", 5);
// Hay muchas mas propiedades, consultar la ayuda

Y un ejemplo con AddOleObject:
Código:
// Añadimos: #include<OleCtrls.hpp> para usar EmptyParam
// La ayuda pone que esta en Variants.hpp, pero al menos
// en la versión 6+sp2 esta en OleCtrls.hpp

Variant vWord = GetActiveOleObject("Word.Application");

Variant vDocument = vWord.OlePropertyGet("ActiveDocument");
Variant vShapes = vDocument.OlePropertyGet("Shapes");

// Como ejemplo añadimos un archivo de sonido
vShapes.OleFunction("AddOleObject",
    EmptyParam,       // ClassType
    "c:\\sonido.wav", // Nombre archivo
    false,            // Vincular?
    false,            // Mostrar como icono?
    EmptyParam,       // Archivo que contiene el icono
    EmptyParam,       // Numero de icono dentro de ese archivo
    EmptyParam,       // Titulo del icono
    10,               // Coordenada X
    10,               // Coordenada Y
    48,               // Ancho
    48,               // Alto
    EmptyParam        // Anchor/Ancla/Marca
);

Espero que sea lo que necesitáis.

Saludos:
_Leo
Volver arriba
Ver perfil de usuario Enviar mensaje privado
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.