Proyectos en visual basic 6

A ver sacame de una duda y si se puede que me digas como hacerle
Mira yo trabajo en el sector educativo aquí en México, y estoy realizando un pequeño sistema de estadística educativa, en visual basic 6 no soy experto en ello, estoy dando mis primeros pasos, acá en mi país en un año existen dos ciclos escolares uno de inicio de cursos y el otro de fin de cursos, ahora bien ya tengo listo los dos pero hice dos proyectos diferentes para cada uno, quiero saber si puedo introducir uno en el otro o sea el proyecto de inicio de cursos en el de fin de cursos cada uno tiene diferentes formularios, código y presentación pero deseo que desde un mismo formulario de presentación el usuario habrá el que desee por medio de un botón. E inmediatamente después aparezca un formulario MDI.
Se que por proyecto solo se puede tener un formulario MDI es por eso que hice dos proyectos.
Respuesta
1
Siento tardar con tu pregunta, pero es posible hacer lo que dices de múltiples maneras.
Por un lado, puedes generar un MDI e incluir los childs en DLLs. Puedes generar el MDI por código, en función de lo que quieras mostrar, el MDI se cargue con unos datos u otros.
De hecho, esta última forma se aproxima mucho a lo que a mi me gusta. Si defines el MDI sin menús, y los añades en ejecución, no necesitas dos proyectos.
Ejemplo :
' Esta variable indica que ciclo estoy
Dim blnCicloInicioCurso as boolean
' Le doy valor desde fuera con esta funcion
Public sub PonerCicloMDI(Inicio as boolean)
blnCicloInicioCurso=Inicio
end sub
' Asignado el valor al ciclo, al cargar el MDI cargo los menus y el Caption :
Public Sub CargarMDI()
If blnCicloInicioCurso Then
Cargo MEnuS1
Else
Cargo Menus2
End If
End Sub
' Para generar los Menús en tiempo de ejecucion necesitaras esto :
Public Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
Public Declare Function CreatePopupMenu Lib "user32" () As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Public Const MF_BYPOSITION = &H400&
Public Const MF_POPUP = &H10&
Public Const MF_STRING = &H0&
Public Const GWL_WNDPROC = (-4)
Public Const WM_COMMAND = &H111
Public Const WM_CLOSE = &H10
''Variables to store our dynamic menu's item IDs
Public gDynSubMenu1 As Long
Public gDynSubMenu2 As Long
Public gDynSubMenu3 As Long
Public gDynSubMenu4 As Long
Public gDynSubMenu5 As Long
''Variable to hold the address of the old window procedure
Public gOldProc As Long
Public Function MenuProc(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case wMsg&
Case WM_CLOSE:
''User has closed the window, so we should stop
''subclassing immediately! We do this by handing
''back the original window procedure.
Call SetWindowLong(hwnd&, GWL_WNDPROC, gOldProc&)
Case WM_COMMAND:
''WM_COMMAND is sent to the window
''whenever someone clicks a menu.
''The menu's item ID is stored in wParam.
Select Case wParam&
Case gDynSubMenu1&
Call MsgBox("You clicked Dynamic Sub Menu 1!", vbExclamation)
Case gDynSubMenu2&
Call MsgBox("You clicked Dynamic Sub Menu 2!", vbExclamation)
Case gDynSubMenu3&
Call MsgBox("You clicked Dynamic Sub Menu 3!", vbExclamation)
Case gDynSubMenu4&
Call MsgBox("You clicked Dynamic Sub Menu 4!", vbExclamation)
Case gDynSubMenu5&
Call MsgBox("You clicked Dynamic Sub Menu 5!", vbExclamation)
End Select
End Select
''Call original window procedure for default processing.
MenuProc = CallWindowProc(gOldProc&, hwnd&, wMsg&, wParam&, lParam&)
End Function
Y por último, el MDI deberias crearlo de este modo :
Dim Ventana as MDIForm1
Set Ventana = new MDIForm1
Ventana. PonerCicloMDI(True)
Ventana. CargarMDI
Ventana.show

1 respuesta más de otro experto

Respuesta
1
No te preocupes... de alguna manera tenemos que aprender.
Los Formularios MDI son Únicos por proyectos... O sea... no puede existir dos formularios MDI en un solo proyecto... Intenta insertar un MDI en un proyecto que ya lo tenga y veras de que hablo.
La idea es:
Creas un nuevo Proyecto... Agregas los formularios de los otros dos proyectos, al igual que cualquier otro archivo de ese proyecto (módulos, diseñadores, etc), a excepecion de los formularios MDI.
Esto lo haces en Agregar Formulario y en Existente... buscas el nombre del formulario(s) del otro proyecto.
Ahora bien...
Como programas el MDI... depende de que es lo que va a hacer... Puedes crear menús... para accesar a las funciones o formularios que agregaste. Eso lo haces con el editor de menús en las barras de herramientas.
Gracias por tu paciencia excelente respuesta
Si los puedes juntar los Dos.
Mira... solo tendrías que Hacer un Nuevo Proyecto... y agregar un Formulario MDI... el cual va a contener ambos proyectos...
Y en el Menu Archivo le das Agregar Proyecto... y agregas los dos proyectos a este nuevo... Por supuesto esta que tendrás que programar el nuevo MDI... y quitar los MDI que contienen ambos proyectos.
Para poder utilizar los Forms de los proyectos.
Cualquier cosa por aquí andamos...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas