Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Es posible pasar un formulario como argumento en un procedimiento y como?

Estas en el tema de Es posible pasar un formulario como argumento en un procedimiento y como? en el foro de Visual Basic clásico en Foros del Web. ESTOY USANDO VB 6 . Y TAMBIEN SENTENCIAS SQL CON DAO Y DATAS. DEBIDO A QUE TENGO ALGUNOS PROCEDIMIENTOS QUE SE ME REPITEN EN DOS ...
  #1 (permalink)  
Antiguo 06/11/2009, 16:44
 
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 14 años, 8 meses
Puntos: 0
Es posible pasar un formulario como argumento en un procedimiento y como?

ESTOY USANDO VB 6 . Y TAMBIEN SENTENCIAS SQL CON DAO Y DATAS.
DEBIDO A QUE TENGO ALGUNOS PROCEDIMIENTOS QUE SE ME REPITEN EN DOS FORMULARIOS, SE ME ESTA LLENANDO DE CODIGOS LOS DOS FORMULARIOS. ESTOS FUNCIONAN EN FORMA PARECIDA, CON EL INCOVENIENTE QUE DEBEN SER REFERIDOS A UN FORMULARIO ESPECIFICO. A CONTINUACION MENCIONO UNO DE ELLOS EL CUAL ESTA EN UN MODULO;

TENGO EL SIGUIENTE PROCEDIMIENTO EL CUAL DEBO UTILIZAR EN DOS FORMULARIOS, Y QUERIA SABER SI ES POSIBLE UTILIZARLO CON ARGUMENTO TIPO FORMULARIO:

'CODIGO PARA BORRAR REGISTROS SELECCIONADOS EN DBGRID
Public Sub BORRAREGISTROSELECC()
Dim I As Long
If DBGrid2.AllowDelete Then
Do While I < DBGrid2.SelBookmarks.Count
Data2.Recordset.Bookmark = DBGrid2.SelBookmarks(I)
Data2.Recordset.Delete
I = I + 1

Loop
End If
DBGrid2.Refresh
End Sub

SI ESTE PROCEDIMIENTO LO COLOCO EN EN EL CODIGO DEL FORMULARIO1 FUNCIONA BIEN, PERO SOLO EN EL. PERO SI LO LLAMO DESDE EL FORMULARIO2 ME EXIGE QUE TUVIERA MAS REFERENCIAS PARA QUE FUNCIONE.
POR LO CUAL LO PUSE EN UN MODULO, PERO ASI NO ME FUNCIONA EN NINGUNO DE LOS DOS FORMULARIOS.
CREO QUE LA SOLUCION ES PASAR COMO ARGUMENTO EL FORMULARIO EN QUE LO ESTE USANDO, PERO NO SE COMO APLICARLO. Y SI ES POSIBLE HACERLO.
CUALQUIER OPINION, MUCHAS GRACIAS.
  #2 (permalink)  
Antiguo 06/11/2009, 17:08
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Es posible pasar un formulario como argumento en un procedimiento y como?

Lo más facil segun lo tienes es inlcuir el form en la sub:

'CODIGO PARA BORRAR REGISTROS SELECCIONADOS EN DBGRID

'DEL FORM2 y el data tambien del form2 imagino

Public Sub BORRAREGISTROSELECC()
Dim I As Long
If Form2.DBGrid2.AllowDelete Then
Do While I < Form2.DBGrid2.SelBookmarks.Count
Form2.Data2.Recordset.Bookmark = Form2.DBGrid2.SelBookmarks(I)
Form2.Data2.Recordset.Delete
I = I + 1

Loop
End If
Form2.DBGrid2.Refresh
End Sub

Si quieres declarar un formulario o control en la sub es simple:

Sub BORRAREGISTROSELECC(DBGrid2 As DBGrid, Data2 As Data)

y la ejecutas desde el form que contiene los controles:
borraregistroselecc dbgrid2, data2
o desde otro sitio
borraregistro form2.dbgrid2, form2.data2

Como aproximadamente dice un compañero por aquí, en informática hay 1000 maneras de hacer lo mismo.

Que se de bien.
  #3 (permalink)  
Antiguo 07/11/2009, 16:49
 
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 14 años, 8 meses
Puntos: 0
Ya esta resuelto, si fue posible

UTILIZO LA COLECCION FORMS Y PARA REFERIRME A UN FORMULARIO ESPECIFICO USO SU INDICE : FORMS(0) ES EL FORM1 Y FORMS(1) ES EL FORM2.
EL PROCEDIMIENTO CON EL ARGUMENTO DEL INDICE DEL FORMULARIO (num), LO ESCRIBO EN UN MODULO Y QUEDA COMO A CONTINUACION:

'CODIGO PARA BORRAR REGISTROS SELECCIONADOS EN DBGRID
Public Sub BORRAREGISTROSELECC(num As Integer)

Dim I As Long
If Forms(num).DBGrid2.AllowDelete Then
Do While I < Forms(num).DBGrid2.SelBookmarks.Count
Forms(num).Data2.Recordset.Bookmark = Forms(num).DBGrid2.SelBookmarks(I)
Forms(num).Data2.Recordset.Delete
I = I + 1
Loop
End If
Forms(num).DBGrid2.Refresh
End Sub

ASI QUE SI APLICO EL PROCEDIMIENTO EN EL FORMULARIO 1 LO HAGO ASI:
BORRAREGISTROSELECC (0)
Y SI LO APLICO EN EL FORMULARIO 2 SE LLAMA ASI:
BORRAREGISTROSELECC (1)
ASI PODRIA UTLIZARLO EN CUALQUIER OTRO FORMULARIO SIENDO EL NUMERO QUE SEA. YA AHORRO EL ESCRIBIR CODIGO EN CADA FORMULARIO. ASI SOLO SE ESCRIBE EN EL MODULO.

GRACIAS POR LAS SUGERENCIAS, Y ESPERO QUE LE SIRVA A OTRAS PERSONAS QUE NO HALLEN UN EJEMPLO O EXPLICACION........BY
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:43.