A InputWindow() é uma caixa de diálogo muito útil para quem precisa por exemplo: parâmetros para geração de um relatório. Pois nesses casos você não necessita criar uma nova janela somente para isso. A InputWindowEx() é uma extensão dessa mesma funcionalidade.Abaixo segue um código de utilização na prática da InputWindowEx().
*****************************************
Function PegaParametros( pAlias, pOrdem )
Local vDia := StrZero( LastDayOM( Date() ), 2 )
Local vMes := StrZero( Month( Date() ), 2 )
Local vAno := StrZero( Year( Date() ), 4 ) )
Local vDatI := CToD( '01' + '/' vMes + '/' + vAno )
Local vDatF :=CToD( vDia + '/' vMes + '/' + vAno )
Local aLabels := {}, aValues := {}, aFormats := {}, aRetx := {}
AAdd( aLabels, 'Data Início' )
AAdd( aValues, vDatI )
AAdd( aFormats, { 70, 'DP', 80, , } )
AAdd( aLabels, 'Data Fim' )
AAdd( aValues, vDatF )
AAdd( aFormats, { 70, 'DP', 80, , } )
AAdd( aLabels, 'Cópias')
AAdd( aValues, 0 )
AAdd( aFormats,{ 70,'TN',80,,'9999'})
AAdd( aLabels, 'Motivo do Cancelamento' )
AAdd( aValues, Nil )
AAdd( aFormats, { , , , ,'BOLD' } )
AAdd( aLabels, 'Motivo 1' )
AAdd( aValues, Space( 70 ) )
AAdd( aFormats, { 70, 'TX', 200, , } )
AAdd( aLabels, 'Motivo 2' )
AAdd( aValues, Space( 70 ) )
AAdd( aFormats, { 70, 'TX', 200, , } )
aRetx := InputWindowEx( 'Parâmetros Listagem', aLabels, aValues, aFormats, , , .T. )
// aRetx[1] -> Data inicial -> Data
// aRetx[2] -> Data inicial -> Data
// aRetx[3] -> Número de cópias -> Numérico
// aRetx[4] -> Label -> Sem efeito
// aRetx[5] -> Motivo 1 -> Caracter
// aRetx[6] -> Motivo 2 -> Caracter
If aRetx[1] == Nil
Return
Else
xNCopias := 1
Do While xNCopias <= aRetx[3] ( pAlias )->( DBSetOrder( pOrdem )
( pAlias )->( DBSeek( DToS( aRetx[1] ) ) )
ProceLista( aRetx[1], aRetx[2] )
xNCopias++
EndDo
EndIf
( pAlias )->( RLock() )
( pAlias )->Motivo1 := aRetx[5]
( pAlias )->Motivo2 := aRetx[6]
( pAlias )->( DBUnLock() )
Return
*****************************************
Function PegaParametros( pAlias, pOrdem )
Local vDia := StrZero( LastDayOM( Date() ), 2 )
Local vMes := StrZero( Month( Date() ), 2 )
Local vAno := StrZero( Year( Date() ), 4 ) )
Local vDatI := CToD( '01' + '/' vMes + '/' + vAno )
Local vDatF :=CToD( vDia + '/' vMes + '/' + vAno )
Local aLabels := {}, aValues := {}, aFormats := {}, aRetx := {}
AAdd( aLabels, 'Data Início' )
AAdd( aValues, vDatI )
AAdd( aFormats, { 70, 'DP', 80, , } )
AAdd( aLabels, 'Data Fim' )
AAdd( aValues, vDatF )
AAdd( aFormats, { 70, 'DP', 80, , } )
AAdd( aLabels, 'Cópias')
AAdd( aValues, 0 )
AAdd( aFormats,{ 70,'TN',80,,'9999'})
AAdd( aLabels, 'Motivo do Cancelamento' )
AAdd( aValues, Nil )
AAdd( aFormats, { , , , ,'BOLD' } )
AAdd( aLabels, 'Motivo 1' )
AAdd( aValues, Space( 70 ) )
AAdd( aFormats, { 70, 'TX', 200, , } )
AAdd( aLabels, 'Motivo 2' )
AAdd( aValues, Space( 70 ) )
AAdd( aFormats, { 70, 'TX', 200, , } )
aRetx := InputWindowEx( 'Parâmetros Listagem', aLabels, aValues, aFormats, , , .T. )
// aRetx[1] -> Data inicial -> Data
// aRetx[2] -> Data inicial -> Data
// aRetx[3] -> Número de cópias -> Numérico
// aRetx[4] -> Label -> Sem efeito
// aRetx[5] -> Motivo 1 -> Caracter
// aRetx[6] -> Motivo 2 -> Caracter
If aRetx[1] == Nil
Return
Else
xNCopias := 1
Do While xNCopias <= aRetx[3] ( pAlias )->( DBSetOrder( pOrdem )
( pAlias )->( DBSeek( DToS( aRetx[1] ) ) )
ProceLista( aRetx[1], aRetx[2] )
xNCopias++
EndDo
EndIf
( pAlias )->( RLock() )
( pAlias )->Motivo1 := aRetx[5]
( pAlias )->Motivo2 := aRetx[6]
( pAlias )->( DBUnLock() )
Return