Acerca MDI

Acerca MDI

Postby Raymundo Islas M. » Wed May 02, 2007 9: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
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Postby Antonio Linares » Thu May 03, 2007 9: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41315
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby JoseLuis » Thu May 03, 2007 12:28 pm

Raymundo
A mi me va bien así:
1º Declaro como locales:
Code: Select all  Expand view
  local hdc :=CreateDc("DISPLAY","","")
  local nHor:=GetDeviceCaps(hdc,8)
  local nVer:=GetDeviceCaps(hdc,10)

2º Declaro la Ventana MDICHILD así:
Code: Select all  Expand view
  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:
Code: Select all  Expand view
            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:
Code: Select all  Expand view
   if AbiertaVentana( cTitulo )
   return NIL
   endif

y la funcion es:
Code: Select all  Expand view
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í:
Code: Select all  Expand view
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
   }

Code: Select all  Expand view
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
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby Raymundo Islas M. » Thu May 03, 2007 1: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
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Postby jcaro » Thu May 03, 2007 5: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
jcaro
 
Posts: 270
Joined: Fri Nov 11, 2005 7:39 pm

Postby Raymundo Islas M. » Thu May 03, 2007 6:44 pm

Muchas gracias Juan

Les estare dando su buena checada !!



Saludos
FWH 10.6 + xHarbour + Borland 582
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Postby FiveWiDi » 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:
Code: Select all  Expand view
            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.
FiveWiDi
 
Posts: 1060
Joined: Mon Oct 10, 2005 2:38 pm

Postby joseluisysturiz » Fri May 04, 2007 7: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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Acerca MDI

Postby interwin » Sat Dec 08, 2012 2: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.
interwin
 
Posts: 33
Joined: Wed Jan 25, 2012 9:30 pm

Re: Acerca MDI

Postby FranciscoA » Sat Dec 08, 2012 3: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
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Acerca MDI

Postby FranciscoA » Mon Dec 17, 2012 2: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
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 63 guests