FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Acerca MDI
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Acerca MDI
Posted: Wed May 02, 2007 09:23 PM

Hola a todos

Necesito hacer algunas cosillas en MDI, alguno de uds tendra algo de informacion, manuales, ejemplos que quieran compartir ?

He checado los archivos en SAMPLES y uno que otro archivo que he encontrado, pero me gustaria tener un poquitin mas. :wink:

Gracias anticipadas

Saludos

FWH 10.6 + xHarbour + Borland 582
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Acerca MDI
Posted: Thu May 03, 2007 09:54 AM

Raymundo,

Explícanos un poco lo que quieres hacer y asi podremos orientarte de como implementarlo, gracias

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Acerca MDI
Posted: Thu May 03, 2007 12:28 PM
Raymundo
A mi me va bien así:
1º Declaro como locales:
  local hdc :=CreateDc("DISPLAY","","")
  local nHor:=GetDeviceCaps(hdc,8)
  local nVer:=GetDeviceCaps(hdc,10)

2º Declaro la Ventana MDICHILD así:
  DEFINE WINDOW oDlg MDICHILD ;
	OF Publicas:oWPpal;
	FROM 30+(len(Publicas:oWPpal:oWndclient:aWnd)*15),30+(len(Publicas:oWPpal:oWndclient:aWnd)*15);
	TO nver-160+(len(Publicas:oWPpal:oWndclient:aWnd)*15),nHor-30+(len(Publicas:oWPpal:oWndclient:aWnd)*15);
	COLOR CLR_BLACK,CLR_WHITE;
        PIXEL

3º Para activarla lo hago así, teniendo en cuenta cerrar los alias mediante el Valid(), y si hemos utilizado un listbox, ése area lo cierro con él:
            ACTIVATE WINDOW oDlg        ;
                 ON INIT  oLbx:SetFocus();
                 ON PAINT ( oLbx:Refresh(),;
                            oLbx:nWidth:=oDlg:nWidth-10   ,;
                            oLbx:nHeight:=oDlg:nHeight-82 ,;
                            oTab:nWidth:=oDlg:nWidth-10   ,;
                            oTab:nTop:=oDlg:nHeight-52 )  ;
		 MAXIMIZED;
                 VALID ((aAlias[21])->  ( dbClosearea() ),(aAlias[26])->( dbClosearea() ),;
		        (aAlias[23])->( dbCloseArea() ),(aAlias[29])-> ( dbCloseArea() ),;
			(aAlias[2])-> ( dbCloseArea() ),oLbx:lCloseArea(),.t. )

Luego ya en la operativa para comprobar si una ventana está abierta hago:
   if AbiertaVentana( cTitulo )
   return NIL
   endif

y la funcion es:
FUNCTION AbiertaVentana ( cTitulo )
***********************************
 local lAbierta:=.f.
 local i

  if len( Publicas:oWPpal:OwndClient:aWnd ) <> 0
    for i = 1 to len( Publicas:oWPpal:oWndClient:aWnd )
      if Publicas:oWPpal:OwndClient:aWnd[i]:ctitle = cTitulo
        Publicas:oWPpal:OwndClient:aWnd[i]:normal()
        lAbierta:=.t.
      endif
    next
  endif

 return lAbierta

Y tienes que tener en cuenta que si abres varias ventanas las bases de datos tienen que tener un alias distinto cada vez que abras una nueva.
Yo lo hago así:
Function CargaAlias
*******************

return { ;
         cGetNewAlias( "ARTICULO" ),;   // 1
         cGetNewAlias( "MUNICI" )  ,;   // 2
         cGetNewAlias( "PROVIN" )  ,;   // 3
         cGetNewAlias( "PROPIE" )  ,;   // 4
	 cGetNewAlias( "SEAT1"  )  ,;	// 5
         cGetNewAlias( "RAPPEL" )  ,;	// 6
         cGetNewAlias( "EQUIPO" )  ,;   // 7
         cGetNewAlias( "REFEREN" ) ,;   // 8
	 cGetNewAlias( "MATERIAL" ),;	// 9
         cGetNewAlias( "VEHICULO" ),;	// 10
	 cGetNewAlias( "TIPOS" )   ,;	// 11
	 cGetNewAlias( "CANON" )   ,;	// 12
	 cGetNewAlias( "TEXTOS" )  ,;	// 13
	 cGetNewAlias( "IMAGEN" )  ,;	// 14
				   ,;	// 15
				   ,;	// 16
				   ,;	// 17
	 cGetNewAlias( "PARTE" )   ,;	// 18
	 cGetNewAlias( "FIESTAS" ) ,;	// 19
	 cGetNewAlias( "VACAS" )   ,;	// 20
	 cGetNewAlias( "PROVE" )   ,;   // 21
	 cGetNewAlias( "FACTURA" ) ,;   // 22
	 cGetNewAlias( "ALMACEN" ) ,;   // 23
	 cGetNewAlias( "ALBARAN" ) ,;   // 24
	 cGetNewAlias( "EXTRAS" )  ,;   // 25
	 cGetNewAlias( "CONDUC" )  ,;   // 26
	 cGetNewAlias( "GASTOS" )  ,;   // 27
	 cGetNewAlias( "REEMBOL" ) ,;   // 28
         cGetNewAlias( "RUTA" )    ,;   // 29
         cGetNewAlias( "AVISOS" )  ,;   // 30
         cGetNewAlias( "NALBARAN" ) ;   // 31
	}

function cGetNewAlias( cAlias ) 
*******************************
local cNewAlias, nArea := 1

      if Select( cAlias ) != 0
        while Select( cNewAlias := ( cAlias + ;
              StrZero( nArea++, 2 ) ) ) != 0
        end
      else
        cNewAlias = cAlias
      endif

A mi me va bien de momento así
No se si ésto es lo que pedías, y perdona que la indentación sea un churro, pero en mi procesador de textos me sale bien.

Saludos

Jose Luis
--------------------------

Saludos



Jose Luis
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Acerca MDI
Posted: Thu May 03, 2007 01:57 PM

Hola Jose Luis :
Muchas gracias por compartir tu metodo MDI, empezare a hacer pruebas sobre el.

Hola Antonio :
Pasa lo siguiente, tengo una aplicacion practicamente terminada y debido a algunas sugerencias tanto de los clientes como propias, he determinado que tengo que convertirla a MDI.

Asi que, esa es la situacion tengo que ver antes de meterle mano a las modificaciones, todo lo que tengo que considerar que y que no debo cambiar, etc.

Saludos

FWH 10.6 + xHarbour + Borland 582
Posts: 270
Joined: Fri Nov 11, 2005 07:39 PM
Acerca MDI
Posted: Thu May 03, 2007 05:09 PM

Hola Raymundo:

Adjunto te dejo unos manuales de MDI al 100% que nos pasaron en un
curso de Argentina, del grupo puertosur.

Lo hicieron Eduardo Rizzolo y Victor Tomas.

Espero que te sirvan son muy buenos.

Pueden bajarlos de aqui.

http://rapidshare.com/files/29290837/Md ... _.rar.html

Saludos,

Juan
==> Pasando a FWH16.04 + Harbour32 + BCC70 + PellesC
=> Abandonando FWH 13.7 + xHarbour + BCC582
http://www.mitaller.cl
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Acerca MDI
Posted: Thu May 03, 2007 06:44 PM

Muchas gracias Juan

Les estare dando su buena checada !!

Saludos

FWH 10.6 + xHarbour + Borland 582
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Acerca MDI
Posted: Thu May 03, 2007 11:58 PM
JoseLuis wrote:
3º Para activarla lo hago así, teniendo en cuenta cerrar los alias mediante el Valid(), y si hemos utilizado un listbox, ése area lo cierro con él:
            ACTIVATE WINDOW oDlg        ;
                 ON INIT  oLbx:SetFocus();
                 ON PAINT ( oLbx:Refresh(),;
                            oLbx:nWidth:=oDlg:nWidth-10   ,;
                            oLbx:nHeight:=oDlg:nHeight-82 ,;
                            oTab:nWidth:=oDlg:nWidth-10   ,;
                            oTab:nTop:=oDlg:nHeight-52 )  ;
		 MAXIMIZED;
                 VALID ((aAlias[21])->  ( dbClosearea() ),(aAlias[26])->( dbClosearea() ),;
		        (aAlias[23])->( dbCloseArea() ),(aAlias[29])-> ( dbCloseArea() ),;
			(aAlias[2])-> ( dbCloseArea() ),oLbx:lCloseArea(),.t. )



Además de tener en cuenta de que si en una ventana MDI cargas todos los campos de un registro, alteras alguno y grabas TODO el registro, si esta misma DBF (aún distinta area de trabajo y alias) se está utilizando en otra MDI y haces lo mismo con otro de sus campos, se te va a armar un pollo de coj&%$·es. (ejemplo->campo numerador de facturas y campo numerador de movimientos)
Justo ahora acabo de encontrar un fallo así en una aplicación a medio terminar; llevo casi dos días con él y son las 2 de la mañana, pero aun así estoy contento y me gusta MDI. El usuario una vez acostumbrado lo agradece.

El método que te propone José Luís es muy parecido al que yo uso y va de perlas.

Saludos
Carlos G.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Acerca MDI
Posted: Fri May 04, 2007 07:26 AM

Ando tambien en algo de MDI, sera que me pudieras enviar esa guia JCARO a mi privado, trate de descargarlo pero me fue imposible... muy agradecido... joseluisysturiz@yahoo.com Saludos

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 33
Joined: Wed Jan 25, 2012 09:30 PM
Re: Acerca MDI
Posted: Sat Dec 08, 2012 02:57 AM

Buenas noches

¿Alguien que tenga los manuales MDI me los podria mandar a mi correo por favor?.

interwin_ags@hotmail.com

De antemano muchas gracias.

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Acerca MDI
Posted: Sat Dec 08, 2012 03:39 AM

Buenas noches amigos.
Yo también solicito muy amablemente esos manuales, si alguno de ustedes lo tiene. En estos días he quedado atorado con esto de MDI, específicamente con los Dialogs NoWait.

Mi Email: falegria230349@yahoo.es
Saludos.

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Acerca MDI
Posted: Mon Dec 17, 2012 02:04 PM

Hola interwin, te he enviado TODO lo que encontré en internet sobre MDI en fivewin. Todos los escritos dicen muy poco al respecto. No encontré ningún ejemplo contundente. De todos modos, espero te sirvan.

Por otro lado, creo que deberías identificarte en poco mejor, para poder llamarte por tu nombre propio.

Saludos.

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql

Continue the discussion