Problema con dialogos nowait

Re: Problema con dialogos nowait

Postby artu01 » Mon Oct 24, 2016 9:15 pm

Es NO MODAL
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Problema con dialogos nowait

Postby cnavarro » Mon Oct 24, 2016 9:27 pm

Por qué?
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Problema con dialogos nowait

Postby artu01 » Mon Oct 24, 2016 9:51 pm

Funcion que es un browse no modal
Code: Select all  Expand view  RUN

FUNCTION Brwartic( nTipo, labre)
   LOCAL aRect, oBtn
   
   AbreDbf("ARTICULO", .T., .F. , , cPathDBFE, {"articulo"  }, "Articulos" ) )
   
   REDEFINE LISTBOX oBrw                                           ;
      FIELDS ARTICULO->Cod                                         ;
            ,ARTICULO->DesG                                        ;
            ,Transform(ARTICULO->Pv, "999.9999")                   ;
            ," "                                                   ;
      FIELDSIZES 70, 250,120, 90, 10                               ;
      HEADERS OemToAnsi("C¢digo")                                  ;
            ,OemToAnsi("Descripci¢n")                              ;
            ,"Precio S/."                                          ;
            ," "                                                   ;
      COLOR 0, RGB(192,210,192)                                    ;
      ID 5000 OF oDlg                                              ;
      UPDATE                                                       ;
      ACTION ChTag("ARTICULO", 1, oBrw)                            ;
            ,ChTag("ARTICULO", 2, oBrw)

   oBrw:aJustify  := { .F., .F.,.F., .T., .F. }

    oBrw:bKeyDown   := { |nKey| ProcMtn(nKey, nTipo) }
    oBrw:bLDblClick := { || ProcMtn( 13, nTipo )     }

   REDEFINE BUTTON oBtn ID ID_CANCEL OF oDlg ;
      ACTION (  oDlg:End()  ) CANCEL   // ==> boton salir, cierra el browse Ok
      oBtn:cTooltip := "Sale de la ventana"

   REDEFINE BUTTON oBtn ID ID_NEW OF oDlg    ;
      ACTION ( ProcMtn(VK_INSERT) )
      oBtn:cTooltip := "Ingresa un nuevo registro"

   REDEFINE BUTTON oBtn ID ID_CHANGE OF oDlg ;
      ACTION ( ProcMtn(VK_RETURN) )
      oBtn:cTooltip := "Modifica el registro"

   REDEFINE BUTTON oBtn ID ID_DEL OF oDlg    ;
      ACTION ( ProcMtn(VK_DELETE) )
      oBtn:cTooltip := "Borra el registro"

   IF nTipo <> 1
      REDEFINE BUTTON oBtn ID ID_ENTER OF oDlg  ;
         ACTION ( aValRet:={oDbfArt:Cod, oDbfArt:DESG, oDbfArt:uM}; //******Boton enter para que el usuario seleccione la fila que desea seleccinar
                 ,oDlg:End() ) CANCEL
         oBtn:cTooltip := "Selecciona un registro"    
   ENDIF

   ACTIVATE DIALOG oDlg CENTERED NOWAIT Valid(Cierra(( nOrd)))

RETURN ( aValRet ) // parece que en no modal ya no ejecuta esta sentencia, entonces como haria para regresar los valores de la fila seleccionada x el usuario?

Static Function Cierra(nOrd)
      CLOSE ARTICULO    
Return .t.
 


Rutina que invoca a la funcion de arriba que es no modal

Code: Select all  Expand view  RUN

       DEFINE DIALOG oDlgItem RESOURCE "DLG_item_guia" TITLE "Item" FONT oFontS

       REDEFINE GET oGet VAR carticu ID 101 OF oDlgItem       ; // el usuario presiona enter en blanco y me llama a la funcion valart
                PICTURE "@!"                                  ;      
                VALID ValArt(@cArticu, oDlgItem) UPDATE  
                IIF( lmodo, oGet:Enable(), oGet:Disable() )
...
...
...
       ACTIVATE DIALOG oDlgItem  
RETURN ( NIL )

static FUNCTION ValArt(cCod, oDlg)
  Local cDesCta, nRecAc, nRecDa, aDatos:={}
  local lok
   IF Empty(cCod)

      nRecAc:=ARTICULO->(IndexOrd())
       aDatos:=BRWARTIC(2,.F., @aDatos)  // llama al browse no modal pero no se detiene, se ejecuta toda la sentencias de brwartic y finaliza
     IF aDatos[1] <> Nil                             // cuando este mismo browse era modal si se detenia hasta que el usuario presionara alguna opcion: nuevo, modificar, eliminar    
         cCod:=aDatos[1]
         cDescri := aDatos[2]
      ENDIF
      Articulo->(DBSetOrder(nRecAc))
   EndIf

   IF !Empty(cCod)
      IF !Articulo->(DBSeek(cCod))
         MsgBox(2,"Codigo digitado NO existe")
      ENDIF
   ENDIF

   lok:= Articulo->(Found())
   if lok
      BuscaArt(cCod, oDlg)
    endif
RETURN ( lok )

 
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: cmsoft and 52 guests