Estimados...
Llevo mucho sin darme una vuelta por ac谩.. pero tengo una duda...puedo mover Objetos dentro de un dialogo en tiempo de ejecuci贸n???..La idea es que el usuario acomode la pantalla a su gusto.
MUCHAS GRACIAS!!!
Estimados...
Llevo mucho sin darme una vuelta por ac谩.. pero tengo una duda...puedo mover Objetos dentro de un dialogo en tiempo de ejecuci贸n???..La idea es que el usuario acomode la pantalla a su gusto.
MUCHAS GRACIAS!!!
Revisa el ejemplo FWH\samples\design.prg
Gracias Antonio.. lo revisare.
Antonio me parece perfecto.... Pero tengo la forma de poder rescatar la posici贸n y el tama帽o que le asigna el usuario?.. la idea es poder guardar estos valores para que la pr贸xima vez que consulte la pantalla aparezca con los valores que dejo establecido.
Desde ya GRACIAS!!!!
Guardalo en un ini o en un dbf
// Programa : ADJCONTROL
// Fecha/Hora : 27/05/2003 02:34:45
// Prop贸sito : Ajustar Controles
// Creado Por : Juan Navas
// Llamado por: MenuSys de los MDI y Dialogos con Controles
// Aplicaci贸n : Programaci贸n
// Tabla : Todas
#INCLUDE "DPXBASE.CH"
/*
// Prueba del Ajuste de Controles
*/
FUNCTION MAIN()
LOCAL oDlg,cNombre:="Nombre de Prueba",oGet
DEFINE DIALOG oDlg
@ 0,.5 SAY "Nombre de Prueba"
@ 1,.5 GET oGet VAR cNombre
@ 2,.5 BUTTON "Ajustar" ACTION CTRLSETSIZE(oGet) SIZE 40,15
@ 3,.5 BUTTON "Cerrar" ACTION oDlg:End() SIZE 40,15
ACTIVATE DIALOG oDlg
RETURN NIL
FUNCTION CTRLSETSIZE(oControl)
LOCAL oSize,bMove,oBtn1,oBtn2,oFont,nAdd:=4,nSep1:=40,I,oCol,cId,cTitle
LOCAL oGet1,oGet2,oGet3,oGet4,oBrw,aNames:={},oFont,aControls:={},oFontS,nLen,aDialogs,U,Z,oObjCtrl
DEFINE FONT oFontS NAME "CURIER" SIZE 0,-12
AADD(aNames ,{oControl:ClassName(),ctoo(oControl:nResult,"C"),""})
AADD(aControls,oControl)
nLen:=IIF(ValType(oControl:aControls)="A",LEN(oControl:aControls),0)
FOR I=1 TO nLen
cId :=CTOO(oControl:aControls[I]:nResult,"C")
cId :=IIF(cId=NIL,"NIL",cId)
cTitle :=oControl:aControls[I]:GetText()
AADD(aNames,{oControl:aControls[I]:ClassName(),cId,cTitle})
AADD(aControls,oControl:aControls[I])
IF oControl:aControls[i]:CLASSNAME()="TFOLDER"
// Agrega los Controles de los Folders
aDialogs:=oControl:aControls[I]:aDialogs
FOR U=1 TO LEN(aDialogs)
FOR Z=1 TO LEN(aDialogs[U]:aControls)
oObjCtrl:=aDialogs[U]:aControls[Z]
cId :=CTOO(oObjCtrl:nResult,"C")
cId :=IIF(cId=NIL,"NIL",cId)
cTitle :=oObjCtrl:GetText()
AADD(aNames,{"["+STRZERO(U,2)+"]"+oObjCtrl:ClassName(),cId,cTitle})
AADD(aControls,oObjCtrl)
NEXT Z
NEXT U
ENDIF
NEXT
oSize:=Dialog("Ajustar Coordenadas "+oControl:ClassName(),"DEFCTRL.EDT",NIL,oDp:oFrameDp,.F.)
oSize:nTop :=MAX(oControl:nTop,1)
oSize:nLeft :=oControl:nLeft
oSize:nWidth :=oControl:nWidth
oSize:nHeight:=oControl:nHeight
bMove:={||oControl:Move(oSize:nTop,oSize:nLeft,oSize:nWidth,oSize:nHeight,.T.),.T.}
// ERRORSYS(.T.)
// Mover
oBtn := TBtnBmp():New(05,05,12,12,,,"BITMAPS\ARROW1.BMP",,{|Self|(oSize:nTop-=nAdd,oSize:nLeft-=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(05,20,12,12,,,"BITMAPS\ARROW2.BMP",,{|Self|(oSize:nTop-=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(05,35,12,12,,,"BITMAPS\ARROW3.BMP",,{|Self|(oSize:nTop-=nAdd,oSize:nLeft+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(18,35,12,12,,,"BITMAPS\ARROW4.BMP",,{|Self|(oSize:nLeft+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(32,35,12,12,,,"BITMAPS\ARROW5.BMP",,{|Self|(oSize:nTop+=nAdd,oSize:nLeft+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(32,20,12,12,,,"BITMAPS\ARROW6.BMP",,{|Self|(oSize:nTop+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(32,05,12,12,,,"BITMAPS\ARROW7.BMP",,{|Self|(oSize:nTop+=nAdd,oSize:nLeft-=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(18,05,12,12,,,"BITMAPS\ARROW8.BMP",,{|Self|(oSize:nLeft-=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
// Ampliar
oBtn := TBtnBmp():New(05,05+nSep1,12,12,,,"BITMAPS\ARROW1.BMP",,{|Self|(oSize:nTop-=nAdd,oSize:nLeft-=nAdd,oSize:nWidth+=nAdd,oSize:nHeight+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(05,20+nSep1,12,12,,,"BITMAPS\ARROW2.BMP",,{|Self|(oSize:nTop-=nAdd,oSize:nHeight+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(05,35+nSep1,12,12,,,"BITMAPS\ARROW3.BMP",,{|Self|(oSize:nTop-=nAdd,oSize:nWidth+=nAdd,oSize:nHeight+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(18,35+nSep1,12,12,,,"BITMAPS\ARROW4.BMP",,{|Self|(oSize:nWidth+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(32,35+nSep1,12,12,,,"BITMAPS\ARROW5.BMP",,{|Self|(oSize:nWidth+=nAdd,oSize:nHeight+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(32,20+nSep1,12,12,,,"BITMAPS\ARROW6.BMP",,{|Self|(oSize:nHeight+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(32,05+nSep1,12,12,,,"BITMAPS\ARROW7.BMP",,{|Self|(oSize:nWidth+=nAdd,oSize:nLeft-=nAdd,oSize:nHeight+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(18,05+nSep1,12,12,,,"BITMAPS\ARROW8.BMP",,{|Self|(oSize:nWidth-=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,)
// Coordenadas
@ 0.5,28 GET oGet1 VAR oSize:nTop picture "9999" valid EVAL(bMove)
@ 1.5,28 GET oGet2 VAR oSize:nLeft picture "9999" valid EVAL(bMove)
@ 2.5,28 GET oGet3 VAR oSize:nWidth picture "9999" valid EVAL(bMove)
@ 3.5,28 GET oGet4 VAR oSize:nHeight picture "9999" valid EVAL(bMove)
@ oGet1:nTop,oGet1:nLeft-35 SAY "L娄nea" PIXEL SIZE 30,NIL FONT oFontS
@ oGet2:nTop,oGet2:nLeft-35 SAY "Columna" PIXEL SIZE 30,NIL FONT oFontS
@ oGet3:nTop,oGet3:nLeft-35 SAY "Ancho" PIXEL SIZE 30,NIL FONT oFontS
@ oGet4:nTop,oGet4:nLeft-35 SAY "Alto" PIXEL SIZE 30,NIL FONT oFontS
TGet():New(1.4,2.4,{ | u | If(PCount()==0,nAdd,nAdd:= u ) },,,,"99",,,,,.F.,,.F.,,.F.,,.F.,.F.,,.F.,.f.,.f.,,.F.,,,,)
oBrw:= TXBrowse():New(oSize:oDlg )
oBrw:nColDividerStyle := 1
oBrw:nRowDividerStyle := 1
oBrw:lColDividerComplete := .t.
oBrw:nMarqueeStyle := 5
oBrw:bChange :={|oBrw|oControl:=aControls[oBrw:nArrayAt],oSize:nTop :=oControl:nTop ,oSize:nLeft :=oControl:nLeft ,oSize:nWidth :=oControl:nWidth,oSize:nHeight:=oControl:nHeight}
oBrw:SetArray(aNames)
oBrw:SetFont(oFont)
oBrw:lHScroll := .F.
oBrw:nRowSel := 1
oBrw:nTop := 58-10
oBrw:nLeft := 00
oBrw:nBottom := 110
oBrw:nRight := 180
oCol:=oBrw:aCols[1]
oCol:cHeader:="Control"
oCol:nWidth :=100
oCol:=oBrw:aCols[2]
oCol:cHeader:="ID"
oCol:nWidth :=20
oCol:=oBrw:aCols[3]
oCol:cHeader:="Contenido"
oCol:nWidth :=190
oBrw:CreateFromCode()
oBtn := TBtnBmp():New(120-5,05,15,15,,,"BITMAPS\FONT.BMP",,{|Self|oControl:SelFont()},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(120-5,20,15,15,,,"BITMAPS\COLORS.BMP",,{|Self|oControl:SelColor()},,,,.F.,.F.,,,,,!.T.,)
oBtn := TBtnBmp():New(120-5,40,15,15,,,"BITMAPS\SAVEPRJ.BMP",,{|Self|oSize:Close()},,,,.F.,.F.,,,,,!.T.,)
EVAL(bMove)
oSize:Activate({||.T.})
// oControl:SetFocus()})
RETURN NIL
FUNCTION CTRLMEMO(cFileEdt)
LOCAL oView,cMemo:=MEMOREAD(cFileEdt),oFont,lRet:=.F.
DEFINE FONT oFont NAME "CURIER" SIZE 0,-12
oView:=Dialog("Editar planos de Formulario "+cFileEdt,"VIEWMEMO.EDT")
@ .5,0 GET cMemo MULTILINE SIZE 325,150 FONT oFont
// TMultiGet():New(.5,0,{ | u | If(PCount()==0,cMemo,cMemo:= u ) },,325,150,oFont,.T.,,,,.F.,,.F.,,.F.,.F.,.F.,,,.F.,,)
@ 09,30 BUTTON " Grabar " ACTION MemoWrit(cFileEdt,cMemo)
@ 09,40 BUTTON " Cerrar " ACTION oView:Close()
oView:Activate()
RETURN lRet
// EOFjnavas wrote:cNavarro
Saludos.
Mi aplicacion es Open Source, el usuario pude reubicar los controles, asignar tama帽o, colores y fuentes.
1. En el sysmenu cree la opcion Activar modo dise帽o. Todos los controles les activo oControl:=.T.
2. Si es MDI el usuario puede arrastrarlos con el mouse.
3. Al salir del formulario, guardo en un archivo plano la geometria de cada control.
4. Cuando se inicia la ventana ON INIT leo el archivo TXT y reubico los controles.
Function CTOO() convierte en cadenas, puedes utilizar una similar de FW
// Programa 聽 : ADJCONTROL // Fecha/Hora : 27/05/2003 02:34:45 // Prop贸sito 聽: Ajustar Controles // Creado Por : Juan Navas // Llamado por: MenuSys de los MDI y Dialogos con Controles // Aplicaci贸n : Programaci贸n // Tabla 聽 聽 聽: Todas #INCLUDE "DPXBASE.CH" /* // Prueba del Ajuste de Controles */ FUNCTION MAIN() 聽 LOCAL oDlg,cNombre:="Nombre de Prueba",oGet 聽 DEFINE DIALOG oDlg 聽 聽@ 0,.5 SAY "Nombre de Prueba" 聽 聽@ 1,.5 GET oGet VAR cNombre 聽 聽 聽@ 2,.5 BUTTON "Ajustar" ACTION CTRLSETSIZE(oGet) SIZE 40,15 聽 聽@ 3,.5 BUTTON "Cerrar" ACTION oDlg:End() SIZE 40,15 聽 聽ACTIVATE DIALOG oDlg RETURN NIL FUNCTION CTRLSETSIZE(oControl) 聽 LOCAL oSize,bMove,oBtn1,oBtn2,oFont,nAdd:=4,nSep1:=40,I,oCol,cId,cTitle 聽 LOCAL oGet1,oGet2,oGet3,oGet4,oBrw,aNames:={},oFont,aControls:={},oFontS,nLen,aDialogs,U,Z,oObjCtrl 聽 DEFINE FONT oFontS NAME "CURIER" SIZE 0,-12 聽 AADD(aNames ,{oControl:ClassName(),ctoo(oControl:nResult,"C"),""}) 聽 AADD(aControls,oControl) 聽 nLen:=IIF(ValType(oControl:aControls)="A",LEN(oControl:aControls),0) 聽 FOR I=1 TO nLen 聽 聽 cId 聽 聽:=CTOO(oControl:aControls[I]:nResult,"C") 聽 聽 cId 聽 聽:=IIF(cId=NIL,"NIL",cId) 聽 聽 cTitle :=oControl:aControls[I]:GetText() 聽 聽 AADD(aNames,{oControl:aControls[I]:ClassName(),cId,cTitle}) 聽 聽 AADD(aControls,oControl:aControls[I]) 聽 聽 IF oControl:aControls[i]:CLASSNAME()="TFOLDER" 聽 聽 聽 聽// Agrega los Controles de los Folders 聽 聽 聽 聽aDialogs:=oControl:aControls[I]:aDialogs 聽 聽 聽 聽FOR U=1 TO LEN(aDialogs) 聽 聽 聽 聽 聽 聽FOR Z=1 TO LEN(aDialogs[U]:aControls) 聽 聽 聽 聽 聽 聽 聽 oObjCtrl:=aDialogs[U]:aControls[Z] 聽 聽 聽 聽 聽 聽 聽 cId 聽 聽:=CTOO(oObjCtrl:nResult,"C") 聽 聽 聽 聽 聽 聽 聽 cId 聽 聽:=IIF(cId=NIL,"NIL",cId) 聽 聽 聽 聽 聽 聽 聽 cTitle :=oObjCtrl:GetText() 聽 聽 聽 聽 聽 聽 聽 AADD(aNames,{"["+STRZERO(U,2)+"]"+oObjCtrl:ClassName(),cId,cTitle}) 聽 聽 聽 聽 聽 聽 聽 AADD(aControls,oObjCtrl) 聽 聽 聽 聽 聽 聽NEXT Z 聽 聽 聽 聽NEXT U 聽 聽 ENDIF 聽 NEXT 聽 oSize:=Dialog("Ajustar Coordenadas "+oControl:ClassName(),"DEFCTRL.EDT",NIL,oDp:oFrameDp,.F.) 聽 oSize:nTop 聽 :=MAX(oControl:nTop,1) 聽 oSize:nLeft 聽:=oControl:nLeft 聽 oSize:nWidth :=oControl:nWidth 聽 oSize:nHeight:=oControl:nHeight 聽 bMove:={||oControl:Move(oSize:nTop,oSize:nLeft,oSize:nWidth,oSize:nHeight,.T.),.T.} 聽 // ERRORSYS(.T.) 聽 // Mover 聽 oBtn := TBtnBmp():New(05,05,12,12,,,"BITMAPS\ARROW1.BMP",,{|Self|(oSize:nTop-=nAdd,oSize:nLeft-=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(05,20,12,12,,,"BITMAPS\ARROW2.BMP",,{|Self|(oSize:nTop-=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(05,35,12,12,,,"BITMAPS\ARROW3.BMP",,{|Self|(oSize:nTop-=nAdd,oSize:nLeft+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(18,35,12,12,,,"BITMAPS\ARROW4.BMP",,{|Self|(oSize:nLeft+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(32,35,12,12,,,"BITMAPS\ARROW5.BMP",,{|Self|(oSize:nTop+=nAdd,oSize:nLeft+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(32,20,12,12,,,"BITMAPS\ARROW6.BMP",,{|Self|(oSize:nTop+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(32,05,12,12,,,"BITMAPS\ARROW7.BMP",,{|Self|(oSize:nTop+=nAdd,oSize:nLeft-=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(18,05,12,12,,,"BITMAPS\ARROW8.BMP",,{|Self|(oSize:nLeft-=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 // Ampliar 聽 oBtn := TBtnBmp():New(05,05+nSep1,12,12,,,"BITMAPS\ARROW1.BMP",,{|Self|(oSize:nTop-=nAdd,oSize:nLeft-=nAdd,oSize:nWidth+=nAdd,oSize:nHeight+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(05,20+nSep1,12,12,,,"BITMAPS\ARROW2.BMP",,{|Self|(oSize:nTop-=nAdd,oSize:nHeight+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(05,35+nSep1,12,12,,,"BITMAPS\ARROW3.BMP",,{|Self|(oSize:nTop-=nAdd,oSize:nWidth+=nAdd,oSize:nHeight+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(18,35+nSep1,12,12,,,"BITMAPS\ARROW4.BMP",,{|Self|(oSize:nWidth+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(32,35+nSep1,12,12,,,"BITMAPS\ARROW5.BMP",,{|Self|(oSize:nWidth+=nAdd,oSize:nHeight+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(32,20+nSep1,12,12,,,"BITMAPS\ARROW6.BMP",,{|Self|(oSize:nHeight+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(32,05+nSep1,12,12,,,"BITMAPS\ARROW7.BMP",,{|Self|(oSize:nWidth+=nAdd,oSize:nLeft-=nAdd,oSize:nHeight+=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(18,05+nSep1,12,12,,,"BITMAPS\ARROW8.BMP",,{|Self|(oSize:nWidth-=nAdd,EVAL(bMove))},,,,.F.,.F.,,,,,!.T.,) 聽 // Coordenadas 聽 @ 0.5,28 GET oGet1 VAR oSize:nTop 聽 聽picture "9999" valid EVAL(bMove) 聽 @ 1.5,28 GET oGet2 VAR oSize:nLeft 聽 picture "9999" valid EVAL(bMove) 聽 @ 2.5,28 GET oGet3 VAR oSize:nWidth 聽picture "9999" valid EVAL(bMove) 聽 @ 3.5,28 GET oGet4 VAR oSize:nHeight picture "9999" valid EVAL(bMove) 聽 @ oGet1:nTop,oGet1:nLeft-35 SAY "L娄nea" 聽 PIXEL SIZE 30,NIL FONT oFontS 聽 @ oGet2:nTop,oGet2:nLeft-35 SAY "Columna" PIXEL SIZE 30,NIL FONT oFontS 聽 @ oGet3:nTop,oGet3:nLeft-35 SAY "Ancho" 聽 PIXEL SIZE 30,NIL FONT oFontS 聽 @ oGet4:nTop,oGet4:nLeft-35 SAY "Alto" 聽 聽PIXEL SIZE 30,NIL FONT oFontS 聽 TGet():New(1.4,2.4,{ | u | If(PCount()==0,nAdd,nAdd:= u ) },,,,"99",,,,,.F.,,.F.,,.F.,,.F.,.F.,,.F.,.f.,.f.,,.F.,,,,) 聽 oBrw:= TXBrowse():New(oSize:oDlg ) 聽 oBrw:nColDividerStyle := 1 聽 oBrw:nRowDividerStyle := 1 聽 oBrw:lColDividerComplete := .t. 聽 oBrw:nMarqueeStyle := 5 聽 oBrw:bChange :={|oBrw|oControl:=aControls[oBrw:nArrayAt],oSize:nTop :=oControl:nTop ,oSize:nLeft :=oControl:nLeft ,oSize:nWidth :=oControl:nWidth,oSize:nHeight:=oControl:nHeight} 聽 oBrw:SetArray(aNames) 聽 oBrw:SetFont(oFont) 聽 oBrw:lHScroll := .F. 聽 oBrw:nRowSel := 1 聽 oBrw:nTop := 58-10 聽 oBrw:nLeft := 00 聽 oBrw:nBottom := 110 聽 oBrw:nRight := 180 聽 oCol:=oBrw:aCols[1] 聽 oCol:cHeader:="Control" 聽 oCol:nWidth :=100 聽 oCol:=oBrw:aCols[2] 聽 oCol:cHeader:="ID" 聽 oCol:nWidth :=20 聽 oCol:=oBrw:aCols[3] 聽 oCol:cHeader:="Contenido" 聽 oCol:nWidth :=190 聽 oBrw:CreateFromCode() 聽 oBtn := TBtnBmp():New(120-5,05,15,15,,,"BITMAPS\FONT.BMP",,{|Self|oControl:SelFont()},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(120-5,20,15,15,,,"BITMAPS\COLORS.BMP",,{|Self|oControl:SelColor()},,,,.F.,.F.,,,,,!.T.,) 聽 oBtn := TBtnBmp():New(120-5,40,15,15,,,"BITMAPS\SAVEPRJ.BMP",,{|Self|oSize:Close()},,,,.F.,.F.,,,,,!.T.,) 聽 EVAL(bMove) 聽 oSize:Activate({||.T.}) // oControl:SetFocus()}) RETURN NIL FUNCTION CTRLMEMO(cFileEdt) 聽LOCAL oView,cMemo:=MEMOREAD(cFileEdt),oFont,lRet:=.F. 聽DEFINE FONT oFont NAME "CURIER" SIZE 0,-12 聽oView:=Dialog("Editar planos de Formulario "+cFileEdt,"VIEWMEMO.EDT") 聽@ .5,0 GET cMemo MULTILINE SIZE 325,150 FONT oFont 聽 // TMultiGet():New(.5,0,{ | u | If(PCount()==0,cMemo,cMemo:= u ) },,325,150,oFont,.T.,,,,.F.,,.F.,,.F.,.F.,.F.,,,.F.,,) 聽@ 09,30 BUTTON 聽" Grabar " ACTION MemoWrit(cFileEdt,cMemo) 聽@ 09,40 BUTTON 聽" Cerrar " ACTION oView:Close() 聽oView:Activate() RETURN lRet // EOF
FWH 25.12
Harbour/Hbmk2
Microsoft Visual C++
MySql 8.0
Antigravity
Saludos,
Voy a prepararte un ejemplo mas c贸modo para que logres mover los controles y finalmente restaurarlos..
Si deseas te envio sitio de descarga de mi aplicacion para que veas las funcionalidad para reubicar los controles y luego restaurarlos. En mi caso guardo las posiciones, colores y fuente en un archivo TXT y luego del ACTIVATE DIALOG on INIT ejecuto la restauraci贸n.
jnavas wrote:Saludos,
Voy a prepararte un ejemplo mas c贸modo para que logres mover los controles y finalmente restaurarlos..
Si deseas te envio sitio de descarga de mi aplicacion para que veas las funcionalidad para reubicar los controles y luego restaurarlos. En mi caso guardo las posiciones, colores y fuente en un archivo TXT y luego del ACTIVATE DIALOG on INIT ejecuto la restauraci贸n.
FWH 25.12
Harbour/Hbmk2
Microsoft Visual C++
MySql 8.0
Antigravity
Juan Navas
Me gustaria ver el ejemplo, para guardar y restaurar los objetos
Gracias
J. Ernesto Pinto Q.
Fwh_x64 2501, BCC++_x64 7_70 , Harbour 3.20, LopeEdit 5.8
jepsys@hotmail.com, jepsys@gmail.com
cnavarro wrote:Guardalo en un ini o en un dbf
FWH 25.12
Harbour/Hbmk2
Microsoft Visual C++
MySql 8.0
Antigravity
Buen dia
A mi tambien me interesa saber como se guarda en un ini
gracias
jairo Barbosa