FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Abrir cualquier documento
Hola a tod@s!. Tengo unas fichas de personas, y lo que quiero saber es como hacer para que al hacer click en un boton se me abra el documento que tiene asociado una persona, ya sea word, excel, html, pdf o lo que sea. El nombre del documento sera codigo.doc, o codigo.html, etc, y codigo es el codigo de la persona que esta guardado en un campo de una tabla en una bd access, y que muestro en un DBEdit (conexion ADO). ¿Se puede hacer que me salga una vista previa de este documento como hace windows?. Gracias a tod@s.
|
#2
|
||||
|
||||
Busca ayuda sobre ShellExecute.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
|||
|
|||
He encontrado esto
Hola Neftali. He encontrado el siguiente trozo de codigo:
ShellExecute(NULL, "open", DBECodigo->Text.c_str(), NULL, NULL, SW_SHOWNORMAL) El problema que tengo es que en DBECodigo tengo el codigo de la persona que es el nombre del archivo, pero me falta la extension y la ruta hasta éste. He probado haciendo: ShellExecute(NULL, "open", "expedientes/"+DBECodigo->Text.c_str()+".pdf", NULL, NULL, SW_SHOWNORMAL) pero me da fallo. ¿Sabes cual es el problema?. Gracias por contestar tan rapido. |
#4
|
||||
|
||||
Código:
"expedientes/"+DBECodigo->Text.c_str()+".pdf" |
#5
|
|||
|
|||
Me da fallo
Si utilizo
ShellExecute(NULL, "open", "expedientes/"+DBECodigo->Text.c_str()+".pdf",NULL, NULL, SW_SHOWNORMAL); me da fallo de puntero no valido en el '+'. Si utilizo ShellExecute(NULL, "open", "expedientes\"+DBECodigo->Text.c_str()+".pdf",NULL, NULL, SW_SHOWNORMAL); con la barra al reves me da varios fallos como cadena no terminada, o que me falta ->, etc.. |
#6
|
||||
|
||||
¿y has probado a crear la cadena antes y luego pasarla al shellexecute?
Código:
cVariable = "expedientes/" + DBECodigo->Text.c_str() + ".pdf"; ShellExecute(NULL, "open",cVariable,NULL, NULL, SW_SHOWNORMAL); |
#7
|
|||
|
|||
Sigue igual
Sigue dando los mismos fallos que si le pongo toda la cadena en el shellexecute al hacerlo como has dicho.
|
#8
|
||||
|
||||
perdona, pero ¿esa cadena es "correcta"?, o sea, te sale algo así como: "\expedientes\pepito.pdf" ¿es válida?
|
#9
|
|||
|
|||
No es correcta
No entiendo muy bien tu pregunta, pero es que me da fallo al compilar la aplicacion, asi que tampoco puedo ver el valor de cVariable.
|
#10
|
||||
|
||||
Cita:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#11
|
|||
|
|||
El error
El error que me da es "Invalid pointer addition"
"expedientes/" + DBECodigo->Text.c_str() + ".pdf" es decir, falla en el signo '+' |
#12
|
|||
|
|||
Ya esta solucionado
Es un poco chapucero, pero funcionar, funciona:
String ruta = "expedientes/"; String nombre; String rutanombre1; String rutanombre2; String rutanombre3; String rutanombre4; String rutanombre5; String extension1; String extension2; String extension3; String extension4; String extension5; if(DBECodigo->Text=="") { ShowMessage("No hay asignado ningún curriculum"); } else { nombre = DBECodigo->Text.Trim(); extension1 = ".pdf"; extension2 = ".htm"; extension3 = ".jpg"; extension4 = ".doc"; extension5 = ".xls"; rutanombre1 = ruta + nombre + extension1; rutanombre2 = ruta + nombre + extension2; rutanombre3 = ruta + nombre + extension3; rutanombre4 = ruta + nombre + extension4; rutanombre5 = ruta + nombre + extension5; ShellExecute(NULL, "open", rutanombre1.c_str() ,NULL, NULL, SW_SHOWNORMAL); ShellExecute(NULL, "open", rutanombre2.c_str() ,NULL, NULL, SW_SHOWNORMAL); ShellExecute(NULL, "open", rutanombre3.c_str() ,NULL, NULL, SW_SHOWNORMAL); ShellExecute(NULL, "open", rutanombre4.c_str() ,NULL, NULL, SW_SHOWNORMAL); ShellExecute(NULL, "open", rutanombre5.c_str() ,NULL, NULL, SW_SHOWNORMAL); |
|
|
|