Para crear el xBrowse uso la funcion xEditar de la siguiente forma, tambi茅n agrego la funci贸n EditNotes, el error se da al llamar a esta funci贸n y el dialogo debe presentar el control RichEdit, cuando la variable nTipo=3:
FUNCTION xEditar(IDEN)
LOCAL oDlgED, oSay, oBrw, oBut[3], oFnt, oFont2, oFont3, cDbf:=SPACE(0)
USE &RUTRES.&NOMARC
cDBF=NOMARC
INDEX ON DIA TO &RUTRES.INDICE
IF .NOT. FILE("\"+CURDIR()+"\RESULTADOS\"+cDbf)
聽 聽 MsgAlert("No existe el archivo "+cDBF,"Alerta")
聽 聽 DBCloseAll()
聽 聽 RETURN NIL
ENDIF
* Define dialogo
DEFINE FONT oFnt NAME GetSysFont() SIZE 0, -8
DEFINE FONT oFont2 NAME GetSysFont() SIZE 0, -8 BOLD
DEFINE FONT oFont3 NAME GetSysFont() SIZE 0, -8 NESCAPEMENT 900
DEFINE DIALOG oDlgED RESOURCE "XEDITAR2" OF oVent TITLE "Archivo: "+NOMARC FONT oFnt
聽 聽 REDEFINE COLUMN XBROWSE oBrw ID 1601 OF oDlgED UPDATE AUTOCOLS AUTOSORT ;
聽 聽 聽 聽 ON CHANGE ( oSay:SetText("Registro: "+STR(RECNO(),4)+"/"+STR(RECCOUNT(),4)) )
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 1 DATA STR(FECHA,2) HEADER "Fecha" WIDTH 36 ALIGN RIGHT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 2 DATA CFecha(DIA) HEADER "D铆a" WIDTH 75 ALIGN LEFT COLOR RGB(255,0,0),RGB(192,192,192)
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 3 DATA IF(Empty(HORA), " 聽: 聽", AMPM(ConvHora(HORA))) HEADER "Hora" WIDTH 65 ALIGN RIGHT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 4 DATA NOMBRECAMP HEADER "Nombre torneo" WIDTH 140 ALIGN LEFT COLOR RGB(255,0,0),RGB(192,192,192)
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 5 DATA ETAPA HEADER "Etapa" WIDTH 80 ALIGN LEFT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 6 DATA IF(Empty(CIUDAD),"ND",CIUDAD) HEADER "Ciudad" WIDTH 100 ALIGN LEFT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 7 DATA IF(ESTADIO="","ND",ESTADIO) HEADER "Estadio" WIDTH 150 ALIGN LEFT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 8 DATA IF(JM,"S铆","No") HEADER "Jornada m煤ltiple" WIDTH 48 ALIGN CENTER
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 9 DATA IF(AG,"S铆","No") HEADER "Entrada gratis" WIDTH 48 ALIGN CENTER
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 10 DATA IF(ASISTENCIA=0,"ND",TRANSFORM(Asistencia,"###,###")) HEADER "Asistencia" ;
聽 聽 聽 聽 聽 聽 WIDTH 60 ALIGN RIGHT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 11 DATA IF(Arbitro="","ND",Arbitro) HEADER "脕rbitro" WIDTH 150 ALIGN LEFT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 12 DATA LOCAL HEADER "Local" WIDTH 105 ALIGN LEFT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 13 DATA STR(GL,2) HEADER "Goles local" WIDTH 40 ALIGN RIGHT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 14 DATA VISITA HEADER "Visitante" WIDTH 105 ALIGN LEFT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 15 DATA STR(GV,2) HEADER "Goles visita" WIDTH 40 ALIGN RIGHT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 16 DATA STR(EXP_L,2) HEADER "Expulsados local" WIDTH 60 ALIGN RIGHT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 17 DATA STR(EXP_V,2) HEADER "Expulsados visita" WIDTH 60 ALIGN RIGHT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 18 DATA STR(PEN_LE,2) HEADER "Penales ejecutados local" WIDTH 60 ALIGN RIGHT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 19 DATA STR(PEN_LC,2) HEADER "Penales convertidos local" WIDTH 60 ALIGN RIGHT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 20 DATA STR(PEN_VE,2) HEADER "Penales ejecutados visita" WIDTH 60 ALIGN RIGHT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 21 DATA STR(PEN_VC,2) HEADER "Penales convertidos visita" WIDTH 60 ALIGN RIGHT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 22 DATA IF(Empty(DT_LOCAL),"ND",DT_LOCAL) HEADER "T茅cnico local" WIDTH 140 ALIGN LEFT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 23 DATA IF(Empty(DT_VISITA),"ND",DT_VISITA) HEADER "T茅cnico visita" WIDTH 140 ALIGN LEFT
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 24 DATA IF(! Empty(ALINEACION),"<Alineaci贸n>","<alineaci贸n>") HEADER "Alineaci贸n" WIDTH 90 ;
聽 聽 聽 聽 聽 聽 ALIGN LEFT MESSAGE "De click en el bot贸n para ver la alineaci贸n"
聽 聽 聽 聽 WITH OBJECT oBrw:oCol(24)
聽 聽 聽 聽 聽 聽 :nEditType:=EDIT_BUTTON
聽 聽 聽 聽 聽 聽 :bEditBlock:={ | r,c,o | EditNotes(r,c,o,1) }
聽 聽 聽 聽 END
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 25 DATA IF(! Empty(PENALERRAD),"<Penales errados>","<penales errados>") HEADER "Penales errados" ;
聽 聽 聽 聽 聽 聽 WIDTH 110 ALIGN LEFT MESSAGE "De click en el bot贸n para ver datos de penales errados"
聽 聽 聽 聽 WITH OBJECT oBrw:oCol(25)
聽 聽 聽 聽 聽 聽 :nEditType:=EDIT_BUTTON
聽 聽 聽 聽 聽 聽 :bEditBlock:={ | r,c,o | EditNotes(r,c,o,2) }
聽 聽 聽 聽 END
聽 聽 聽 聽 ADD COLUMN TO oBrw AT 26 DATA IF (! Empty(OBSERVACIO),"<Rtf>","<rtf>") HEADER "Observaciones" WIDTH 80 ALIGN CENTER
聽 聽 聽 聽 WITH OBJECT oBrw:oCol(26)
聽 聽 聽 聽 聽 聽 :nEditType:=EDIT_BUTTON
聽 聽 聽 聽 聽 聽 :bEditBlock:={ | r,c,o | EditNotes(r,c,o,3) }
聽 聽 聽 聽 END
聽 聽 聽 聽 * Caracter铆sticas de xBrowse
聽 聽 聽 聽 FOR i=1 TO Len(oBrw:aCols) 聽 // alinea el texto de la cabecera al centro
聽 聽 聽 聽 聽 聽 oBrw:aCols[i]:nHeadStrAlign:=AL_CENTER
聽 聽 聽 聽 聽 聽 聽 聽 NEXT
聽 聽 聽 聽 oBrw:l2007 聽:= .T.
聽 聽 聽 聽 oBrw:nColDividerStyle := LINESTYLE_INSET
聽 聽 聽 聽 oBrw:nRowDividerStyle := LINESTYLE_INSET
聽 聽 聽 聽 oBrw:nHeaderLines 聽 聽 := 2 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽// n煤mero de l铆neas de la cabecera
聽 聽 聽 聽 oBrw:nHeaderHeight 聽 聽:= 48 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // Altura cabeceras de columna
聽 聽 聽 聽 oBrw:nRowHeight 聽 聽 聽 := 24 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // Altura entre lineas
聽 聽 聽 聽 oBrw:lRecordSelector 聽:= .F. 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽// poner o no, columna de la flechita de la izquierda
聽 聽 聽 聽 oBrw:nMarqueeStyle 聽 聽:= MARQSTYLE_HIGHLCELL 聽 聽 聽// solo ilumina la celda actual
聽 聽 聽 聽 oBrw:bRClicked 聽 聽 聽 聽:= { | nRow, nCol | BrowPopup2(nRow, nCol, oBrw, "Archivo: "+NOMARC) }
聽 聽 REDEFINE SAY oSay ID 1602 OF oDlgED READONLY UPDATE
聽 聽 REDEFINE BUTTONBMP oBut[1] ID 1603 OF oDlgED BITMAP "PRINT16" TEXTRIGHT ;
聽 聽 聽 聽 MESSAGE "Imprime reporte de datos mostrados por el Browse" ACTION oBrw:Report("Datos del archivo: "+cDBF, .T.)
聽 聽 聽 聽 oBut[1]:cToolTip="Imprime reporte de datos mostrados por el Browse"
聽 聽 REDEFINE BUTTONBMP oBut[2] ID 1 OF oDlgED BITMAP "CANCELAR" TEXTRIGHT MESSAGE "Cierra ventana" ACTION oDlgED:END()
聽 聽 聽 聽 oBut[2]:cToolTip="Cierra ventana"
聽 聽 REDEFINE BTNBMP oBut[3] ID 3 RESOURCE "Excel32" OF oDlgED CENTER ADJUST TRANSPARENT 2007 ;
聽 聽 聽 聽 ACTION MsgRun("Creando archivo", "Por favor, espere ...", { || CreaArchExcel("Archivo: "+NOMARC) } ) ;
聽 聽 聽 聽 MESSAGE "Crea archivo en formato Excel"
聽 聽 聽 聽 oBut[3]:cToolTip="Crea archivo en formato Excel"
聽 聽 oDlgED:={ | nKey,nFlags | IF( nKey==VK_ESCAPE, oDlgED:End() ,) } 聽 // Sale de oDlgED al aplastar Escape
聽 聽 oDlgED:lHelpIcon:= .F. 聽 聽 聽 聽 聽 聽 聽 聽// Para q no salga el signo ?
ACTIVATE DIALOG oDlgED CENTER RESIZE16 ON INIT (Centra(oDlgED), oDlgED:SetIcon(oApp:cIcono))
oFnt:End()
oFont2:End()
oFont3:End()
DBCloseAll()
RETURN .T.
*FDF xEditar
// Funci贸n copiada de ../Samples agregada para editar los campos memo con xBrowse
FUNCTION EditNotes( nRow, nCol, oCol, nTipo )
LOCAL oDlg, oGet, oBtn, oFnt, oFnt1, aPoint, cNotes:=""
cNotes := IF(nTipo=1, FIELD->ALINEACION, IF(nTipo=2, FIELD->PENALERRAD, FIELD->OBSERVACIO) )
aPoint := ClientToScreen( oCol:hWnd, { nRow, nCol } )
nRow 聽 := aPoint[1]
nCol 聽 := aPoint[2]
DEFINE FONT oFnt NAME "Courier New" SIZE 0, -9
DEFINE FONT oFnt1 NAME GetSysFont() SIZE 0, -8
IF nTipo=3
聽 聽 DEFINE DIALOG oDlg FROM nRow, nCol TO nRow+230, nCol+352 PIXEL STYLE WS_POPUP FONT oFnt1
聽 聽 聽 聽 @ 02,02 RICHEDIT oGet VAR cNotes OF oDlg SIZE 172,96 PIXEL FILE cNotes READONLY
聽 聽 聽 聽 聽 聽 oGet:=CLR_HBLUE
聽 聽 聽 聽 @ 102,127 BUTTON "&Volver" SIZE 47,10 PIXEL OF oDlg ACTION oDlg:End()
聽 聽 聽 聽 聽 聽 *oBtn:="Cierra ventana auxiliar"
聽 聽 ACTIVATE DIALOG oDlg ON INIT (Centra(oDlg), oGet:LoadAsRTF(cNotes), oGet:SetText(cNotes), ;
聽 聽 聽 聽 oGet:SetFontName("Ms Sans Serif"), oGet:SetFontSize(10) )
ELSE
聽 聽 DEFINE DIALOG oDlg FROM nRow, nCol TO nRow+230, nCol+352 PIXEL STYLE WS_POPUP FONT oFnt1
聽 聽 聽 聽 @ 02,02 GET oGet VAR cNotes TEXT SIZE 172,96 PIXEL OF oDlg READONLY FONT oFnt COLOR CLR_HBLUE
聽 聽 聽 聽 聽 聽 oGet:="Alineaciones e incidencias de ambos equipos"
聽 聽 聽 聽 @ 102,127 BUTTON oBtn PROMPT "&Volver" SIZE 47,10 PIXEL OF oDlg ACTION oDlg:End()
聽 聽 聽 聽 聽 聽 oBtn:="Cierra ventana auxiliar"
聽 聽 ACTIVATE DIALOG oDlg
ENDIF
oFnt:End()
oFnt1:End()
RETURN