Página 1 de 1

Vantagem do hb_DefaultValue()

Enviado: 08 Set 2025 19:05
por JoséQuintas
Olhem esse fonte

Código: Selecionar todos

Function GetControlSafeRow (i)

RETURN IF (ValType(ControlByIndex( I ):CTRL018) == "N", ControlByIndex( I ):CTRL018, 0)   // for SplitBox

Function GetControlSafeCol (i)

RETURN IF (ValType(ControlByIndex( I ):CTRL019) == "N", ControlByIndex( I ):CTRL019, 0)   // for SplitBox
E que tal isto:

Código: Selecionar todos

FUNCTION GetControlSafeRow( i )

   RETURN hb_DefaultValue( ControlByIndex( I ):CTRL018, 0 )

FUNCTION GetControlSafeCol( i )

   RETURN hb_DefaultValue( ControlByIndex( I ):CTRL019, 0 )
Futuramente pode ser o controle ao invés de Index

Código: Selecionar todos

FUNCTION GetControlSafeRow( oControl )
   RETURN hb_DefaultValue( oControl:CTL018, 0 )

FUNCTION GetControlSafeCol( oControl )
   RETURN hb_DefaultValue( oControl:CTL019, 0 )
Então....
Olhando assim a alteração é simples.
Mas pensem nisso ocorrendo 16.000 vezes.
Só fazendo por etapa, pra alteração ser mais segura.
Chega uma hora que os números vão se embaralhando na cabeça.

Voltando ao hb_DefaultValue()
Ele ajuda a tornar o fonte mais legível.
Se o tipo for diferente do default, assume o default.

E a gente aproveita o fonte economizado pra deixar o fonte ainda mais claro, renomeando variável por exemplo

Código: Selecionar todos


FUNCTION GetControlSafeRow ( nIndex )

   RETURN hb_DefaultValue( ControlByIndex( nIndex ):CTRL018, 0 )   // for SplitBox

FUNCTION GetControlSafeCol ( nIndex )

   RETURN hb_DefaultValue( ControlByIndex( nIndex ):CTRL019, 0 )   // for SplitBox
Nessas horas que você se convence que vale a pena não duplicar nomes, igual o uso de WITH OBJECT.