FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour MOVER OBJETOS EN TIEMPO DE EJECUCION
Posts: 39
Joined: Tue Mar 26, 2013 02:09 PM
MOVER OBJETOS EN TIEMPO DE EJECUCION
Posted: Mon Jun 01, 2015 05:59 PM

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!!!

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: MOVER OBJETOS EN TIEMPO DE EJECUCION
Posted: Mon Jun 01, 2015 06:06 PM

Revisa el ejemplo FWH\samples\design.prg

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 39
Joined: Tue Mar 26, 2013 02:09 PM
Re: MOVER OBJETOS EN TIEMPO DE EJECUCION
Posted: Wed Jun 03, 2015 02:37 PM

Gracias Antonio.. lo revisare.

Posts: 39
Joined: Tue Mar 26, 2013 02:09 PM
Re: MOVER OBJETOS EN TIEMPO DE EJECUCION
Posted: Wed Jun 03, 2015 05:52 PM

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!!!!

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: MOVER OBJETOS EN TIEMPO DE EJECUCION
Posted: Wed Jun 03, 2015 06:11 PM

Guardalo en un ini o en un dbf

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: MOVER OBJETOS EN TIEMPO DE EJECUCION
Posted: Wed Jun 03, 2015 08:54 PM
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

Code (fw): Select all Collapse
// 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
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: MOVER OBJETOS EN TIEMPO DE EJECUCION
Posted: Thu May 30, 2019 04:17 PM
jnavas 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

Code (fw): Select all Collapse
// 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


Gracias Sr. Juan

Me puede mostrar como esta compuesta la funcion Dialog() para poder ejecutar su ejemplo ?

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: MOVER OBJETOS EN TIEMPO DE EJECUCION
Posted: Fri May 31, 2019 02:32 AM

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.

Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: MOVER OBJETOS EN TIEMPO DE EJECUCION
Posted: Fri May 31, 2019 11:15 AM
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.


Gracias Sr. Juan, por ahora me gustaria el ejemplo que coloco en el foro

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 162
Joined: Tue Feb 03, 2009 10:08 PM
Re: MOVER OBJETOS EN TIEMPO DE EJECUCION
Posted: Tue Jun 04, 2019 01:40 PM

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

Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: MOVER OBJETOS EN TIEMPO DE EJECUCION
Posted: Tue Jun 18, 2019 12:28 PM
cnavarro wrote:Guardalo en un ini o en un dbf


Hola, tiene un ejemplo como se guarda en un .ini ?

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 195
Joined: Fri Jan 23, 2009 02:50 AM
Re: MOVER OBJETOS EN TIEMPO DE EJECUCION
Posted: Tue Jun 18, 2019 05:39 PM

Buen dia
A mi tambien me interesa saber como se guarda en un ini

gracias

jairo Barbosa

Continue the discussion