Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   problemas al abrir el segundo pdf (https://www.clubdelphi.com/foros/showthread.php?t=35308)

ilichhernandez 06-09-2006 20:51:08

problemas al abrir el segundo pdf
 
Hola amigos, estoy ocupando el componene active x "Acropdf", tengo instalado el acrobat profesional 6 y el delphi 7 y al abrir un documento en pdf lo realiza bien pero cuando trato un segundo no va bien ....

Código Delphi [-]
procedure Tfprincipal.bt_capitulosClick(Sender: TObject);
begin
capit_a := 'C:\Gestion\manual_pdf\' + cbb_capitulos.text ;
acroPdf1.src:=capit_a;
end;

con ese codigo abro el archivo en pdf..... ahora
para cerrar ese archivo ocupo

Código Delphi [-]
procedure Tfprincipal.dxButton1Click(Sender: TObject);
begin
acropdf1.Free;
end;

tambien les cuento que la sentencia acroPdf1.setShowToolbar(false); no me funciona, de echo el programa se me cae cuyando llamo esa linea de codigo.

Espero que alguien sepa como resolver este problemilla.... la idea es que existe una lista de archivos en pdf que se cargan en un combobox y el usuario eligue 1 (luego puede eleguir otro), al realizar click en un boton el archivo se debe abrir, como mencione antes , esto sirve para el primer archivo pero si el usuario quiere leer uin segundo archivo el programa se cae.

Agradeceria si alguien me ayuda...

Atentamente
Roberto Hernandez.:(

roman 06-09-2006 20:58:23

Si AcroPdf1 es una componente que insertas en el formulario, no puedes destruirla. No al menos si planeas utilizarla otra vez.

// Saludos

dec 06-09-2006 21:01:27

Hola,

Lo que dice Román (que se me adelantó) es lo que iba a decir yo: que tiene que haber algún método "CloseDocument", o "Close", en el componente, y, cuando no, tal vez no sea necesario sino abrir otro documento para "cargarse" el anterior... ahora, si no pudiera ser de otra forma y liberas el componente, entonces tendrás que crearlo de nuevo antes de cargar un nuevo documento, puesto que si no aparecerá el conocido "Access Violation", que, aunque no lo dices, tal vez sea el error conque topaste ahora. ¿No? ;)

ilichhernandez 06-09-2006 21:08:05

Entonces cual seria el camino a seguir..... no ocupar el acropdf1.free para no destruirlo.... entonces si ya tengo un pdf cargado como cargo otro distinto?..... gracias por las respuestas espero puedan ayudarme....

dec 06-09-2006 21:20:08

Hola,

Cita:

Empezado por yo mismo conmigo mismo
(...) tiene que haber algún método "CloseDocument", o "Close", en el componente, y, cuando no, tal vez no sea necesario sino abrir otro documento para "cargarse" el anterior... ahora, si no pudiera ser de otra forma y liberas el componente, entonces tendrás que crearlo de nuevo antes de cargar un nuevo documento, puesto que si no aparecerá el conocido "Access Violation", que, aunque no lo dices, tal vez sea el error conque topaste ahora.

¿Ya probaste algo de lo que te comentaba ahí? ;)

ilichhernandez 06-09-2006 21:32:05

no existe close, closedocument ni nada parecido..... tal vez podria ocupar el free y destruir el componente y crearlo de nuevo..... como lo crearia mediante codigo ?

acropdf1.create.algo, esta es la parte que no tengo idea....

Gracias...

dec 06-09-2006 21:40:23

Hola,

Yo probaría antes a cargar un documento luego de otro: se me hace raro que tengas que destruir el componente para cargar un nuevo documento, pero, en fin, supongo que crear el objeto tampoco supondrá ningún dilema...

Suponiendo que ocupas una variable global "acropdf1" podrías crear el objeto más o menos así:

Código Delphi [-]
acropdf1 := TAcrobat.Create;

O, si es que necesitara algún parámetro el constructor... pues fijarte en cuál o cuáles... creo que si fuera así probablemente necesitaría un "padre", lo que podría resultar en algo así:

Código Delphi [-]
acropdf1 := TAcrobat.Create(Self);

Donde "Self" se referiría al formulario en donde estás creando el objeto de marras. Fíjate también que utilizo el tipo "TAcrobat", pero, es que no recuerdo ahora mismo el tipo de ese objeto: lo averiguarás en la declaración de la variable "acropdf1", porque ahí tiene que indicarse un tipo para esa variable...

roman 06-09-2006 21:44:17

Yo acabo de hacer la prueba y puedo cargar un documento tras otro sin ningún problema.

// Saludos

ilichhernandez 06-09-2006 21:59:43

oye roman .... pero lo has echo destruyendo y creando el componente multiples veces?

roman 06-09-2006 22:01:40

Pues no, pero ese es el punto, ¿para qué quieres destruir el componente? No necesitas "cerrar" el archivo anterior, LoadFile carga uno nuevo independientemente de si ya hay otro cargado.

// Saludos

ilichhernandez 06-09-2006 22:07:52

voy a cachuriar y les cuento.... gracias.....

ilichhernandez 07-09-2006 17:59:34

con el acropdf1.loadfile me ha resultado..... gracias......

lacovera 13-06-2008 11:38:49

Hola a todos, estoy intentando hacer lo mismo desde delphi2006 y no hace nada de nada! alguien ha podido?

var
pdf:tacropdf;
begin
pdf:=tacropdf.Create(self);
pdf.LoadFile('c:\hola.pdf');
pdf.Print;


Gracias!

Ah, el archivo hola.pdf existe, jejeje

PEIIB 08-02-2017 21:08:34

Bueno, este hilo ya es muy antiguo, pero hoy lo he estado siguiendo porque yo tenía el mismo problema que planteó ilichhernandez y no se llego -entiendo- a una respuesta concluyente.

Creo que lo que pasaba realmente es que el segundo archivo no existía, o el path-name era incorrecto.
En ese caso, TacroPDF, no carga nada ni da ningún mensaje de error, de modo que aparece el primer archivo que todavía está cargado.

Ojala sirva para ayudar un poquito.

Saludos.


La franja horaria es GMT +2. Ahora son las 01:18: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