Page 1 of 2

alias dinamicos en dialogos nomodales

Posted: Wed Mar 08, 2017 3:06 am
by Miguel Salas
creo un alias (concepto0) la primera vez si lo abro 2 veces se crea otro alias (concepto1) pero no logro que trabajen independiente, si muevo el puntero en el ultimo al regresar a los anteriores se me "rellena" el browse con un único registro que es el seleccionado en este último alias.

saludos y gracias

Re: alias dinamicos en dialogos nomodales

Posted: Wed Mar 08, 2017 7:05 am
by Carles
Hola,

El browse debes indicarle que alias usaras isno cogerá el alias activo. No se q browse y version usas, pero prueba oBrw:cAlias := <el_alias_q_le_toque>

Re: alias dinamicos en dialogos nomodales

Posted: Wed Mar 08, 2017 3:33 pm
by Miguel Salas
gracias Carles.

tengo asi

cAliasCon := "concepto"+cArea

Use (cFile) shared NEW ALIAS (cAliasCon) VIA "DBFCDX"

(cAliasCon)->(ORDSETFOCUS("EMPCON"))




oBrw := TxBrowse():New( oDlg )
oBrw:nHeaderLines := 1
oBrw:lAllowColSwapping :=.F.
oBrw:nColSel := 1
oBrw:nRowHeight := 18
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:lColDividerComplete := .t.
oBrw:lHScroll := .f.
oBrw:lFooter := .t.
oBrw:nFreeze := 2
oBrw:lFastEdit = .T.
oBrw:cAlias := cAliascon // donde aliascon cambia cada ve que se abre (concepto0,concepto1,concepto2)


saludos

Re: alias dinamicos en dialogos nomodales

Posted: Wed Mar 08, 2017 7:06 pm
by Carles
Hola

Cuantos browses tienes ? Como ? No acabo entender bien lo que haces pero el browse siempre manejara el alias q tenga asignado.

Re: alias dinamicos en dialogos nomodales

Posted: Thu Mar 09, 2017 1:27 am
by Miguel Salas
me pidieron abrir varias veces el mismo modulo de mantenimiento de articulos

para eso cambie el dialogo a nowait

lo hice con Use (cFile) shared NEW ALIAS (aAliasCon[val(cArea)]) VIA "DBFCDX" // donde cArea se incrementa cada vez (1,2,3,4...)

pero si me muevo del 4to al 3ro o al 2do o al 1ro , el puntero se queda con el que tenga seleccionado en el 4to.

y necesitan que esten independientes uno de otro es decir que si en el 1ro tengo seleccionado el registro 40 y voy al 2do selecciono el 300, si regreso al 1ro no se mueva del registro 40.


espero haberme explicado mejor
saludos

Re: alias dinamicos en dialogos nomodales

Posted: Thu Mar 09, 2017 8:11 am
by José Luis Sánchez
Hola,
Yo no uso diálogos no modales, uso una clase llamada FSDI que creo que es mejor desde el punto de vista de la usabilidad de la aplicación. Tienes toda la información y ejemplos en mi blog - https://cincomundos.wordpress.com/?s=fsdi

Saludos,

Re: alias dinamicos en dialogos nomodales

Posted: Thu Mar 09, 2017 8:17 am
by nageswaragunupudi
The problem should be the way you create xbrowse.

Our recommendation:

Code: Select all

function BrowseDlg( cDBF )

   local oDlg, oBrw, cAlias

   USE ( cDbf ) NEW SHARED ALIAS ( cAlias := cGetNewAlias( "DB" ) ) VIA "DBFCDX"
   if !USED()
      ? "Can not open " + cDBF
      return nil
   endif

   DEFINE DIALOG oDlg SIZE 600,400 PIXEL
   @ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
      ALIAS cAlias AUTOCOLS CELL LINES NOBORDER FASTEDIT

   WITH OBJECT oBrw
      // other settings
      //
      :CreateFromCode()
   END

   ACTIVATE DIALOG oDlg NOMODAL ;
      VALID ( ( cAlias )->( DBCLOSEAREA() ), .t. )

return nil
 
This dialog can be called any number of times with the same DBF

Re: alias dinamicos en dialogos nomodales

Posted: Thu Mar 09, 2017 8:36 am
by Carles
Miguel

Code: Select all

#include "FiveWin.Ch"
#include "xbrowse.ch"

STATIC oWnd 
STATIC nCount := 0

FUNCTION Main()
    LOCAL oBar

    CreateTable()
    
    DEFINE WINDOW oWnd MDI
        DEFINE BUTTONBAR oBar
        DEFINE BUTTON OF oBar ACTION Dlg()
    ACTIVATE WINDOW oWnd ON INIT Test()

RETU NIL

FUNCTION Dlg()

    LOCAL oDlg, oBrw, cAlias
    
    cAlias := 'MIALIAS' + ltrim(str(++nCount))
    
    USE "xbr.dbf" SHARED NEW ALIAS (cAlias )

    DEFINE DIALOG oDlg TITLE ( 'Browse => ' + cAlias )
        oDlg:nStyle    := nOr( WS_THICKFRAME, WS_SYSMENU, WS_MINIMIZEBOX, WS_MAXIMIZEBOX )
        
       @ 0,0 XBROWSE oBrw OF oDlg ALIAS (cAlias) AUTOCOLS   
            oBrw:CreateFromCode()
            
        oDlg:oClient := oBrw
        
    ACTIVATE DIALOG oDlg NOMODAL ;
            ON INIT ( oDlg:Move( HB_RandomInt(5) * 100 , HB_RandomInt(10) * 100 ) ) ;
            VALID ( (cAlias)->(DbCloseArea()), .t. )

RETU NIL

FUNCTION Test()
    LOCAL n
    
    FOR n := 1 TO 10
        Dlg()
    NEXT
    
RETU NIL

STATIC FUNCTION CreateTable()

   LOCAL n
   LOCAL aFlds := { ;
                  { "FLDID",      "N",  3, 0  }, ;
                  { "FLDNAME",    "C", 10, 0  } ;
                }

   dbCreate( "XBR", aFlds )

   Use XBR

   for n := 1 to 50
      dbAppend()     
      FIELD->FldID      := n
      FIELD->FldName    := {'ONE','TWO','THREE','FOUR','FIVE'}[ HB_RandomInt( 5 ) ] + ' - ' + ltrim(str(n)) 
   next
   
   CLOSE DATA

return nil

Re: alias dinamicos en dialogos nomodales

Posted: Thu Mar 09, 2017 7:12 pm
by Miguel Salas
Gracias por su interes

ya probé ambos y sigo igual.

¿afeca que haga el browse desde recursos? craetefromresource()



saludos

Re: alias dinamicos en dialogos nomodales

Posted: Thu Mar 09, 2017 7:36 pm
by cnavarro
Miguel, pon esta instrucción en la definición del diálogo, a ver si te da alguna pista

Code: Select all


 oDlg:bGotFocus   := { || MsgInfo( Alias() ) }

 

Re: alias dinamicos en dialogos nomodales

Posted: Thu Mar 09, 2017 10:05 pm
by Miguel Salas
si lo he hecho, me mustra concepto1,concepto2,concepto3, etc...
gracias

Re: alias dinamicos en dialogos nomodales

Posted: Thu Mar 09, 2017 10:08 pm
by cnavarro
Y se corresponden con los Alias que debe tener ese dialog ?

Re: alias dinamicos en dialogos nomodales

Posted: Fri Mar 10, 2017 12:14 am
by Miguel Salas
Pues ya funciona ¡loteria!

me hice un ejemplo pequeño con la ayuda de todos

function nomodales()

local oDlg, oBrw, cAlias

cFile := cPath+"\DATOS\concepto.DBF"


USE ( cFile ) NEW SHARED ALIAS ( cAlias := DinamicAlias( "CON" ) ) VIA "DBFCDX"
if !USED()
? "Can not open " + cFile
return nil
endif
DEFINE DIALOG oDlg RESOURCE "concepto2" TITLE "Catalogo de Conceptos"+cAlias Of oWnd ;

oBrw := TxBrowse():New( oDlg )
oBrw:nHeaderLines := 1
oBrw:lAllowColSwapping :=.F.
oBrw:nColSel := 1
oBrw:nRowHeight := 18
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:lColDividerComplete := .t.
oBrw:lHScroll := .f.
oBrw:lFooter := .t.
oBrw:nFreeze := 2
oBrw:lFastEdit := .T.
oBrw:cAlias := cAlias


oCol := oBrw:AddCol()
oCol:cHeader := "Clave"
oCol:bStrData := { || ( oBrw:cAlias )->clave }
oCol:nWidth := 45
oCol:nDataStrAlign:= AL_RIGHT
oCol:nHeadStrAlign:= AL_RIGHT
oCol:lAllowSizing :=.F.

oCol := oBrw:AddCol()
oCol:cHeader := "Nombre"
oCol:bStrData := { || ( oBrw:cAlias )->NOMBREEXT }
oCol:nWidth := 300
oCol:nDataStrAlign:= AL_LEFT
oCol:nHeadStrAlign:= AL_LEFT
oCol:lAllowSizing :=.F.



oBrw:CreateFromResource (101 )
oBrw:setrdd()

ACTIVATE DIALOG oDlg NOMODAL ;
VALID ( ( cAlias )->( DBCLOSEAREA() ), .t. )

return nil


muchisimas gracias

Re: alias dinamicos en dialogos nomodales

Posted: Fri Mar 10, 2017 1:24 am
by nageswaragunupudi
This is the correction
================
DEFINE DIALOG oDlg RESOURCE "concepto2" TITLE "Catalogo de Conceptos"+cAlias Of oWnd

oBrw := TxBrowse():New( oDlg )
( cAlias )->( oBrw:SetRDD( .f. ) ) // <--- Add this here
oBrw:nHeaderLines := 1
oBrw:lAllowColSwapping :=.F.
oBrw:nColSel := 1
oBrw:nRowHeight := 18
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:lColDividerComplete := .t.
oBrw:lHScroll := .f.
oBrw:lFooter := .t.
oBrw:nFreeze := 2
oBrw:lFastEdit := .T.
//oBrw:cAlias := cAlias // REMOVE THIS LINE


oCol := oBrw:AddCol()
oCol:cHeader := "Clave"
oCol:bStrData := { || ( oBrw:cAlias )->clave }
oCol:nWidth := 45
oCol:nDataStrAlign:= AL_RIGHT
oCol:nHeadStrAlign:= AL_RIGHT
oCol:lAllowSizing :=.F.

oCol := oBrw:AddCol()
oCol:cHeader := "Nombre"
oCol:bStrData := { || ( oBrw:cAlias )->NOMBREEXT }
oCol:nWidth := 300
oCol:nDataStrAlign:= AL_LEFT
oCol:nHeadStrAlign:= AL_LEFT
oCol:lAllowSizing :=.F.

oBrw:CreateFromResource (101 )
//oBrw:setrdd() // REMOVE THIS LINE

ACTIVATE DIALOG oDlg NOMODAL ;
VALID ( ( cAlias )->( DBCLOSEAREA() ), .t. )

return nil

Re: alias dinamicos en dialogos nomodales

Posted: Fri Mar 10, 2017 2:17 am
by Miguel Salas
corregido!

mil gracias