Como se puede abrir mas de una ves una misma ventana?

Iniciado por Xephiro, 23 Abril 2006, 21:23 PM

0 Miembros y 2 Visitantes están viendo este tema.

Xephiro

 ::) Buenas... bueno estoy trabajando en un chat, multi usuarios y quiero hacer que al clickear sobre un usuario me habra una ventana privada, lo que quiero es que sea una sola ventana que se habra varias veces, para poder tener la cantidad de privados que uno quiera...

es posible de hacer eso? :-X

Red Mx

#1
Creo que no se puede
Desarrollar Malware Es Causa De Cancer...

Xephiro

 ;D mmm pero a mi me parece haber visto alguna vez un programa de cuestionario que lo hacia ... el problema que ya no lo encuentro para ver si usaba miles de form o simplemente uno solo que se habria depende lo que querias ...

Lo que quiero es algo como lo de MSN ... cuando uno habre una ventana para hablar con otro ... y puedes tener 1000 de ella si quieres .. y nuncaterminas de terner ventanas...

Krnl64

#3
Citar
Creo que no se puede

Si se puede. Lo que tienes que hacer es 1 matriz de ventanas y en ellas el codigo necesario para que mande la conversacion a ese contacto y no a los demas

Este code te dara 1 idea de como se hace:


Private Sub Command1_Click()
Dim x() As Form1    ' Declaro la variable x como formulario o lo que quiera
Dim z As Integer    ' declaro la variable z como numero entero

ReDim Preserve x(7)     ' limite de la matriz
For z = 1 To 7          ' nº de ventanas a crear
Set x(z) = New Form1
x(z).Show
Next z
End Sub



Salu2

Xephiro

oo muchas gracias pero no sabes alguna forma que no me tire las X cantidad de ventanas de una misma vez ¿? ...

Xephiro

 :D eee logre hacer que se me abran de a una, el problema ahora es si se puede evitar que se dupliquen, osea que el X(1) por ejemplo solo exista una vez y no se pueda repetir.... porque tengo un List donde al hacer click me hace una ventana, pero quiero que me haga solo 1 ventana por Item... pero si sigo apretando el mismo item se me hacen mas y mas ventanas.... :-(

NYlOn

Tenes varias formas de hacerlo, una posible seria que cada vez que se abra un item, cambie el titulo de la ventana nueva por el nick (ip o lo que sea por lo que estes identificando) entonces, antes de crear una ventana nueva revisas toda la matriz de ventanas y te fijas si ya existe.
Algo asi:

    For i = 0 To Ventana.Count - 1
        If Ventana(i).Caption = "USUARIO" Then
            Ventana(i).Show
        Else
            'Abrir una nueva ventana
        End If
    Next i



Saludos.-

Xephiro

#7
Mmm Haciendo un analisis de mi Ultima pregunta ...

Voy a juntar todo para ver si queda algo un poco mas claro ..

-------------------------------------------

Yo estoy usando el siguiente codigo que puso Krnl64.. para poder abrir una ventana privada para los usuarios de mi Chat...

Dim x() As Form2
Dim z As Integer    ' declaro la variable z como numero entero
If Form1.List1.ListCount <> "-1" Then
z = Form1.List1.ListIndex ' nº de ventanas a crear
ReDim Preserve X(Form1.List1.ListCount)
z = Form1.List1.ListIndex
Set X(z) = New Form2
X(z).Show
X(z).Caption = Form1.List1
End If


Bueno lo que quiero esque solo se pueda abrir un privado por usuario que este en la lista ... (list1)...

Y encontre el siguiente codigo, que es un Public.. pero no se como se usa ...

Public Function IsLoadForm(ByVal FormCaption As String, Optional Active As Variant) As Boolean
Dim rtn As Integer, i As Integer
rtn = False
Name = LCase(FormCaption)
Do Until i > Forms.Count - 1 Or rtn
If LCase(Forms(i).Caption) = FormCaption Then rtn = True
    i = i + 1
    Loop
  If rtn Then
    If Not IsMissing(Active) Then
        If Active Then
            Forms(i - 1).WindowState = vbNormal
        End If
    End If
End If
IsLoadForm = rtn
End Function


Se supone que es para reconocer si una ventana esta activa osea un Form .. el otro dilema que entro es que cuando se crean las ventanas no son de nombre Form.. sino x(el numero de la lista de usuario) eso es lo que no se si se cambia o que se hace para poder detectar una ventana X   ;D espero que alguien me pueda resolver esta duda .... Gracias...

Una cosa mas ... cuando le inserto al primero de los codigo un If antes del Set me dice que no se puede porque se hace una interferencia con el Set...? Hay alguna manera de hacer ordenes como las del If pero sin usar el If .? .. o reemplazar ese Set por otra cosa... que no me tire problemas ¡?

Kizar

Te he hecho este code que creo que hace exactamente lo que dices.
Necesitas crear dos formularios (el principal 'Form1' y el de conversacion 'Form2')
Y un listbox llamado 'List1' .


Dim Vent() As Form2
Dim Num As Integer
Dim I As Integer

Private Sub Form_Load()
Num = -1
List1.AddItem "K1Z4R"
List1.AddItem "Paco"
List1.AddItem "Lucas"
List1.AddItem "Mario"
End Sub

Private Sub List1_DblClick()
Dim Nick As String
Nick = List1.List(List1.ListIndex)
For I = 0 To Num
   If Vent(I).Caption = Nick Then
     Vent(I).SetFocus
     Exit Sub
   End If
Next I
Num = Num + 1
ReDim Preserve Vent(Num)
Set Vent(Num) = New Form2
Vent(Num).Caption = Nick
Vent(Num).Show
Vent(Num).SetFocus
End Sub


Salu2

Xephiro

 :D :D :D :D :D :D
Muchas Gracias ... me sirbio demasiado ese codigo aunque le modifique muy poco para que me quedara a mi gusto .. te pasaste ... :rolleyes: :rolleyes: :rolleyes: