PDA

Ver la Versión Completa : Problema la crear un nuevo Form


Pally
23-07-2003, 14:27:52
Hola a todos. Tengo una duda, cuando creo un nuevo form no me sale los objetos que contiene(un webbrowser). Solo me sale el form sin nada. Lo que quiero es crear el form con webbrowser y hacer que navege hacia una dirección. gracias a todos

Bacterion
23-07-2003, 14:46:24
En principio suena a que no estás creando un form del tipo que toca... sino que creas un TForm sin más.
¿Por qué no pons un ejemplo de como lo haces?

Pally
23-07-2003, 16:37:44
Lo hago así:

Pagina:= TPagina.Create(self);
Pagina.BorderStyle:= bsToolWinSize;
Pagina.show;

Ahora lo que quiero es cargar el WebBrowser que esta en el form pagina

hice esto, pero no funciona:

pagina.w.create(self);
pagina.w.show;

marcoszorrilla
23-07-2003, 16:48:10
Incluye por ejemplo en el evento OnCreate de tu form, a donde tiene que ir:

webbrowser1.Navigate('http://www.yahoo.fr');



Un Saludo.

jachguate
23-07-2003, 16:57:37
si w es ya un WebBrowser, la llamada a w.create está de mas.

Hasta luego.

Pally
23-07-2003, 18:11:03
¿Por que sobra w.create?. No lo entiendo. Mi problema es que el webbrowser no sale en form. No se por que?

jachguate
23-07-2003, 18:45:48
si has puesto un WebBrowser sobre tu form en tiempo de diseño, y le has llamado w, cuando creas una instancia de ese form se creará también w.

Por eso sobra la llamada a w.Create, y no solo sobra, sino convierte a tu aplicación en un Hoyo Negro de recursos.

Además, si lo creas por código y el WebBrowser deriva de TControl (cosa que no se), lo que te falta es asignarle el parent.

Digamos



w := TWinControl.Create(Forma1);
w.Parent := Forma1;



Hasta luego.

;)

Pally
23-07-2003, 19:15:55
Gracias por el codigo, pero no me lee el parametro "formal".Que significa?

jachguate
23-07-2003, 19:17:54
Es una suposición.

Veo que debieras utilizar pagina.

Hasta luego.

;)

Pally
23-07-2003, 19:28:47
Utilizo delphi 7.0, pero me dice con el parent el siguiente error en el editor de codigo: (Cannot assign to read-only propertory). Y con la otra linea salta un error de compilación el tipico: (No se puede compilar unit1....). Gracias por vuestro tiempo

jachguate
23-07-2003, 19:35:42
Te dije que nunca he trabajado con TWebBrowser?

Creo que debes buscar un poco en la ayuda también. Si te sirve, mirá si tiene un constructor Llamado CreateParented o alguna otra forma de asignar el parent.

Hasta luego.

;)

__marcsc
23-07-2003, 19:51:23
Hola,

lo que te dice de que no puede asignar el parent es porqué el control TWebBrowser tiene una propiedad Parent que tiene un significado diferente.

Para poder asignar la propiedad Parent de toda la vida necesitas hacer un cast.



TWinControl(MiWebBrowser).Parent:= Objeto;



Esto debería funcionar.

Saludos.

Pally
24-07-2003, 14:53:19
Lo que hago es lo siguiente:

procedure Tpagina.WNewWindow2(Sender: TObject; var ppDisp: IDispatch;
var Cancel: WordBool);
begin
If (publicidad = True) then
Cancel:= true;
Pb.EstPublicidad.Caption:= 'Publicidad desactivada, activela con el botón' ;
NuevaVentana:= True;

If (publicidad = false) then
Cancel:= false;
Pb.EstPublicidad.Caption:= 'Publicidad activada, desactivela con el botón';


end;

procedure Tpagina.WBeforeNavigate2(Sender: TObject; const pDisp: IDispatch;
var URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
var Cancel: WordBool);
begin
PubDireccion:= URL;

If (NuevaVentana = True) Then
Begin
{Parametros Pagina Nueva}
Pagina:= TPagina.CreateNew(self);
Pagina.BorderStyle:= bsSizeToolWin;

Pagina.Show;
Pagina.W.Show;
{Hasta aqui funciona, Ahora con el webbrowser}
TWincontrol(w).Create(pagina);
TWinControl(w).Parent:= pagina;






end;
end;

procedure Tpagina.FormCreate(Sender: TObject);
begin
If (NuevaVentana = true) Then
W.Navigate(PubDireccion);
end;


Este el codigo que tengo escrito. pero me sigue igual he seguido vuestros consejos pero sigue igual.No se que puedo hacer

Gracias por vuestro y por ser tan pesado, es que estoy tan cerca

P.D:

Lo que quiero es que mi aplicación habra las ventanas de publicidad que abre en el internet explorer, que me las habra en la ventana de navegador que tengo en mi aplicación

jachguate
26-07-2003, 00:24:32
Veo que aún llamas a create?

Porque?

Pally
26-07-2003, 20:03:40
entonces como creo el nuevo form?

si no es con el metodo create, con que lo puedo crear?

siento no contestarte antes pero estaba trabajando

jachguate
28-07-2003, 04:09:28
Me contestaste con otra pregunta. Creo que te hará bien profundizar un poco en la programación orientada a objetos y específicamente en el punto de vista de Object Pascal.

Create regularmente se llama directamente con la clase y se asigna a una variable o a un miembro de otra clase. Me parece que vos lo llamás directamente sobre un miembro que seguramente ya está creado. Es mi duda. Quien deberia saber que quiere hacer y cual es la idea sobre la que lo está haciendo sos vos.

Hasta luego,

;)

German C. C.
29-07-2003, 14:03:14
Si el form lo tienes creado en tiempo de diseño, con el webbrowser incluido, y no es "Auto-Create" (es decir no esta incluido en los forms "Auto-Create" de Project/Options/Forms), y está incluido en el uses del form principal, puedes crearlo desde el form principal en tiempo de ejecución y pasar el control hacia él asi:

Application.CreateForm(tMiForm, MiForm);
MiForm.Show;

Por ultimo, puedes eliminárlo de memoria cuando lo cierres añadiendo al evento OnClose:

procedure tMiForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;

De esa manera puedes abrirlo y cerrarlo las veces que haga falta, ocupando memoria solo en el momento que esté en pantalla.

Salu2.