![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
form.....
A ver si te sirve algo como esto.
La declaracion de tu procedure hasla en
En la form2 coloca una referencia a tu form1 en el procedimiento del boton en tu form2 has la referencia al objeto form1 que ya existe
espero te ayude en algo
__________________
tu mente es tu mas presiado tesoro, cultiva tu conocimiento |
|
#2
|
|||
|
|||
|
Hola, Voldemmor, mil gracias por tu amable respuesta.
Verás, implementando el método que muy amablemente me expones, sucede esto: "No hay parametros suficientes", según el compilador Delphi 7. Esta función, sobre crear un nuevo Tab, tiene algunas variables en el form1 que hay que declarar, para que los objetos que se crean con él, en tiempo de ejecución, lo hagan del modo correcto. De este modo, no sé, si es necesario hacer referencia también a todo esto, o definitivamente, por ahí, no está la solución. Tu que opinas? Mil gracias por tu respuesta, y un gran saludo. Julián |
|
#3
|
|||
|
|||
|
Hola.
Creo que el error salta porque, en el ejemplo de código de voldemmor, no se pone ningún parámetro dentro del paréntesis al llamar al procedimiento. Y posiblemente, en el procedimiento al que tu llamas, sí que tiene 1 ó más parámetros. Así, en lugar de escribir:
deberías escribir la lista de parámetros que le pasas al procedimiento dentro del paréntesis. Si fueran 3 valores del tipo Integer (por ejemplo: 1, 3 y 8), podría quedar así:
Espero te sirva. Ramón. |
|
#4
|
|||
|
|||
|
Hola, rrf, mil gracias por tu respuesta.
Verás, estuve intentándolo del modo que me propones, pasando los parametros a la función, pero definitivamente, al momento de la compilación, se crea una excepción. Quisiera en tiempo de ejecución, crear un nuevo tab, en un page control, en el Form1, desde el Form2. He estado tratando incluso, escribiendo todo el procedimiento, en el propio Form2, tal cual, lo hago en el Form1, pero tampoco funciona. Mil gracias por la amable ayuda. Haber de que modo se puede implementar. Un gran abrazo, y un gran saludo. |
|
#5
|
|||
|
|||
|
Hola Robin1.
A ver si esta idea te sirve. Si vas a crear el componente en el Form1, haz un procedimiento en el form1 que haga lo que quieres (por ejemplo, lo llamas "crea_Tab") y que sea llamado desde el mismo Form1; por ejemplo, al hacer click en un botón. Comprueba que funciona. Cuando ya veas que está bien y que funciona, haz la llamada a ese procedimiento desde el form2. (para ello, en el 'uses' del form2 debes incluir el Form1 y la llamada desde el form2 al procedimiento sería algo así 'form1.crea_Tab' ). un saludo. Ramón. |
|
#6
|
||||
|
||||
|
Disculpas
Ante todo disculpas por no responder antes, estube algo ocupadito.
.Bueno la idea de rrt es la misma que se la plantee con anterioridad. Que te parece si vas probando linea por linea tu codig. Por ejemplo primero crea un procedure en la parte public de tu form1, llamalo desde tu form2. Primero solo vas ha crear un mensaje de tu applicacion Código:
showmmessage('funciona');
Si todo va bien trata con iniciar escribiendo parte por parte el codigo que usas a ver donde te da el error. Con todo por favor postea el codigo que usas a ver si te podemos ayudar un poco mas. Nuevamente diosculpas por no responder antes
__________________
tu mente es tu mas presiado tesoro, cultiva tu conocimiento |
|
#7
|
||||
|
||||
|
Disculpas
Ante todo disculpas por no responder antes, estube algo ocupadito.
.Bueno la idea de rrf es la misma que se la plantee con anterioridad. Que te parece si vas probando linea por linea tu codig. Por ejemplo primero crea un procedure en la parte public de tu form1, llamalo desde tu form2. Primero solo vas ha crear un mensaje de tu applicacion Código:
showmmessage('funciona');
Si todo va bien trata con iniciar escribiendo parte por parte el codigo que usas a ver donde te da el error. Con todo por favor postea el codigo que usas a ver si te podemos ayudar un poco mas. Nuevamente diosculpas por no responder antes
__________________
tu mente es tu mas presiado tesoro, cultiva tu conocimiento Última edición por voldemmor fecha: 22-12-2009 a las 00:37:38. Razón: error tipeo |
|
#8
|
|||
|
|||
|
Hola, y mil gracias, tanto Voldemmor, como rrf, por responder.
En verdad que esta vez si que estoy perdido con esto. Explicaré inicialmente, qué es lo que pretendo, y como va la cosa. La aplicación en cuestión, es un navegador de Internet personalizado, que se basa en el motor de renderizado Gecko de Mozilla Firefox. Entonces, el Form1, es en donde se encuentra toda la interfaz (lastima no poder mostrar fotos) de usuario, es decir, el navegador, la barra de navegación, los tabs, todos los controles, etc. El Form2, es un Form estilo "About". Qué sucede entonces: En el form1 hay por ejemplo, un menú en la parte superior contextual, que tiene esta opción: "New Tab". De este modo, al dar click sobre este comando, se desencadena el siguiente evento: Código:
procedure TForm1.NewTab1Click(Sender: TObject);
var
NewTab: TTabSheet;
NewBrowser: TGeckoBrowser;
PageControl1: TPageControl; //Solo en el procedimiento Reset, de momento es utilizada esta variable.
begin
//Todo procedimiento que incluya nuevos elementos, y carga de Internet, debe primero pasar por una verificación del PingBrowser.
PingBrowser.Navigate('Pagina de Google');
NewTab := TTabSheet.Create(Self); //Se crea la nueva pestaña
NewTab.Caption := ' Tab ' + IntToStr(PageControl1.PageCount + 1); //Consecutivo de Nombres para cada pestaña
NewTab.PageControl := PageControl1; //El contenedor de la pestaña sera un PageControl
NewBrowser := TGeckoBrowser.Create(Self);
NewBrowser.Parent := NewTab;
NewBrowser.Align:= alClient;
PageControl1.ActivePage := NewTab; //Se activa la pestaña. Esta parte es la clave, para que Gecko se cargue en la pestaña a la que debe ir. Sin esto, nunca funcionará nada.
if Pos('Connected', ConnectionStatus.Text) > 0 then
NewBrowser.LoadURI('La pagina a la que Gecko debe dirigirse')
else
begin
TOleControl(ErrorBrowser).Visible := True;
TOleControl(ErrorBrowser).Align:= alClient;
ErrorBrowser.Navigate('file:///' + ExtractFilePath(ParamStr(0)) + 'res\html\war\ConnectionFail.html');
end;
end;
Qué sucede entonces con el Form2? Bien, en el Form2 tengo un Label que dice: "Preguntas Frecuentes", de este modo, si el usuario Clickea este Label, el navegador debe redirigir abriendo un nuevo Tab en el form1, hacia la página Web, en donde está la sección de preguntas frecuentes. Básicamente esa es la cuestión, ya viéndolo un poco mas aterrizado en la práctica. Que observo: Cualquier procedimiento que esté tanto en el form1 o en el Form2, si lo paso a la sección "Public" de inmediato el compilador genera una excepción (Uso Delphi 7), y el programa no se deja compilar. De este modo, veo muy complicado poder hacer este llamado desde el Form2, a ese procedimiento que está en el Form1. ¿Como le podría hacer? Digamos, ¿es posible entonces, por ejemplo, no generar ese llamado, sino más bien, desde el Form2 crear un procedimiento idéntico para el Form1? Nuevamente, mil gracias, en verdad, por esta magnifica ayuda que he recibido. Ahí poco a poco, con esta valiosa ayuda, vamos viendo las opciones, para solucionar este tema, haber si puedo ya lanzar el programa :-), jajajajaja!!! Un gran abrazo, señores. Julián Franco |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| llamada a método de Form desde otros Forms | Bauhaus1975 | Varios | 4 | 19-12-2008 23:07:42 |
| llamar al evento click de un boton q se encuentra en un form desde otro form | TURBOIGOR | OOP | 6 | 02-12-2008 15:50:16 |
| Como llamar form desde otros form y regresar a la linea que se estaba ejecutando | Willy Rodrigo | C++ Builder | 1 | 03-08-2007 20:36:23 |
| llamar a procedimientos desde otro form | David | OOP | 8 | 06-09-2006 19:28:12 |
| Llamar una form desde otra form!!! | niogon | Varios | 2 | 30-09-2004 17:09:17 |
|