Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   Formularios MDI (http://www.forosdelweb.com/f69/formularios-mdi-354115/)

jiusad 30/11/2005 09:31

Formularios MDI
 
Estoy haciendo una aplicacion con formularios MDI que tiene un formulario principal y cuatro hijos (uno de ellos "principal"). Cargo el hijo principal y al referirme desde ese hijo a los otros no hay problema pero al intentar referirme desde un hijo no principal al hijo principal no me deja. Porque sucede esto? Hay alguna manera de poder solucionarlo?
Espero no haberlo liado y que se me entienda...:adios:
Gracias por adelantado. Sois fabulosos:aplauso:

jc_moty 30/11/2005 10:00

Bien, lo que tenes que hacer es que cada vez que llames un formulario descarga todos los demas de la memoria. Por Ejemplo, para llamar al hijo principal seria asi:
Código:

Form_hijoPrincipal.Show
Unload Form_hijo1
Unload Form_hijo2
Unload Form_hijo3

Espero te sirva :si:
Saludos :adios:

jiusad 30/11/2005 10:32

Me voy a explicar mejor porque creo que no se me entiende.
Tengo un formulario principal (formulario padre) en el que cargo un formulario hijo (Form5). En este formulario hijo hay unos botones coloreados. Si yo saco otro formulario (Form3) en el que hay un list y yo pincho en un elemento del list, se deberian encender los botones que le corresponden en el Form5 (cosa que no pasa); lo hago asi:
Form5.Command56.Picture = LoadPicture("rojo.bmp")
Haber si ahora se me comprende mejor, o me he explicado mejor:pensando:

reel 30/11/2005 11:00

Lo siento pero sigues sin explicarte...

Entedemos cual es la situación, pero cual es el error en sí? ¿Qu es lo que no has logrado hacer especificamente? ¿Recibes algun error?

Saludes :adios:

PD: Me has hecho sentir con un dectetive preguntando.

jiusad 30/11/2005 11:10

que no se iluminan los botones al pinchar en el list...
PD: Tu un detective pero yo paranoico perdido al no enterderme o no saberme explicar...

reel 30/11/2005 11:14

No me dices si recibes algún error ... bueno me voy a atrever hacer un tiro al aire porque no se realmente a donde apuntar.

Pon esto:
DoEvents

Despues de esta línea de código:
Form5.Command56.Picture = LoadPicture("rojo.bmp")

Saludes :adios:

lop7 30/11/2005 11:14

hola...

ya probaste asi;

Form5.Command56.Picture = LoadPicture("rojo.bmp")
Form5.Command56.Refresh

unload me

para que despues q asignes cierres el formulario y puedas ver los cambios en los botones del from5

saludos..
nos vmos...

jiusad 30/11/2005 11:32

El caso es que no recibo ningun error. Simplemente pinchas en un item del list y no se colorea el boton que le corresponde....
He probado como ha dicho lop7 y no me funciona...
Saludos
Gracias

reel 30/11/2005 11:38

Tenes configurado el boton con el estilo necesario?

La propiedad style del botón tiene que estar para gráfico.

Saludes :adios:

jiusad 30/11/2005 11:48

Eso ya lo tengo bien configurado.
Es deseperante, ya lo se. Ya me he dado yo de cabezazos para saber que es lo que esta fallando. Pensaba que igual podria ser por alguna propiedad especial que puedan tener los MDI (es la primera aplicacion de este tipo que programo) pero la verdad que no tengo ni idea...
Saludos

lop7 30/11/2005 12:21

pana porq no pruebas lo mismo con otro boton
pero asignale algo al caption ej:

Form5.Command60.caption= "si resive valores"
Form5.Command60.Refresh

es solo de prueba para saber si resive o no valores ok. q deberia resivir

intentalo si tomo el valor entonces se te esta escapando y no es precisamente q estes trabajando con un MDI.

saludos..
nos vmos...

jiusad 30/11/2005 12:29

No recibe valores. Que puedo hacer ahora?
Saludos

lop7 30/11/2005 12:52

mira pana lo esta asiendo bien ya lo prove y esta todo bien, tal ves te pasa que como estas poniendo una imagen en el picture del botn te falto la ruta completa me esplico

tu lo tienes asi..
Form5.Command56.Picture = LoadPicture("rojo.bmp")
y seria así...
Form5.Command56.Picture = LoadPicture("c:\imagen\rojo.bmp")
o
Form5.Command56.Picture = LoadPicture(app.path & "\rojo.bmp")

verificalo asi a ver si te silve

Saludos...
nos vmos..

jiusad 30/11/2005 13:15

He hecho un nuevo proyecto y he comprobado todo lo que me has dicho lop7 y ahi funciona todo pero en el programa original no funciona ni con lo ultimo que me has dicho... Le pinchas en el list y sigue sin hacer nada. Incluso haciendo un nuevo formulario y poniendo un boton para que aparezca en el label del formulario hijo principal algo no va... La verdad que no veo diferencias entre lo que he hecho y lo que tenia...

jiusad 30/11/2005 13:40

Si ayuda aporto este dato:
Cuando desde el formulario hijo principal se pincha en los botones sale el formulario hijo correspondiente y no hay problema. Pero cuando se intenta hacer al reves, que interactuando con un formulario hijo haya cambios en el formulario hijo principal entonces no funciona, no dando mayor sintoma que ver uno mismo que no funciona.
Espero haber aclarado algo el tema
Saludos y gracias por adelantado

jiusad 30/11/2005 23:25

Ya se lo que pasa; me carga dos veces el formulario hijo principal. Hay alguna manera de evitarlo? Lo cargo con:
Private Sub MDIForm_Load()
Dim newform As New Form5
newform.Show
End Sub

jiusad 01/12/2005 00:16

He detectado dos sitios en que puede haber problemas.
El primero es en el formulario hijo principal que hago que se ajuste arriba a la derecha y entonces me lo carga 2 veces; lo hago con Form5.Move 0,0
El segundo punto es en los formularios hijos que al pinchar en el list yo creo que me vuelven a cargar el formulario hijo principal; el codigo seria:

Private Sub List1_Click()
If List1.List(List1.ListIndex) = "Cistitis" Then
Form5.Command56.Picture = LoadPicture("rojo.bmp")
End If
End Sub
He leido algo sobre las propiedades ActiveForm y ActiveControls.Se podria solucionar con estas propiedades ?¿Como seria?

jiusad 01/12/2005 00:35

Ya se lo que pasaba. En vez de poner:no:

Private Sub MDIForm_Load()
Dim newform As New Form5
newform.Show

hay que poner:si:

Private Sub MDIForm_Load()
Dim newform As New Form5
Form5.Show

Por fin di con la solucion:aplauso: :aplauso: :aplauso:
Menos mal :stress: ya pensaba que no lo iba a descubrir nunca.
Gracias de todas formas.

David 01/12/2005 05:46

Cita:

Iniciado por jiusad
Ya se lo que pasaba. En vez de poner:no:

Private Sub MDIForm_Load()
Dim newform As New Form5
newform.Show

hay que poner:si:

Private Sub MDIForm_Load()
Dim newform As New Form5
Form5.Show

Por fin di con la solucion:aplauso: :aplauso: :aplauso:
Menos mal :stress: ya pensaba que no lo iba a descubrir nunca.
Gracias de todas formas.

Pues entonces no es necesario el:
Código:

Dim newform As New Form5

jiusad 01/12/2005 05:57

Pues es verdad; no hace falta...:-D
De todas maneras no se porque me habia obsesionado con que habia que poner todo ese mondongo... Me imagine que iban a ser tan diferentes los MDI que agarre eso de la ayuda del VB y al final es como en un SDI. Bueno, asi ya lo se para la proxima:arriba:
Muchas gracias por vuestra ayuda.


La zona horaria es GMT -6. Ahora son las 17:55.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.