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