Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Cerrar MDI Childs aleatoriamente (https://www.clubdelphi.com/foros/showthread.php?t=22096)

amadis 06-06-2005 21:46:34

Cerrar MDI Childs aleatoriamente
 
Cerrar MDI Childs aleatoriamente (segun se quiera)

Que tal amigos... nuevamente Yo, el COlonense!

esta vez tengo serios problemas tratando de cerrar una MDICHILD en delphi que no esté activa.

O bien como hago para hacer activa una ventana ya creada ! ya que de estarlo usaría ActiveMDIChild.

Otra mas. como hago para referirme a una ventana sin ser por su NUMERO ??
¿puedo saber de alguna forma si esta activo formNN ?? Sin usar variables
puestas a mano como estoy haciendo jiji y hacer lo que se me antoje con una MDIchild sin tenerla activa

Si alguien tiene algo sobre manejo de MDI's se lo agradecería.

Necesito interactuar y cambiar entre ventanas hijas , abrir, cerrar, activar una, activar otra, volver a una anterior etc.

Y me estoy volviendo loco!
Sobretodo para cerrarlas... la unica forma que me funciona es ActiveMDIChild.close

Muchas Gracias

Amadís - Colón, Entre Ríos

jachguate 07-06-2005 00:43:08

Cita:

Empezado por amadis
Que tal amigos... nuevamente Yo, el COlonense!

Pues hola, no tenia el gusto de conocerte, pero soy yo, el Guatemalteco.. :D

Cita:

Empezado por amadis
esta vez tengo serios problemas tratando de cerrar una MDICHILD en delphi que no esté activa.

:confused: específicamente, ¿que problemas?

Cita:

Empezado por amadis
O bien como hago para hacer activa una ventana ya creada ! ya que de estarlo usaría ActiveMDIChild.

Código Delphi [-]
  if Formx.State = wsMinimized Then
    Formx.State := wsNormal;
  Formx.BringToFront;

Cita:

Empezado por amadis
como hago para referirme a una ventana sin ser por su NUMERO ??

:confused: ¿por cuál número? :eek:

Cita:

Empezado por amadis
¿puedo saber de alguna forma si esta activo formNN ??

Código Delphi [-]
if FormNN.Active Then
  ShowMessage('FormNN está activo!');
Cita:

Empezado por amadis
Sin usar variables

:rolleyes: esta si no la entendí...

Cita:

Empezado por amadis
hacer lo que se me antoje con una MDIchild sin tenerla activa

Podes invocar al método hacerloquesemeantoje independientemente de que la instancia de la forma esté activa o no...
Código Delphi [-]
  Form1.HacerLoQueSeMeAntoje;

Hasta luego.

;)

pd. Si mis respuestas no son acertadas, antes de replicar te recomiendo leer el hilo de la calidad de las preguntas.

jcarlos.matrix 07-06-2005 01:08:55

haber si puedo ayudarte

1.-yo para cerrar una ventana mdi.
me voy al evento close de la forma y pongo esta linea de codigo para cerrarla "action:=cafree" y me funciona para cerrarla.

2.-para activarla pones la unidad de la forma en los uses y pones esta linea siguiente, que lo mas indicado seria crearla de esta manera
"Tform_mdiN.create(application);"

3.- para que no aparesca cuando entres en la unidad principal , vete a los menus de delphi como project->view source y borrar la liena que le corresponde a la unidad formcreate para que no la cree;

4.- ahora para cambiar datos o accesar a informacion de una mdi. lo que tienes que hacer
es para empezar sabemos que debes de mdiform y una mdichild correcto.

entonces los iguiente para accesar es .seria

(fForm_mdiformN.MDIChildren as Tform_mdichildN).label1.caption;
pero para esto deben de estar las unidades de la forma principal y de la que queeres accesar.

espero haberte ayudado en algo.
bye

jcarlos.matrix 07-06-2005 01:10:12

correcion en punto 4
la linea donde dices (form.midicount nose que as Tformmidi).label1.caption:=dato;

es asi
corecfto bye

Lepe 07-06-2005 10:49:56

A mi tambien me ha dejado un poco perplejo este hilo, ya que las preguntas son bastante escuetas.

en principio tienes la colección Forma_Mdi.MdiChildrens que puedes recorrerlo a placer y ver que ventanas estan creadas, a partir de ahí puedes hacer algo así:
Código Delphi [-]
if Forma_Mdi.MdiChildrens[i] is TfrmClientes then
begin
  Tfrmclientes(Forma_Mdi.MdiChildrens[i]).Lo que sea
end
Código Delphi [-]
function AlFrente(NombreVentana:string):Boolean;
var i:integer;
    hecho:Boolean;
beginÇ
  for i:=0 to MDI.count -1 do 
  if Tform(MDI.MdiChildren[i]).Name = NombreVentana then
  begin
   Tform(MDI.MdiChildren[i]).BringtoFront;
   result := true;
   break;
 end
 else
   result := false;

Es algo así lo que pides?

Un saludo


La franja horaria es GMT +2. Ahora son las 10:56:30.

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