![]() |
Multi-navegador
Hola, tengo una pequeña duda... y estaría muy agradecido si alguien pudiera ayudarme.
Estoy desarrollando un multi-navegador y para ello necesito crear dinámicamente cada ventana de navegación. A su vez por cada ventana creo una pestaña (TTabSheet) de un TPageControl. La ventana de navegación debe constar de un TWebBrowser y un TStatusBar. Para facilitar las cosas diseñé un Frame que hace de ventana de navegación. En dicho frame sólo se encuentra un solo evento: Es decir que sólamente lo que se hace es mostrar en la StatusBar el texto cambiante cuando se navega. La ventana principal consta de los botones de navegación un PageControl y un ComboBox en donde se visualiza la dirección. El problema es que el código que yo ingresé no me deja insertar mas de una pestaña con su correspondiente ventana de navegación, apareciendome un mensaje de error diciendo que ya existe un objeto llamado TFrame2. Adjunto un código de prueba: ¿Alguien sabe como puedo solucionar este problema? Desde ya muchas gracias... |
Hola Delphius.
En primer lugar, quiero darte la bienvenida a los foros del clubdelphi. Te recomiendo la lectura de la Guia de Estilo, que contiene las reglas de convivencia en este lugar. Te recomiendo el uso también de las etiquetas [ delphi ], [ sql ], [ php ] y [ code ] (segun corresponda) para publicar trozos de código, puesto que de esta manera se muestran correctamente indentados y con la sintaxis resaltada. Al inicio de este foro hay un mensaje que explica su uso. En este caso, publico los trozos de código de tu mensaje original de esta manera, para que sean de fácil lectura para quien se interese en tu hilo.
Por último, y esto a título personal, me parece que no es suficiente con el código publicado. Es importante que transcribas el mensaje de error completo, así como la clase de la excepción involucrada para dar una idea de por donde va el problema. Con respecto a esto te recomiendo la lectura del hilo de la calidad de las preguntas Hasta luego. ;) |
Mensaje de error
hola,
Gracias por el consejo... la verdad es que como estoy fuera de casa (en vacaciones)... y no tengo el equipo adecuado para probrar el tipo de error producido... no lo he podido transcribir... lo que si me acuerdo es que decia en una parte: que el objeto Tframe2 ya existe... Se que los programadores no tienen tiempo que perder... pero si alguien tiene el tiempo como para poder ver el mensaje de error correspondiente... estaría bien que lo copie en el foro... Saludos, espero que haya una solución |
Mensaje de error completo
Buenas,
Como ya volví de las vacaciones, (y no las pasé tan bien).. tuve un tiempito para ver el mensaje de error... y el mensaje es el siguiente: Proyect Proyect1.exe raised exception class EComponentError with message 'A component named Frame2 already exists'. Process stoped. Use stop or Run to continue. Y cuando presiono el OK me marca el error en la línea:
Al volver presionar Run, aparece un cuadro de díalogo con el siguiente mensaje: A component named Frame2 already exists Al dar Aceptar, me crea la solapa pero no asi el frame en su interior. Me pregunto: ¿Existe otra manera de crear varias ventanas navegadoras con solapas, algo como el Crazy Browser (a lo mejor alguien usa dicho programa) ?} Mi objetivo es programar un programa navegador que sea capaz de mantener en su interior varias ventanas en simultáneo de módo que resulte más cómodo tener una sola aplicación en la barra (ya que resulta tedioso y horrible tener muchas ventanas de IE abiertas). Ha.. me preguntaba si hay alguna manera de poder detectar la URL de la orden de "Abrir en una nueva ventana" para que no me abra dicho vínculo en una ventana IE sino en una nueva solapa. Desde ya muchas gracias... |
Yo en tu lugar me instalaría Mozilla Firefox..., que tiene navegación por pestañas, y muchas otras gracias, sin todos los errores del IE.
Hasta luego. :D |
Creo que el problema lo tienes en el constructor del objeto. Prueba pasandole un parametro self (o el mainform de la aplicacion) al constructor del nuevo frame, a ver que dice.
|
Respuesta a Hector
Disculpa Hector, no quiero parecer un tonto... pero... no se si entendí bien lo que me dijiste: ¿ dices que pase dentro del Create() el parametro Self ?.. lo he intentado... y surje el mismo error descripto. En cuanto a lo que dices al MainForm... no me quedo claro... ¿Podrías ser más específico? He probado varias combinaciones con el Self y ninguna funcionó...:(
|
Supongo que dentro del owner solamente podrá haber un objeto con el nombre Frame2. Podes hacer que la propia pestaña (TTabSheet) sea el owner, pasandolo como parámetro al constructor, o bien generar de alguna manera un nombre único para cada frame.
Esto último lo podes conseguir con un simple contador... Eso si, me parece que Frame2 en ningún caso (aún cuando esté creado) debiera ser el owner de otras instancias de la misma clase... salvo que sepas lo que estas haciendo, claro. hasta luego. ;) |
En eso estuve pensando...
En respuesta a jachguate:
Estuve pensando en esa posibilidad... además se me ocurrió en poner una cantidad de pestañas e ir "mostrándolas" a medida que sea necesario. El problema de esto último es que hará más lento la carga del programa y que cuando le pongo False a la propiedad Visible de las pestañas... siguen víendose, no me explico a que se debe esto... ¿Realmente se puede ocultar las pestañas? me pregunto... |
Valete de la propiedad TabVisible.
La idea de tenerlas pre-creadas no me gusta mucho... pues no solo hace innecesariamente pesado el programa, sino impone un límite que un usuario como yo, te aseguro, querria rebasar... :D Hasta luego ;) |
Ya lo logre!
Buenas, saludos a todos!
Tengo buenas nuevas... si constante insistencia en no querer llegar a la idea de "pre-crear" pestañas me ha llevado a la locura... pero hay luz al final del túnel. El error que tanto dolores de cabezas me ha traído por fin a desaparecido con la siguiente sentencia:
Cuando termine el sistema lo colocaré en el foro.. por si alguien está interesado... Ahora si... no se si habrir un hilo nuevo o no porque me surgió una duda: ¿Es posible detectar la URL destino cuando alguien da la orden de "abrir en una ventana nueva" ?... lo que quiero hacer es crear una pestaña navegadora con dicha URL en ves de que abra el vínculo en una ventana IE... Gracias, por su ayuda... |
La franja horaria es GMT +2. Ahora son las 10:16:45. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi