DanielPuente wrote:Leonor:
Agregale la clausula alias a la definicion de cada browse:
WALIAS:='MOVART'
REDEFINE LISTBOX oBrw fields ID 999 OF oDlg ;
COLOR CLR_BLACK, CLR_WHITE ;
FONT oFont ALIAS (WALIAS) UPDATE
wAlias3:="MOVAR2"
REDEFINE LISTBOX oBrw3 fields ID 998 OF oDlg ;
COLOR CLR_BLACK, CLR_WHITE ;
FONT oFont ALIAS (WALIAS3) UPDATE
Y en las definiciones de las columnas del browse inclui siempre el alias de la base, no pongas solo el nombre del campo o fieldblock(). Si la base es la misma en los dos browses, abrilas en dos alias distintas.
Saludos,
Gracias por la ayuda:
Tengo una serie de dudas al respecto, cosas que no me quedan muy claras. Para el armado de la ventana con el listbox yo siempre llamo a una subrutina en la que ya cambie el area de trabajo con un dbselectar, o sea que ingreso a la subrutina con el area que necesito activa, la subrutina hace lo siguiente:
// genero la ventana que va a contener el listbox
oForm := TDialog():New( Top, Left, Bottom, Right, cTitle,,,,,,,,, .T.,, oFont )
// armo un array con todas las columnas que va a contener el listbox, porque pueden ser campos directos de la base o algunos relacionados con otras
CantFields := LEN( aDefFields )
FOR i = 1 TO CantFields
VarDef := ACLONE( aDefFields[i] )
M->Ancho := FormParse( VarDef[1] )
M->Etiqueta := ALLTRIM( OemToAnsi( FormParse( VarDef[2] ) ) )
VarDef[3] := SUBSTR( ALLTRIM( VarDef[3] ), 4 )
AADD( cEtiqueta, M->Etiqueta )
AADD( nAncho, M->Ancho )
M->Bloque:= LEFT( VarDef[3], LEN( ALLTRIM( VarDef[3] ) ) - 1 )
bBloque+=ACaracter( M->Bloque, VALTYPE(&(M->Bloque)))+","
NEXT
// en bBloque dejo por ejemplo campo1, campo2, campo3
bBloque= LEFT( bBloque, LEN( ALLTRIM( bBloque ) ) -1 )
bBloque= "{ " + bBloque + " }"
nProxArra := Alias()
@RowLis,1 LISTBOX ObjBrowse FIELDS "" ALIAS nProxArra SIZE X2Window, Y2Window OF oForm FONT oFontMulti
ObjBrowse:aHeaders = cEtiqueta
ObjBrowse:bLine = { || &(bBloque) }
ACTIVATE DIALOG oForm CENTER ON RIGHT CLICK MenuPopup( oForm,, aMenu ) ON INIT ( InitMulti( oForm ), ObjBrowse:Refresh() )
Esto funciona barbaro, dentro de esa ventana hay una accion que seleccionando una linea del listbox llama nuevamente a esa subrutina y trae datos de otra area de trabajo, sucede que cuando cambio el area automaticamente la ventana de atras pasa a tener los mismos datos que la ventana de adelante. Como hago para que en la ventana de atras quede fijo el alias de la otra area de trabajo. No olvidarse que la subrutina es siempre la misma. Por otro lado nunca use el REDEFINE, para que casos lo tendria que utilizar y como hago para saber el ID de un objeto ya creado, porque por lo que veo todos los redefine de todos los comandos necesitan el ID del objeto.
Ademas tengo otro problema, en algunos casos se me va de sistema con este cartel: ERROR BASE/1513 Operation too complex
En bBloque estoy ingresando lo siguiente:
//primer columna
{ IF(Abonos->CodTer==M->CodTer,">"," "),
//segunda columna
Abonos->CodTer,
//tercer columna
Abonos->CodArt,
//cuarta columna
LEFT(Abonos->Nombre,39),
//quinta columna
STR(Abonos->Cantidad,8,2),
//_ columna
TRANSFORM(ROUND(Abonos->Precio*(1+IIF(!TipImpu->Discrimina.AND.TipMov->Calc_Iva=="SI ",(Abonos->PorGravado/100)*(TipImpu->PorIva/100+TipImpu->PorIvaPlus/100),0))+(IIF(!TipImpu->Discrimina,Abonos->PrecVta*Abonos->PorInterno/100,0)),_REDONDEO),"@Z "+REPLICATE("9",10-_REDONDEO-1)+"."+REPLICATE("9",_REDONDEO) ),
//septima columna
TRANSFORM(Abonos->DescuenArt,"@Z 99.99"),TRANSFORM(Abonos->DescuenAr2,"@Z 99.99"),TRANSFORM(Abonos->DescuenAr3,"@Z 99.99"),TRANSFORM(ROUND(Abonos->Precio*(1+IIF(!TipImpu->Discrimina.AND.TipMov->Calc_Iva=="SI ",(Abonos->PorGravado/100)*(TipImpu->PorIva/100+TipImpu->PorIvaPlus/100),0))+(IIF(!TipImpu->Discrimina,Abonos->PrecVta*Abonos->PorInterno/100,0)),_REDONDEO)*(1-Abonos->DescuenArt/100)*(1-Abonos->DescuenAr2/100)*(1-Abonos->DescuenAr3/100)*Abonos->Cantidad ,"@Z "+REPLICATE("9",10-_REDONDEO-1)+"."+REPLICATE("9",_REDONDEO)) }
si yo elimino la _ o septima columna (primero uno y despues vuelvo a colocar esa y elimino la otra) me lo hace bien, pero con las dos columnas juntas no puede, saben si hay algun límite o porque me esta pasando esto.
Desde ya muchas gracias. Saludos a todos
Leonor