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.
|
Busca ayuda sobre ShellExecute.
|
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. ;) |
Código:
"expedientes/"+DBECodigo->Text.c_str()+".pdf" |
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.. |
¿y has probado a crear la cadena antes y luego pasarla al shellexecute?
Código:
cVariable = "expedientes/" + DBECodigo->Text.c_str() + ".pdf"; |
Sigue igual
Sigue dando los mismos fallos que si le pongo toda la cadena en el shellexecute al hacerlo como has dicho.
|
perdona, pero ¿esa cadena es "correcta"?, o sea, te sale algo así como: "\expedientes\pepito.pdf" ¿es válida?
|
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.
|
Cita:
|
El error
El error que me da es "Invalid pointer addition"
"expedientes/" + DBECodigo->Text.c_str() + ".pdf" es decir, falla en el signo '+' |
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); |
La franja horaria es GMT +2. Ahora son las 02:14:40. |
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