#include "gui.ch" #include "trueSoft.ch" #include "common.ch" // ============================================================================ // Clase XEdit // ============================================================================ CLASS XEdit FROM TEdit PRIVATE: DATA FParentForm DATA FRequired DATA FLabelRequired DATA FImageRequired DATA FHintRequired DATA FOnRequired DATA FAutoCompleteLabel DATA FField DATA FEnabled METHOD GetNextRow METHOD GetCaption METHOD SetCaption METHOD SetRequired METHOD SetHintRequired METHOD SetField METHOD GetEnabled METHOD SetEnabled METHOD SetOnRequired PUBLIC: METHOD Create CONSTRUCTOR METHOD InitAutoCompleteLabel METHOD PadField METHOD Write METHOD EventOnEnter METHOD EventOnExit PROPERTY ParentForm READ DATA FParentForm PROPERTY NextRow READ METHOD GetNextRow PROPERTY Caption READ METHOD GetCaption WRITE METHOD SetCaption PROPERTY Enabled READ METHOD GetEnabled WRITE METHOD SetEnabled PROPERTY Field READ DATA FField WRITE METHOD SetField PROPERTY Required READ DATA FRequired WRITE METHOD SetRequired PROPERTY OnRequired READ DATA FOnRequired WRITE METHOD SetOnRequired PROPERTY HintRequired READ DATA FHintRequired WRITE METHOD SetHintRequired PROPERTY AutoCompleteLabel READ DATA FAutoCompleteLabel ENDCLASS /* * */ METHOD Create( oOwner ) CLASS XEdit Super:Create( oOwner ) ::FParentForm := oOwner ::FRequired := False ::FHintRequired := "Este campo es necesario" ::FEnabled := Super:Enabled ::Font:Assign( poEnviroment:DefaultFont ) ::OnEnter := { | oSender | ::EventOnEnter( oSender ) } ::OnExit := { | oSender | ::EventOnExit( oSender ) } RETURN /* * PRIVADO: */ METHOD SetOnRequired( bAction ) CLASS XEdit IF !Assigned( ::FLabelRequired ) WITH ::FLabelRequired := TLabel():Create( Self ) :AutoSize := False :SetBounds( 0, 0, 0, 2 ) :Align := alBottom :Brush:Color := clRed :Transparent := False ENDWITH WITH ::FImageRequired := XImage():Create( ::FParentForm ) :SetPos( ::Left + ::Width + 2, ::Top + (( ::Height - 16 ) / 2 )) :Hint := ::FHintRequired :Picture:Bitmap:Name := "@160Required" ENDWITH ENDIF ::FOnRequired := _eInstVar( Self, "OnRequired", bAction, "B", 1001 ) RETURN // -------------------------------------------------------------------------- METHOD PadField() CLASS XEdit IF ::Field:Alignment == taLeftJustify RETURN PadR( AllTrim( ::Caption ), ::Field:Len, " " ) ENDIF IF ::Field:Alignment == taRightJustify RETURN PadL( AllTrim( ::Caption ), ::Field:Len, " " ) ENDIF RETURN ::Caption // -------------------------------------------------------------------------- METHOD Write() CLASS XEdit IF ::FField:ClassName == "XFIELD" ? "Ok" ENDIF RETURN /* * Escritura de la propiedad Field */ METHOD SetField( oField ) CLASS XEdit IF oField:ClassName == "XFIELD" ::FField := oField ::Picture := oField:Picture ENDIF RETURN // ---------------------------------------------------------------------------- METHOD GetEnabled() CLASS XEdit RETURN ::FEnabled // ---------------------------------------------------------------------------- METHOD SetEnabled( lOnOff ) CLASS XEdit ::FEnabled := lOnOff ::ReadOnly := !lOnOff ::Cursor:Name := Iif( lOnOff, crIBeam, crDefault ) RETURN /* * METHOD EventOnEnter */ METHOD EventOnEnter( oSender ) CLASS XEdit IF ValType( ::Caption ) == "D" ::Caption := ::Caption ENDIF //IF Assigned( ::FOnRequired ) IF ::FRequired ::FLabelRequired:Visible := False ::FImageRequired:Visible := False ENDIF RETURN /* * METHOD EventOnExit */ METHOD EventOnExit( oSender ) CLASS XEdit IF ValType( ::Caption ) == "D" ::Caption := ::Caption ENDIF //IF Assigned( ::FOnRequired ) IF ::FRequired ::FLabelRequired:Visible := Empty( ::Caption ) //Eval( ::FOnRequired, Self ) ::FImageRequired:Visible := ::FLabelRequired:Visible ENDIF RETURN /* * PRIVADO: */ METHOD GetCaption() CLASS XEdit RETURN Super:Caption /* * PRIVADO: */ METHOD SetCaption( xValue ) CLASS XEdit Super:Caption := xValue IF ::FRequired ::FLabelRequired:Visible := Empty( ::Caption ) ::FImageRequired:Visible := ::FLabelRequired:Visible ENDIF RETURN /* * PRIVADO: */ METHOD SetRequired( lValue ) CLASS XEdit IF !Assigned( ::FLabelRequired ) // LABEL ::FLabelRequired := TLabel():Create( Self ) ::FLabelRequired:AutoSize := False ::FLabelRequired:SetBounds( 0, 0, 0, 2 ) ::FLabelRequired:Align := alBottom ::FLabelRequired:Brush:Color := clRed ::FLabelRequired:Transparent := False // IMAGE ::FImageRequired := XImage():Create( ::FParentForm ) ::FImageRequired:SetPos( ::Left + ::Width + 2, ::Top + (( ::Height - 16 ) / 2 )) ::FImageRequired:Hint := ::FHintRequired ::FImageRequired:Picture:Bitmap:Name := "@160Required" ENDIF ::FRequired := _eInstVar( Self, "Required", lValue, "L", 1001 ) RETURN /* * PRIVADO: */ METHOD SetHintRequired( cValue ) CLASS XEdit ::FHintRequired := _eInstVar( Self, "HintRequired", cValue, "C", 1001 ) RETURN /* * PRIVADO: */ METHOD InitAutoCompleteLabel() CLASS XEdit IF Assigned( ::FAutoCompleteLabel ) THEN RETURN ::FAutoCompleteLabel := XAutoCompleteLabel():Create( ::FParentForm ) ::FAutoCompleteLabel:AdjustTo( Self ) RETURN /* * Leer la propiedad NextRow */ METHOD GetNextRow() CLASS XEdit RETURN ( ::Top + ::Height )