Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-09-2007
zidfrid zidfrid is offline
Miembro
 
Registrado: abr 2007
Ubicación: buga valle colombia
Posts: 66
Poder: 18
zidfrid Va por buen camino
Ubicar cursor en word

hola amigos, resulta que tengo una plantilla en word en la cual deseo insertar unos datos, ojala usando los componentes WordApplication, WordDocument.
El hecho es que primero debo hubicar el cursor en la pocision del documento donde deseo insertar la informacion, esto no lo he podido hacer; me apeno de mi ignorancia, pero de verdad he buscado durante horas y horas con el google, altavista, mamma y no he encontrado algo que me funcione.
imagino que debe haber alguna funcion que me permita hacer esto con coordenadas en x,y.
de todas maneras agradesco de ante mano cualquier ayuda que me puedan brindar, seria muy bueno algun link si es que existe, donde muestren las funciones relacionadas con la automatizacion de word y como se usan; bueno en ultimas cualquier ayuda es cariño.
gracias por su tiempo.....
__________________
documentos de word
Responder Con Cita
  #2  
Antiguo 21-09-2007
zidfrid zidfrid is offline
Miembro
 
Registrado: abr 2007
Ubicación: buga valle colombia
Posts: 66
Poder: 18
zidfrid Va por buen camino
he pero nadie que me eche un empujon con esto, acaso sera que no hay algun lugar donde uno pueda encontrar documentacion de soporte sobre los componentes con los que se maneja el word?
__________________
documentos de word
Responder Con Cita
  #3  
Antiguo 24-09-2007
JAVH JAVH is offline
Miembro
 
Registrado: mar 2007
Posts: 17
Poder: 0
JAVH Va por buen camino
Si, la MSDN de Microsoft, y también una búsqueda por Google arroja buenos resultados, también los foros de club builder
Código:
http://www.areabuilder.com
hay muy buena documentación, el problema ahí es que son un poco elitistas y si eres nuevo muchas veces no te hacen caso, pero es muy buen sitio para consultar, de ahí saqué este código

Código:
#if (__BORLANDC__ >= 0x0530) 
    #include <Comobj.hpp> 
#else 
    #include <oleauto.hpp>  // BCB 1 
#endif
......

Variant vWord, vDocumentos, vDocumento, vSeleccion, vBuscar; 
    String sPath = ExtractFilePath( Application->ExeName ); 
    String sFicheroPlantilla = sPath + "plantilla.doc"; 
    String sFicheroGenerado  = sPath + "plantilla2.doc"; 
    //--- Abre Word 
    vWord = CreateOleObject( "Word.Application" ); 
    vWord.OlePropertySet( "Visible", !checkGuardar->Checked ); 
    //--- Abre el documento que usaremos como plantilla 
    vDocumentos = vWord.OlePropertyGet( "Documents" ); 
    vDocumento = vDocumentos.OleFunction( "Open", 
        sFicheroPlantilla.c_str(),  // Documento 
        false,                      // Confirmar conversiones 
        true,                       // Modo se solo lectura 
        false,                      // Añadir al menu de ficheros recientes 
        ""                          // Clave del documento 
    ); 
    //--- Selecciona todo el documento para reemplazar 
    vSeleccion = vWord.OlePropertyGet( "Selection" ); 
    vSeleccion.OlePropertyGet( "Range" ).OleProcedure( "SetRange", 0, 0 ); 
    vBuscar = vSeleccion.OlePropertyGet( "Find" ); 
    vBuscar.OleProcedure( "ClearFormatting" ); 
    vBuscar.OlePropertyGet( "Replacement" ).OleProcedure( "ClearFormatting" ); 
    //--- sustituimos una palabra 
    // Aqui podemos meter el bucle que va a ir reemplanzando palabras 
    vBuscar.Exec( Procedure( "Execute" ) 
        << "{{nombre}}"               // Texto a buscar 
        << VT_EMPTY                   // Coincidir mayusculas y minusculas 
        << VT_EMPTY                   // Solo palabras completas 
        << VT_EMPTY                   // Usar caracteres comodin 
        << VT_EMPTY                   // Suena como 
        << VT_EMPTY                   // Todas las formas de la palabra 
        << true                       // Hacia adelante 
        << VT_EMPTY                   // Wrap 
        << VT_EMPTY                   // Format 
        << Edit1->Text.c_str()        // Reemplazar con... 
        << 2                          // 2 = reemplazar todo 
    ); 
    //--- sustituimos otra palabra 
    vBuscar.Exec( Procedure( "Execute" ) << "{{direccion}}" 
        << VT_EMPTY << VT_EMPTY << VT_EMPTY << VT_EMPTY << VT_EMPTY 
        << true << VT_EMPTY << VT_EMPTY << Edit2->Text.c_str() << 2 ); 
    //--- salvamos automaticamente si procede y cerramos Word 
    if ( checkGuardar->Checked ) 
    { 
        vDocumento.OleProcedure( "SaveAs", sFicheroGenerado.c_str() ); 
        vDocumento.OleProcedure( "Close", 0xFFFFFFFF); 
        vWord.OleProcedure( "Quit" ); 
        ShowMessage("Documento generado."); 
    } 
    vWord = vDocumentos = vDocumento = vSeleccion = vBuscar = Unassigned;
Es que no se puede saber todo HOYGAN.

Última edición por JAVH fecha: 24-09-2007 a las 22:12:06.
Responder Con Cita
  #4  
Antiguo 27-09-2007
zidfrid zidfrid is offline
Miembro
 
Registrado: abr 2007
Ubicación: buga valle colombia
Posts: 66
Poder: 18
zidfrid Va por buen camino
hola javh, una vez mas me echas la mano, te lo agradezco mucho.
veras en cuanto a lo de elitistas tienes toda la razón ya lo he notado por que ya he ingresado a ese sitio, pero bueno eso no importa cada quien tiene su forma de ser.
oye el problema no es que no encuentre información, ya que si se encuentra, el detalle es que no me funciona la que he encontrado, por ello ando buscando como una especie de manual sobre los componentes visuales con los que se maneja el word "WordApplication, WordDocument", encontre un doc de ayuda "help file" de la empresa que diseño los componentes, pero no es freeware, y por que hago esto?, por que todo lo que encuentro esta compilado sobre delphi, java y paradox y he notado que muchas veces las funciones que ellos usan y la forma como las usan son las mismas que yo empleo y sin embargo a mi no me funcionan.
dejame probar tu código, aunque puedo notar que la posición del cursor depende de una palabra previamente determinada.
__________________
documentos de word
Responder Con Cita
  #5  
Antiguo 28-09-2007
JAVH JAVH is offline
Miembro
 
Registrado: mar 2007
Posts: 17
Poder: 0
JAVH Va por buen camino
Si, no te puedes mover libremente como si fuera una pantalla de DOS, solamente por el texto, donde sí puedes moverte libremente es para insertar objetos:

Código para insertar una imagen (tomado también de areabuilder), lo probé y funciona incluso con jpegs.

Código:
#include <comobj.hpp> 
// En versiones anteriores a la 6 ademas la siguiente: 
// #include <utilcls.h>

inline float MmToPoints(float mm) {return mm * 2.83464567;}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant word = GetActiveOleObject("Word.Application"); 
Variant doc = word.OlePropertyGet("ActiveDocument"); 

Variant sections = doc.OlePropertyGet("Sections"); 
Variant footers = sections.OlePropertyGet("First").OlePropertyGet("Headers"); 
Variant footer = footers.OleFunction("Item", 1 /*wdHeaderFooterPrimary*/); 

Variant shapes = footer.OlePropertyGet("Shapes"); 
Variant shape = shapes.OleFunction("AddPicture", 
    "c:\\dir\\imagen.bmp", // ruta a la imagen 
    false,                 // Vincular imagen al documento? 
    true);                 // Guardar la imagen vinculada con el documento? 

// Coordenadas relativas al borde de la página 
//  en este ejemplo a 100 mm. del borde izquierdo y a 10 mm del superior 
shape.OlePropertySet("RelativeHorizontalPosition", 1 /*wdRelativeHorizontalPositionPage*/); 
shape.OlePropertySet("Left", MmToPoints(100)); 
shape.OlePropertySet("RelativeVerticalPosition", 1 /*wdRelativeVerticalPositionPage*/); 
shape.OlePropertySet("Top", MmToPoints(10));
}
Responder Con Cita
  #6  
Antiguo 29-09-2007
zidfrid zidfrid is offline
Miembro
 
Registrado: abr 2007
Ubicación: buga valle colombia
Posts: 66
Poder: 18
zidfrid Va por buen camino
tienes todita la razón el código funciona muy bien, te agradezco una vez mas tu ayuda, y por si algo ya me estoy defendiendo con la pos del cursor a punta de tabuladores.
__________________
documentos de word
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Posicionar cursor en word nacho Servers 9 10-08-2006 13:30:09
Ubicar cursor en un TEdit supermilloriver OOP 1 26-07-2006 00:19:52
Ubicar un messagebox en pantalla Ricardo León Varios 2 26-09-2005 15:01:03
Ubicar REgistro insertado dentro de un BD sierraja Conexión con bases de datos 1 20-04-2005 19:11:04
Ubicar registro con Interbase BlueSteel Firebird e Interbase 3 14-09-2004 01:05:44


La franja horaria es GMT +2. Ahora son las 11:36:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi