Hola Foro,
Requiero una ayuda, alguien sabe como poner en un dialogo una lista de campos editables, pero si
estos son muchos, deseo que _ se desplacen hacia arriba. Cuando la lista de campos
se mayor al alto definido en el dialogo inicial.
Recuerdo que tiempo atras, Antonio puso un ejemplo, pero no lo he podido encontrar en el foro.
Si alguien tiene alguna idea , ejemplo o sabe donde estar, lo agradeceria mucho.
Saludos,
Dialogo con campos con scroll automatico
Re: Dialogo con campos con scroll automatico
João Santos - São Paulo - Brasil
Re: Dialogo con campos con scroll automatico
Muchas gracias Karinha, partire mirando lo que me señalas.
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Dialogo con campos con scroll automatico
FWH provides TScrollPanel class specifically for this purpose. This class was first introduced in FWH1204 and improved in later versions.
The default edit dialog of TDataRow class (introduced in FWH1305) uses the TScrollPanel. To see the functionality, please try this single line test program.
Click on Add or Edit button to see the scrolling dialog.

The next program shows how to program a dialog with scroll panel.

The default edit dialog of TDataRow class (introduced in FWH1305) uses the TScrollPanel. To see the functionality, please try this single line test program.
Code: Select all
XBROWSER "c:\fwh\samples\diario.dbf" FASTEDIT // or any dbf with many fields

The next program shows how to program a dialog with scroll panel.
Code: Select all
#include "fivewin.ch"
REQUEST DBFCDX
//----------------------------------------------------------------------------//
function Main()
local oRec
SetGetColorFocus()
SET DATE ITALIAN
SET CENTURY ON
RDDSETDEFAULT( "DBFCDX" )
USE CUSTOMER NEW SHARED
GOTO 10 // any record to be edited
oRec := TDataRow():New( "CUSTOMER" )
EditDialog( oRec )
CLOSE DATA
return nil
function EditDialog( oRec )
local oDlg, oFont, oBold, oPanel
local lNew := ( oRec:RecNo == 0 )
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
DEFINE FONT oBold NAME "TAHOMA" SIZE 0,-14 BOLD
DEFINE DIALOG oDlg SIZE 500,400 PIXEL TRUEPIXEL FONT oFont ;
TITLE "FWH TScrollPanel"
@ 20,20 SAY If( oRec:RecNo == 0, "ADD CUSTOMER", "EDIT CUSTOMER : " + STRZERO( oRec:RecNo, 3 ) ) ;
SIZE 460,24 PIXEL OF oDlg CENTER UPDATE FONT oBold
//
oPanel := TScrollPanel():New( 60, 20, 300, 480, oDlg, .t. )
oPanel:SetFont( oDlg:oFont )
//
@ 340,020 BUTTON "SAVE" SIZE 100,40 PIXEL OF oDlg ACTION ( oRec:Save(), oDlg:End() )
@ 340,380 BUTTON "CANCEL" SIZE 100,40 PIXEL OF oDlg ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED ON INIT ( PlaceControls( oPanel, oRec ) ) ;
ON PAINT oDlg:Box( 59, 19, 302, 490 )
RELEASE FONT oFont, oBold
return nil
function PlaceControls( oPanel, oRec )
local nRow := 30
@ nRow, 20 SAY "First :" SIZE 080,24 PIXEL OF oPanel RIGHT TRANSPARENT
@ nRow, 110 GET oRec:First SIZE 300,24 PIXEL OF oPanel
nRow += 30
@ nRow, 20 SAY "Last :" SIZE 080,24 PIXEL OF oPanel RIGHT TRANSPARENT
@ nRow, 110 GET oRec:Last SIZE 300,24 PIXEL OF oPanel
nRow += 30
@ nRow, 20 SAY "Street :" SIZE 080,24 PIXEL OF oPanel RIGHT TRANSPARENT
@ nRow, 110 GET oRec:Street SIZE 300,24 PIXEL OF oPanel
nRow += 30
@ nRow, 20 SAY "City :" SIZE 080,24 PIXEL OF oPanel RIGHT TRANSPARENT
@ nRow, 110 GET oRec:City SIZE 300,24 PIXEL OF oPanel
nRow += 30
@ nRow, 20 SAY "State :" SIZE 080,24 PIXEL OF oPanel RIGHT TRANSPARENT
@ nRow, 110 GET oRec:State SIZE 300,24 PIXEL OF oPanel
nRow += 30
@ nRow, 20 SAY "Zip :" SIZE 080,24 PIXEL OF oPanel RIGHT TRANSPARENT
@ nRow, 110 GET oRec:Zip SIZE 300,24 PIXEL OF oPanel
nRow += 30
@ nRow, 20 SAY "HireDate :" SIZE 080,24 PIXEL OF oPanel RIGHT TRANSPARENT
@ nRow, 110 GET oRec:HireDate SIZE 300,24 PIXEL OF oPanel
nRow += 30
@ nRow, 20 SAY "Married :" SIZE 080,24 PIXEL OF oPanel RIGHT TRANSPARENT
@ nRow, 110 CHECKBOX oRec:Married PROMPT "" SIZE 24,24 PIXEL OF oPanel
nRow += 30
@ nRow, 20 SAY "Age :" SIZE 080,24 PIXEL OF oPanel RIGHT TRANSPARENT
@ nRow, 110 GET oRec:Age SIZE 040,24 PIXEL OF oPanel PICTURE "99" RIGHT
nRow += 30
@ nRow, 20 SAY "Salary :" SIZE 080,24 PIXEL OF oPanel RIGHT TRANSPARENT
@ nRow, 110 GET oRec:Salary SIZE 100,24 PIXEL OF oPanel PICTURE "999,999.99" RIGHT
nRow += 30
@ nRow, 20 SAY "Notes :" SIZE 080,24 PIXEL OF oPanel RIGHT TRANSPARENT
@ nRow, 110 GET oRec:Notes SIZE 300,24 PIXEL OF oPanel
oPanel:SetRange() // call this after defining all controls
return nil

Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: Dialogo con campos con scroll automatico
Mr. Rao MUCHAS GRACIAS !!
Eso es justo lo que necesito.., pues los datos de edicion del dialogo , dependeran , de las columnas
que tenga el archivo a leer.
Saludos,
Carito
Eso es justo lo que necesito.., pues los datos de edicion del dialogo , dependeran , de las columnas
que tenga el archivo a leer.
Saludos,
Carito