by angstin » Wed Nov 05, 2008 4:29 pm
Ok con gusto Antonio....
Resolvi una parte te explico...
Yo estoy trabajando de la siguiente manera todo en MDI-MDICHILD
Tengo mi ventana MDICHILD, Tengo dos Gets y Varios Botones desde mi Dialogo de Recurso, y le estoy incrustando un xBrowse desde codigo,
Asi defino mi ventana MDICHILD:
DEFINE WINDOW oWndChild COLOR 0, GETSYSCOLOR( 15 );
TITLE tit+" "+titulo ;
ICON "BC" MDICHILD OF bc:oWnd;
NOMAXIMIZE FROM crd_f2bal, crd_c2bal TO 0,0 pixel
asi mi Dialogo de Recurso:
DEFINE DIALOG oDlg RESOURCE "BCEDCBAL" OF bc:oWnd
oDlg:bGotFocus = { || oWndchild:SetFocus(),oget[nget]:setfocus(),.T.}
asi mi xBrowse:
@ 3,2 XBROWSE Brw1 ;
FIELDS "" ;
ALIAS (CALIAS) ;
OF oWndChild ;
LINES CELL
Brw1:aCols:= {}
FOR i := 1 TO xCols
ADD COLUMN TO XBROWSE Brw1 DATA bro_campo[i] TITLE bro_subtit[i]
NEXT
Brw1:SetRDD()
Brw1:nColDividerStyle := LINESTYLE_BLACK
Brw1:nRowDividerStyle := LINESTYLE_BLACK
Brw1:nMarqueeStyle := MARQSTYLE_HIGHLCELL
Brw1:lRecordSelector := .F.
Brw1:lColDividerComplete := .F.
Brw1:l2007 := .F.
Brw1:lFastEdit := .T.
brw&apl() // llamo a esta funcion para la parte de edicion del xbrowse
Brw1:CreateFromCode()
ahora Activo mi dialogo y la ventana:
ACTIVATE DIALOG oDlg NOWAIT;
ON INIT (SetParent( Brw1:hWnd,oDlg:hWnd ),SetParent( oDlg:hWnd,oWndChild:hWnd ),oGet[1]:SetFocus(), oDlg:Move( 46, 0 )) ;
VALID (oWndChild:End(),.T. )
oWndChild:bmoved = { | nRow, nCol, nFlags | savecrd1(oWndChild,"BAL") }
ACTIVATE WINDOW oWndChild ;
ON INIT (oWndChild:SetSize( oDlg:nWidth, oDlg:nHeight+61+12, .T. ),Brw1:SetSize(oDlg:nWidth-30, oDlg:nHeight-100),oGet[1]:SetFocus());
VALID (IF(oWnd#nil,(CALIAS)->(dbunlock()),[]),habbot(bot),CERRAR(CALIAS),CALIAS:=cal,odlg:=nil,.T.)
El problema que tenia aqui lo resolvi con el SetParent ya que el brow lo incrusto en el Window y no lo hago desde el dialo de recurso:
SetParent( Brw1:hWnd,oDlg:hWnd )
SetParent( oDlg:hWnd,oWndChild:hWnd )
Ok. todo hasta aqui me funciona bien...
esta es la funcion que llamo para la edicion del xbrowse
FUNCTION brwbal()
LOCAL oCol, lRetorno,xVal2
// Columna 1
oCol:=Brw1:aCols[1]
oCol:nEditType := 1
oCol:cEditPicture := "@k 9"
oCol:bClrEdit := Brw1:bClrStd
oCol:bEditValid := {| oGet, oCol | Validar1( oGet, oCol ) }
oCol:bOnPostEdit := { | oCol, xVal, nKey | DBSELECTAREA(CALIAS), IF( RecCount() == 0, ( DbAppend(), Brw1:Refresh() ),) , ;
IF( nKey == VK_RETURN, ( (CALIAS)->nivel := xVal ), ) }
//Columna 2
oCol:=Brw1:aCols[2]
oCol:nEditType := 1
oCol:cEditPicture := "XX"
oCol:bClrEdit := Brw1:bClrStd
oCol:bEditValid := {| oGet | (MsgInfo(SELECEMPRE( oGet, @xVal2 )),MsgInfo(xVal2)),.f. }
oCol:bOnPostEdit := { | oCol, xVal, nKey | IF( RecCount() == 0, ( DbAppend(), Brw1:Refresh() ),) , ;
IF( nKey == VK_RETURN, (CALIAS)->id_com := xVal , ) }
RETURN .T.
Aqui es donde tengo problema Antonio en el bEditValid de la Columna 2, yo aqui cuando entro en modo de edicion llamo a una funcion que me crea otra ventana mdichild que contiene otro browse yo aqui debo seleccionar un registro y devolverme con ese valor a la columna que tengo en edicion..
Lo que no se es como hacer para que se me mantenga esa ventana hasta que seleccione y luego devolverme a la ventana anterior donde tengo la edicion.....
Angel Stincone... Saludos...
FWH 8.08
XHARBOUR 1.1.0
VERCE 5.3
ADS 9.0