Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   abrir archivos con OpenDialog y ShellExecute (https://www.clubdelphi.com/foros/showthread.php?t=47690)

thelibmx 05-09-2007 02:52:26

abrir archivos con OpenDialog y ShellExecute
 
hola amigos he regresado y en forma de galletitas....(pequeño chiste) bien veran lo que yo quiero hacer es abrir desde delphi cualquier archivo, sea jpeg,pdf,word,excel,powertpoint, aunque se abra en su aplicacion origen, un ejemplo es digamos que tienen varios archivos en su escritorio, word,excel,pdf,etc.. si ustedes le dan un click al archivo se abre en el programa al cual corresponde la extencion, bien, pues yo quiero hacer lo mismo pero desde delphi,pero utilizando un opendialog y alguna funcion que los abriera, buscando en los foros escuche hablar de shellexecute y pues aparentemente creo que si me funciona solo que hay un problema tengo este codigo
Código Delphi [-]
 
procedure TForm1.Button2Click(Sender: TObject);
begin
ShellExecute(GetActiveWindow(),'open', 'c:\b.pdf' , nil,nil,W_SHOWNORMAL);
end;

bien eso lo que hace es que me abre un archivo que tengo en C: que se llama ''b'' y es pdf. y me lo abre bien, hasta ahi todo bien, la cosa es que cuando yo le agrego el open.dialog pues no me sale, mi codigo es asi:
Código Delphi [-]

procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog.Execute then
begin
ShellExecute(GetActiveWindow(),'open','opendialog.Files.Text', nil,nil, SW_SHOWNORMAL);
end;
end;
pero con esas lineas no me abre nada,es decir, si se despliega el opendialog y selecciono el mismo archivo que quiero abrir (b.pdf) pero no lo abre,no se que estoy haciendo mal segun yo deberia de funcionar con el codigo que puse pero no hace nada, o tal ves no es la forma indicada, lo que yo quiero es abrir cualquier archivo pero por medio de un open.dialog, si alguien me hecha una manita pues con mucho gusto se los agradecere, se que es un detallito el que falta creo :confused: o si alguien tiene una mejor solucion adelante :D Gracias !!

Rudi 05-09-2007 03:30:51

Añade 'ShellApi' en el uses de tu form

y la Funcion ShellExecute segun la he usado lleva esta forma

ShellExecute(Form1.Handle,nil,PChar(OpenDialog1.FileName),'','',SW_SHOWNORMAL);

Form1 lo cambias por el nombre de tu Form

comprobe lo que scribiste y asi funciona:

ShellExecute(GetActiveWindow(),'open',PChar(OpenDialog1.FileName), nil,nil, SW_SHOWNORMAL);


espero te sirva.

thelibmx 05-09-2007 17:12:15

Muy bien, Gracias Rudi, Quedo como queria...

thelibmx 06-09-2007 20:25:34

ventana dentro de un panel en un formulario de delphi
 
oye otra pregunta espero me puedas ayudar o si alguien mas conoce la respuesta pues se la agradeceria mucho.

Como le podria hacer para que el archivo que abri con esa instruccion apareciera en un panel o algo similar dentro de un formulario de delphi y no me permitiera agrandar mas o pasar de cierto tamaño, digamos que como un tipo frame que solo ocupe la mitad de la pantalla?, espero explicarme bien..

ocupo delphi2006

paldave 06-09-2007 20:44:12

Una cosa que puedes hacer es insertar un TOleContainer en tu formulario, con el tamaño que necesitas y luego cargar el archivo allí de la siguiente forma:
Código Delphi [-]
olecontainer1.CreateObjectFromFile('C:\midocumento.doc',false);
Esto te funcionará para todos los documentos cuyo programa asociado soporte OLE.
Saludos.

thelibmx 06-09-2007 21:19:44

woow, que bonito componente, exacto esta muy bien, era mas o menos lo que queria bien, solo tengo dos problemillas (de hecho tengo muchos jaja) pero ahora me interesan dos, probando esa funcion tengo dos cosillas, la primera cuando abres un documento de word o excel hay veces que si se despliega bien en el container y hay veces qe no, si tu das dos click en el container como que se abre la aplicacion y me cambia los menus de mi forma me sustituye los que tenia , y si la cierro se cierra toda la forma, hay manera de cambiar eso o controlarlo a que se despliegue solamente dentro del olecontainer o que simplemente se vea la informacion sin los menus o pues que regrese a su estado original, la otra cuestion es si tiene alguna propiedad para que sea de solo lectura y no se pueda modificar nada.. de los contenidos del olecontainer...

de antemano muchas gracias...
con lo que me has dicho me sirvio de gran ayuda:rolleyes:


La franja horaria es GMT +2. Ahora son las 08:23:37.

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