Clases en Visual Foxpro 9-Libre

Post on 25-Jan-2016

48 views 7 download

description

fox pro para principiantes

Transcript of Clases en Visual Foxpro 9-Libre

����

��������

����

������� ���������

�������������� ��������

������

������������ ���������������

���������������������

���

������Introducción ................................................ 3

Como se llegó a las clases .................................. 4

Beneficios al usar clases ................................... 6

Características de las cosas que existen .................... 7

Propiedades, métodos y eventos .............................. 9

Clases y objetos ............................................ 10

Clasificación de las clases ................................. 11

Ejemplo Nº 1 ................................................ 12

Ejemplo Nº 2 ................................................ 15

Simplificando la escritura .................................. 17

Clases base ................................................. 19

Como crear subclases ........................................ 23

Bibliotecas de clases ....................................... 24

Ejemplo Nº 4 ................................................ 25

Protegiendo y ocultando miembros de las clases .............. 32

Modelando objetos ........................................... 37

Creando formularios por programa ............................ 38

Comandos, funciones y métodos usados en la P.O.O. ........... 40

Como acceder a una propiedad de la clase padre .............. 43

Como ejecutar un método de la clase padre ................... 45

Una clase label desplazante ................................. 48

Una clase label titilante ................................... 52

Una clase label sombreada ................................... 53

Una clase label para títulos ................................ 55

Una clase de botones ........................................ 59

Una clase para mostrar fotografías .......................... 60

Varias clases para ingresar datos ........................... 66

Agregar un formulario a otro formulario ..................... 69

Métodos ACCESS y ASSIGN ..................................... 71

El objeto _SCREEN ........................................... 74

Manejo de errores en la P.O.O ............................... 76

Automatización de Word ...................................... 78

Automatización de Excel ..................................... 81

Una clase grilla mejorada ................................... 83

Creando un constructor ...................................... 85

La función BINDEVENT() ...................................... 88

¿Se puede convertir a VFP en un lenguaje fuertemente tipeado? 89

Trucos y consejos ........................................... 92

Conclusión .................................................. 95

���������������������

���

����������������� ������

���������� ��� ����������!�"��#��$���$�����������������%�����$��������&���%�� �'�$��%�� #�� ��$������ ()�"����* �� �� ��� �����+��� ��+,� #�� �� �� ���������������������� ��+,�#�� �� ���#������� ���)-������#�������.��/����0�����������$������$��������$�����������+����������0������� ��#������/��������������� 1������� � �����$��������0�������$�������$#����������#������,���������-��������"#����2#������������������������ ����#���������#�����+������������������������$,��,#������������#���/��� 3�/����$������+���������������#�� ��$�����0�����#������$���0��,������ �����������$����� 4��$��%�� ���$#����$��%��#�� ��$�� ��� ��� ���#����0�� ���� �� )������ �� ���$#�&�� � ���� ����$����� .� �$#������� �� � $����� �� ��� 0����������������������#, ������$/�5����0��������������������$#�������#��� �����������$���� ������ ��%�������$���%����� .��������������#�� ��$����6���������)��$��������378 �����������,�����$��$����#���������������������������$����� ��� ����������$�������,/�������������!�"��9������������$#�����%�������� �0���)�����������0��������� ��� �����$��%��� �� ��������� ��$/�5��#����/���0�������������������3���������0������9����/�����,������:����������$�����#���� ���$�������� ���������,�

���������������������

�;�

��������������������������� <�� #�� ���� $�� ��$'� ��= (>#�� �5 �� ��/��-� �#������ � ���� ������ ����������&�������%�������$�%����$��/�����������?* ������#����������#�� ����%���$����#�����4�������� .� ���#��$���� ��� �������#�� ��$����� @7�/���!�������A����� ����B �� ��������/����$,����� �������%�/-�#����������0���������.�������� ������������� ���-� �������� ���� � �� �� �� ��������/� �� �� �� ������ �-��� ��� #�� ��$� �����/��������������6�C�@���B�.���������)�������#�� ��$���/-��/���/������$����� ��������� �$#���/�� �� ������ �������� ���-�$���)������ � �������� �)��������$����$#������#�� ����������/�����/������%��-�� �����),���$������#����������� �$#����� �������� ����� ���0����/�������#'/������ ��� �� ��������� 0���/��� �� ����� #����� � �� �� #�� ��$� ����� )��������$���� �����-� �� ��#�� ��$����#����/� �����0����/�����-���������0����#����������������-������� ���� )��$� �� #�� ��$�� ��������$���� �� �� ����$��� (#�� ��$����� �#� %����*#�� ���������������/-�����#�#����)�������#�� ��$�����$����#����-���#��������$�����������������#� %�������������$#��$-������� �)�������0�����%������#�#������ ������/��- ��)���,#�+�� ���-��� ������������������� �����/�������������D� �����/���-�������#� %����� .� ��� #��/��$� ��� �� #�� ��$����� �#� %���� ��� �� �� ��$��-��$��%�������������$����)-�������� ������A��������������/�������������� ������$�/�$��%����$#������#��������/��� ����(����� ����*���&����������0���������� .�#����� ����#��������$��0������������$��$���)�$���6�C����- )�� ��0������ �� �� �� ���$� (#�� ��$����� ������������*� .� ���� $������� -�#�����$/����������������������������������������������������������������#�=

1��4ED.FF.G11�

�..�C F F <GCED ���$������� D�(#�� ��$�����������������*)���� ����0�����D������������������ ������$��-����#�� ��$�����$���)����#�� ��$�����$�����$��%-��$����$�������#�� �� ����� �� ��������� ���#�� ��$�� ����$���������� ���$#�#��� )�����+������#���������H��$����$#������������ ���$��%������� ������������

���������������������

�I�

��� �� 4������� �� ���$��� �%-� >�� �5? #�� �� ��� �� �� (#�� ��$�����������������* ��� $��%� $���� �� �� (#�� ��$����� �#� %����* �'� ���-� �� ���#��/��$�= �� ��� ),��� ���$#��+�� �� ���� � )����� #�� ���� � �� �� ����� �� ���#�������� ���������� � ���� .������� �� #���� �� ��$� ����� ��� �� � ��$���� ��%���J��� �� �����#��/��$���3����#��+���%���J��� �����#��/��$�����$������#�� ���$#�� > �5 �� #���� %����? K������� � ����������� #�� ����� >G� )������� ���������?D�����������#�������>G�)������������������?D�����������#������� 3��� �����������/�������� � �������+���������$����������=>���������$��%-��$�$,�),����$��%-��$�$,��,#������������������ ������#�������� ��0��0��������/����?���$,��������� ��"�����#���������$��/�����������������$��/���#��/������������������$��%�$,������$� ���'� .�#�� ��$�����$��%��0���������� �����������������/�������� �)�����$����$������� ��� ������%�/-������������������������K��+,��'$��$�� ��+,�����#�� ��$���������-��������������� ��3���0���0��������/�������������$�=(����0������������*�H#������#�������0�����/��-������0�����$��%��������� D� #�� ��$����� �� �����+� ������ �� ���$� (��������� � ��� �/�����* � �� ���/��0�� ��$� �� �� ���������� � ��$� �� @�/���� �������� �� ��$$�� B ���� �5�� ��������������$��=

�� �� ��$������#� %������ �� ��$������������������� �� ��$�������������������/�����

.�����@�� ��$�������������������/�����B���0����/���������������

��� )�������� �� ���� � ���� 0����/��� �� ���������� ������� @�� ��� ����� �����=(����#�������*B �� �� ���� �� ��� .�� )������� � �� �� ���0�� )�������������� ���������������� �����������#�� ��$������

�������

��#��������������/����

L5�����@!���������������$������B�������/����

1�� ��$�GM�

���������������������

�N�

���������������������� 7����� �� ���� ������ �� #����� ����������� �#���������� ���$���� ������� ����$�������$,��,#���$���� ��������������������+��H� ���/������$��=

�� ������� �� !" � # �$%&' ( .�� �� ��)��� �� �����/�� �� ���� � )����� ��� ����0�+���� ���#�����������$��%���#��������������������

�� �������)*$��*+�'�� �)%!" ! #(.�������������� ��������������$,������������ �!+%,$�'%+��!(D� ��%�������#������������ �#����������������������

���#��������#��� ����%��������)��������������������������#������������0��� ���� ����� ��0�������#������������� ��������������� ��0���

�� �&$"#%++��!( K�� #��$��� ������������ �� �� �� ����$���� �� ��������� ���#�����#����#���������������/�����0���

�� �# %+��!�� �$�&+'%$ $(<����/�������������������0��������������� ��#����������������@�����$������ ����B�������������-��������������������$,��� ������������-������������������

�� �*$� �*+�'� %,# !��-%. � � � �"#�$� ' !��%. $� � � ,#��#%)%+��!(L��%�� �� ������0�� ��� ����� �� #�� ��$����� �����+�� ������� 3� �#�����$�� � �����+��������������!�"�����������#�����������0���� ���������������,$,�),����

���������������������

�O�

����������������������������/��� �����

C��� �� �� �"���� �� �� <��0���� ����� �� ���� ��������-������ �� ������ �������)����������)��������������������������"��������������$#���#���������������������$����#��������$�&�����0�������������/����������$���������� �����,������������������ C�$�$��#�����$#�����$���=

�� ���������$�&� ����#����$������$������� ������������������$/������������������ ����� ��� )��$�� �� #���� ��� ������ ����� ��������� �0������

�������������� ���, %��%� �� �� $������� @� $,� �� ���B= $������ %������ #������

��$�����#�,������������ �������#��� ����#����$������P��� ��$���� �������#������� ����

C������������� �������� ���������$��������$��,#�,� �%� $�

���$,���� ���������������"����������$/�5�#����������+��������������� �� #����� %���� �� �� C�$�$�� �%��� ��$� ���$#�� �� ����$�0��� ����� �������#��#���������$�=

�� ��$�&��� ������� )��$��� $��������� #����� �������������$������ ��#�����$/����/�� �������+��� ��$/�����)�/��������� �&���)�/���������� #������� ����

������$,��������$�0��#���������+������������������$�=

�� ���������� ������������� ����������� ��������+ �������� ������������%��� �����������)������ �#� �����)������ ����

C����� ��#����%����������$�0��������)0"���$�

���������������������

�Q�

<���/ ��#������������)0"���$������ 1 !"�$(>K�5���� 1 !"�?.���)0"��� �������������� ����#���������������

.� �� ���$#�� ��� ����$�0�� �� 1 !"� �� �� �� �������� �� �� ������� ���

��������������������#������������������� �������������� ������$,����$������� ��������$�0����$������������������������-������

.����������)0"����+�)2!���� ��%���������$�0��#�� ���������������

#���� ��%��������� 1 !"����� ��%���������$�0��#���-����������������������������@����������������$��=���#���������0����B�

.�����$�0����$��0�$,��,#���#�� ��������������#�������������������

$��0�$,������$����#�� ���������#�����������������#�� ���#������)�����.������)0"���$�+�)�! $�.���������� �� ���,����������� ����$�0�� �� ��5�����/�%����� �������������������������������������#�����5��������,���������������$�0�� �������� ���������������� �������.����%���������$�0��#���-��������������$#���������������@����������� �������������#�������������������������������������B�.������ 1 !"�� ��������/��$����� ������$�����������$�����$�������)0"������� ���������������)0"���$�+�)�! $�

���������������������

�9�

����������3��4������5��������� <��,#�,� �%��������������-����� ��#�������/����@������������$�&����#��������B <�)0"�������������� �������+����/�����

�� 3�����#���� �����������@��/���/��������������)������ ���������B������������)0"����+�)2!���$#��$����)0"���(

�� 3� �� �� �� #���� �� �� ������� #��� � ���$���� �� �����+� #�� �����������%��%� ���������������������������� 1 !"�(

� C��������/�����������,#�,� �%� $#�������$������ ����������)0"���$��� 1 !"�$�

<��$���� ��� ������ ��� ����� ��� ������ ��� %��� �� #�#��� ��� /������� ��+�#���� ������ ,#�,� �%� $� <�� 0���� ��� $����� �� ����$�0��� �� ����0����� �����$#�����������#���������$/�5�������)0"���$� .�����������#�� ��$�����$#���������� 1 !"��� �����������#�������������������������������0������ ��#���������/�����+ ���������$�����������H%��$��%�� 1 !"�$$,����$���0��,$,���������� >7�$� ������ ��� �� �� ��)0"���� +�)2! � �� �� �� 1 !"�? 3� �� �������#�� �� �� #�� ��$���� �� #���� �� �� ������� �������� �� ��)0"���� +�)2!� 3� ������������ ����#�� ��$������%���#������������������ 1 !"�� �������$�� ���������� 1 !"�$���)0"���$#�������������)0"���$��� 1 !"�$� H �� �� ����� ��� 1 !"�$ ��� )0"���$� �� )��$� �� #�� ��$����� ���"����$������$��$����'���� ��0��-�������������������,�� <�� ,#�,� �%� �� � ��0������ � ��� 0����/��� #��� ����$���� #���� ���������������������������.���������/��������)����������� <�)0"������ ��0���������,#�+ ��)� !"��������!+��!�#�������$����#�������������������������������.���������/��������)����������� D��#�� ��$������#������������������)0"���$ ��������#�����#���������� ���0�� 1 !"�$� H �� �������� �� �� ��������� ����� ���0��� �� �� �� ������!�"��������������� ��#���������������

���������������������

����

�������5����������6/�0� $��!%�+'%$ 7��� .� ��� #������ �� ���� � )����� �� �� �����+� ��$� �� $����� ��� ���� ������0��,��&. "�$ �������,���������������������������-����������+'%$ ���� D�� #�� ��$������ ��)���$�� +'%$ $� ��� ������ ���,� ��$#������ #��,#�,� �%� $�#��)0"���$(��� .�� �� ��)��� �� �� ���������� ������ @�� ���� �� ����= ����#�������B ������������#������� ��$����������������� ��%��%�����#���)���� ����������������-������ �������,��� �����/������������$�=� ��!�#�'%+'%$ �6/�0� $��!��&. "�7 7���������)������+'%$ ����#���)��������������������-������@#��#��������$5�����B �� �����,� ����&. "�$�����+'%$ �#����'����"������ '��&. "� ��#����������������-���������� ���"�������&. "��������������������-�����������+'%$ ������/����������6/�0�$��!���+%#�����������!��&. "�7� 7�������&. "� ����� �����������������-�����������+'%$ �����������������������

���������������������

����

������������������������� D��+'%$ $#����������)�������� '���=

�� C�#��� ����/�������� ��� ��

� �2!�$����,��

o� 7����������o� 7������

<��+'%$ �� ����������� ������#���� ����� ��&. "�$ �������+'%$ $ ������

����� .��$#��� �� +'%$ $ ������������ ��� ��� )��$�������� ��� ������������� ���$�������#, ������� ������� <��+'%$ �������������������#�����������������+'%$ �����������������������+'%$ $�������������������$5��������/����@B�G�#������ �� �������/������ �2!�$��1�$�&�'��%�

o� ����/��o� G�0���/��

D��+'%$ $0���/��� @���$#���= )��$�������� ��� ������ ������� �$, ����B#�����

0���� �� ��$������ �� �� ��$#�������� D�� �� 0���/��� @���$#���= ��$��� �����$B ��#�����0�������%��)��$���0������� �2!�$���#�� !

o� A����������+'%$ ����������������o� A����������+'%$ ����������

���������������������

����

���������8�9� .� ���� ���$#�� ��)�����$�� ��� +'%$ ���$��� .�3�G� @#�� �������� ��� �/������������$/��������+'%$ $�������/������� ������������#�����B.�.LD�����6Local loNovia1, loNovia2

CLEAR

loNovia1 = CreateObject("PERSONA")

loNovia1.cNombre = "Marcela"

loNovia1.dFechaNacimiento = CtoD("07/10/1980")

loNovia2 = CreateObject("PERSONA")

loNovia2.cNombre = "Silvia"

loNovia2.dFechaNacimiento = CtoD("28/09/1988")

loNovia1.MostrarDatos()

loNovia2.MostrarDatos()

Release loNovia1, loNovia2

Return

*

*

DEFINE CLASS PERSONA AS CUSTOM

cNombre = Space(20)

cApellido = Space(20)

dFechaNacimiento = {}

PROCEDURE MostrarDatos

? This.cNombre, This.dFechaNacimiento

RETURN

ENDDEFINE

*

*

�:,'�+%+��!� ��$���� �� ���������� ��� 0����/��� ������� ���$���� ��G�0��� � ��G�0������#����0�$�����D������(�*��������� ��)��� �������0����/��������D������(�* ������ ���� ��)��� �������/�����G���������������$����-����0����/������$/�5������#���-�%�/�����$���G�0����G�0����%�/����)���������#��)����$�����#�����������0������ ���������+�#���%����$,��������/�������� �)������ D�� ����������&. "�/���������+'%$ .�3�G� �����,��)�������)������� #�� ��$��� ��� �� �� ���$� ��������� ��� � ����� .� �$#������� �������� �� �����)�����������+'%$ $���$#����/�������/������)�������#�� ��$��>�� �5?#�� �������� � ���������/����#�5��������)��������������+'%$ $��������,����������

���������������������

����

1��#�5��������� ���0����������,#�,� �%� $�G�$/����!��%�G���$�����������)����������,#�,� �%����$#��%�� ��������������������$/������&. "�������#��������>#�� �5���?�� ��#����%�/��$��%���&. "�$�+'%$ $���������� ����� ��,#�,� �%� $���$����� ������������!�"������������/���������������������$����)�������������$���0�����$#��%�� �������/���������)��$�= �&. "�(,#�,� �%�

������������������������&. "�/���������+'%$ .�3�G��.���� ��)��� ����������&. "���#���������������������,#�,� �%� $����������)0"���$ ��#������+'%$ .�3�G�� D�� �������� ���0����������,#�,� �%� $����&. "�����5�������� 3� ����$���� �� ������� ��)0"��� ��� �&. "�� .��)0"��� �� �� %��� ��$����������#�����������������������,#�,� �%� $����&. "�(��� ��� ��������,#�,� �%� $������� ����$����)����������)0"�����/�$��%�����������/�����= �&. "�()0"���;<� G�C�= D�� #��5������ ��� �#��������� #��� �� $���� �����/����� #��� �� ������ ����$,��� �/��� ���������0�$��������� ���������/��= loNovia1.MostrarDatos()

��#���%�/���������= ? loNovia1.cNombre, loNovia1.dFechaNacimiento

3�� �$/�� �� �� ��� ���������� �� #��$��� )��$� ��$��%�$,� #��)���/��>#�� �5? #�� �� ���� �� �� #���� �����+���� ������ �� �� �&. "� ��/� �����+����������������&. "�� 1��#�5� �� ��/���� ��� �&. "�$ �� �� $�$���� ��� �� ����������� �.D.�3.�7���0�+ �� �� �������&. "� 5������#��� ������ ��#���� �� ��$�$�����3� �� �����$����������������/��������#�����������������,���#����������$�$�����H��/���#�� ��$��������/��-����#����������� L,� �/��� �� ��)��� ���+'%$ ���$���.�3�G�����$�� �� ��)������� ���$,�������$������ 1.!EG.7D�33

��������������!�"�� �� ����$����)����@�����B������0�+'%$ � .�3�G�

������$/�� �������,�����0�+'%$ (�

���������������������

��;�

�37<3C�L����� ��� +'%$ $ ��/�� ����� ��� +'%$ � &%$ � � ��� �� ��/�� �����/������������+'%$ �G���#������������+'%$ �������5/��������������#����0�������������-��-��/�#��0����������+'%$ �

�G�$/��

.����,#�,� �%�����#����,����� ���������������� ��#������

.����,#�,� �%�����#����,����� ���������������� �!��%�G���$�����

.����,#�,� �%�����#�)��%�

��7.1<�.L������1����.���#������$���������������+'%$ .�3�G������$����#����������$���#�����&. "������%�+'%$ �.���� ��)��� ��������#�� ��$�#�����#�������/�$��L������1����@B�/������$����$��������������3-��-��/�$�����$�������������&. "�����+'%$ .�3�G��L������1����@B �.�����������)��������,��G�0����L������1����@B �.����������)�������#��)����$����

?C%����G�$/���C%����!��%�G���$�����

7����� ����$�� ������ �� ��� +'%$ � ����$�� ��)������� � ���,#�,� �%� �� ��� $��$� +'%$ ��/�$�� ��������� �� ��$/�� ��� ��#���/��C4E3@����B�3�����%���$����/������$����$��������������?�G�$/�� �.�����������)��������,?C%����G�$/�� �.����������)�������#��)����$����

�.C<�G

!�����+� �� #������$����� ���$��� L������1����� C�$/�5� #���������/����.G1��7 �� �� #��)����� �� ����������� �� �� ���� ����� �������)�������� ����

.G11.!EG.

!�����+�����)�����������+'%$ .�3�G��

���������������������

��I�

���������8�=� A��,����������+'%$ .�3�G�����$��������0�+'%$ ���$���3�7E�������������,�����������������������7��/�.�.LD�����6Local loNuevoSocio

CLEAR

loNuevoSocio = CreateObject("SOCIO")

loNuevoSocio.cNombre = "Juan"

loNuevoSocio.cApellido = "Pérez"

loNuevoSocio.dFechaNacimiento = CtoD("03/01/1980")

loNuevoSocio.dFechaIngreso = Date()

loNuevoSocio.MostrarDatos()

loNuevoSocio.MostrarDatos2()

Release loNuevoSocio

Return

*

*

DEFINE CLASS PERSONA AS CUSTOM

cNombre = Space(20)

cApellido = Space(20)

dFechaNacimiento = {}

PROCEDURE MostrarDatos

? This.cNombre, This.dFechaNacimiento

RETURN

ENDDEFINE

*

*

DEFINE CLASS SOCIO AS PERSONA

dFechaIngreso = {}

PROCEDURE MostrarDatos2

? This.cNombre, This.cApellido, This.dFechaIngreso

RETURN

ENDDEFINE

*

*

3�$���$������)�����������+'%$ 3�7E�0���$�� ��=

��� .��, /����� �� �� +'%$ .�3�G� �� %�/-�$�� ��)����� ��������$�����.�� �� ��)��� �� #���� ����� ���,#�,� �%� $ � ����� ���)0"���$ �� ��+'%$ .�3�G��.������$����� -������������� ����������

��� 3���� �� �������0�,#�,� �%�@���$���=�!��%�E� ����B��� 3���� �� ������0�)0"���@���$���L������1�����@BB�;�� D�� ,#�,� �%� $ �G�$/�� � ��#������ �� )����� ��)������ �� �� +'%$

3�7E����� ��)�������)����������+'%$ .�3�G�������$�3�7E������������.�3�G���������%�%�����������,#�,� �%� $�

���������������������

��N�

I�� .�)0"���L������1����@B��)����)���������+'%$ 3�7E��)����)���������+'%$ .�3�G��#�����$�3�7E�������������������.�3�G���������%�%����������)0"���(

D� ������������ ��)����� �����&. "��������#���������+'%$ 3�7E�

����� ������ � ����� ��� ,#�,� �%� $ � � ����� ���)0"���$ �� �� ����� 3�7E� ���$/�5� ����� ������ � ����� ��� ,#�,� �%� $ � � ����� ��� )0"���$ �� �� �����.�3�G��E�����������>0�����? .� ���� @�� ��$�������������� � ����/�����B �� �������� �� ����� ������/���������������������0����/������ ��������$,�)������������������������������0�� ��/������ �� ������$,� )������������ � ��- ������0�$����� 3� 0� )��$�������������������,�/�����$���0������� ��������� ��$�=

Clase 1

Clase 1.1 Clase 1.2 Clase 1.3

Clase 1.1.1 Clase 1.1.2 Clase 1.2.1 Clase 1.3.1 Clase 1.3.2

Clase 1.1.1.1 Clase 1.1.2.1 Clase 1.3.1.1

1�� ��$�GM�

.�������� ��$�#���$��0�� ���������������� ��������)��������������@,#�,� �%� $� �)0"���$B �� �� ����� ��#������ ��- #�� ���$#��� �� ����� ������� %�%������� �� )�������������� ������������ ������%�%������� �� )�������������� �����������������%�%���������)����������������������� 6������ � �������� �� #���� �����/��$��%�$���� ���� � )����� � %������$,�),���$����$������/���3�%������������������������������#��#� �� ����������/�������#���������� �������$/�5�������� �������������/��������

���������������������

��O�

���������������������� 7��������/���$�����+'%$ $$��%��0��������$�� �������/����#�����$���������$/���������&. "�$�.�������!�"��������������������� ������������������ ����� � �� )������� � ��$#��)���$��%� �� ������������ ���� � )������ %���5�����$,��� �/���.����������������EC4F.G1�EC4� 3����$���EC4F.G1�EC4���������=

��� .����/�$��$������� �%����$�����$#��������/����� 4���$������������� �)�����$,��� �/��;�� G������#�� ��$����������$,��,#���

>7�,�����/�$�������EC4F.G1�EC4?7�����%������$,��-������

���� ��� ����� ������)�������$��$��/��������$����$�)�������=��#�� ��$�.�.LD�����6����5�������#�� ��$�

.�.LD�����6�%�����"����$���� ��$��$��D�'������)������� �� ���%��� ��������������������EC4F.G1�EC4�.�.LD�����6Local loNuevoSocio

CLEAR

loNuevoSocio = CreateObject("SOCIO")

with loNuevoSocio

.cNombre = "Juan"

.cApellido = "Pérez"

.dFechaNacimiento = CtoD("03/01/1980")

.dFechaIngreso = Date()

.MostrarDatos()

.MostrarDatos2()

endwith

Release loNuevoSocio

Return

*

*

DEFINE CLASS PERSONA AS CUSTOM

cNombre = Space(20)

cApellido = Space(20)

dFechaNacimiento = {}

PROCEDURE MostrarDatos

? This.cNombre, This.dFechaNacimiento

RETURN

ENDDEFINE

*

*

���������������������

��Q�

DEFINE CLASS SOCIO AS PERSONA

dFechaIngreso = {}

PROCEDURE MostrarDatos2

? This.cNombre, This.cApellido, This.dFechaIngreso

RETURN

ENDDEFINE

3� $���$�� ��� ���� �� )����� �� .�.LD�����6 � �� .�.LD�����60���$�� ��������'���$���%���������$��������������� �������/��$�����������������%� ��������$#�� .�$,�),�����������.�.LD�����6���������������$/��$���K��+,���#�����#����������#����������-�������,� 3� ���$�� �� ������������ �EC4 F .G1�EC4 �������� �� ������ !�"���0��'����&. "��������0�+�3��� �����$����������� ���0��'������� �-����.�����0������$#� ����� ����$-��$����$#������ �� >7���������?3��$#����/��-�$�������EC4F.G1�EC4����������$,��-���������� ������5���)���������$��$��&. "��

�#�����������$�$������������������$#�������������$�������������,�

���������������������

��9�

������������ .���������!�"������������������/������0������������������#���$��������������� ���#�����������������/��/�� ������$��������0����������������D��������������������0������$���+'%$ �&%$ � H ��$� �� %�/-�$�� 0����� ����+'%$ �� �������� ����$������� ����� ���)������������������+'%$ �&%$ � D��+'%$ $�&%$ ���������!�"���������� �������=7%��PA�"

��$�����$/�������������������=����������!�����G����7���������

� ��#� -��$�������������� ������$�����&. "�$� ��#�������������� ������#��

7���$�

7��� ��� ����$�� �� ��� ����� @ ��� �� �� �5�B� ���� �������� ����� �� ����$#����0���������������

7�$/�A�"

E������$���� $������ �� ���� -��$� #��� ������ �� �� ���������� $������ ������������������-��$� ��#����������������������

7�$$���A�����

.����������������7�$$���6���# 7����� ��#�@����=� ��#�B�0�����/����������$�����7��������

7��� �� �&. "� �� #���� �������� � ����� �&. "�$� 3� #���� ������� � ����&. "�$��������������������$#�������&���$������$#�������������

7������

7������&. "� ��#�������������������&. "�$�.���$������7��������#������ �&. "�$ ���������� ��� ��������/��� ����� �� ���$#� �� ����&� ��$� �����$#�������������

7�����

3� ���� ������ ��� ��/�� � ��� 0���� �� � �� ��� �� ������� �� ����� �� ��)��$�������������������)��$�������������)��$��

7��������#���

��$���$������$��%����#����������"��������$���)��������������0����������!�"���E�������1A7��1��8LD�

���������������������

����

7����$7������&. "���)�����#�����������@����#�����#�� ��$������B�

1���.�0����$���

3� ���� ����$,����$���� �� �� $�$���� �� ����� �� )��$������� �������� ��)��$������� � ��)��$�� !������� ��$� �� ���������� �� ��� ������ 7������7��������#�������������

.���A�"

7����� ��$#��� �������� �� ����#���� �������� ��"���� ��� ��� �����.����"����#�������������#����#� ���

.$#��

7�����������0��-� ������������,#�,� �%� $��)0"���$�� 1 !"�$�G���#���������0����������������� �� ����)0"���$�3���$/�� �������$#����������������#������ �� ��,#�,� �%� $�����)�����������#����@B�

."��#����

.� ������ ����$,����$���� ������ ������ �� ����� �� �� /�� �� C�H �� ���������������C�HF7�C74F!EG�DDH�.���$����C4�����$/�5��������/��������#����������

!��$

7�����)��$����������������#������ �� ������������!��$3��

7���������������)��$��������6���

7������ ������.����&. "� ��#����$�������������)�����������$����.���$/�5������������� �����������&. "�$����#��������

4�����

7��������/�����#����������$������� ����������$����������"�������$� ������#������#�������������$�����$/�5�#�������#�������0������

4�#�����P

��$�����0� ����E�������."#������E$� �

L���������%�0�� �,)�����D�/��

L��������"�� �������������#������$/����������$�����D��� L����������-���%���+������0���������/�-����D���A�" L������������������������-��$� ��#����������������������

���������������������

����

�D.A������$���$����������������������&. "��D.@��$����#�������."����������$��������B������$#� �������������/���

�D.7��������

��$���� �� ���&. "�$�D.����#���������E�������������������0�8@���"B�#��������."��������$����������

�#����A�����

7�����/�������#������#����6���#

7����� ��#���/���������#���������� ����������������������$,��� �������$�����������������

� �

7������#, �������$������#, ������ �!��$�

7�����$������#, ������������������0�����#, �����������4��P

3� ���� ����$,����$���� ���� 0�+ �� �� #������� �� �/������ #��$�������������#��#�� ��$����� 1 !"�$���#��������

��������

3���������$,����$����������������/��������������������������������������#�����)��$�����������������)��$����������)��$��

��#���D�������

.�����$�����.��C!��L�D�A.D!��L������� ���� ��������������0��������������@#���������$#�����������B������#���#�������&. "�������#��$��������$�������������0����������$���������)��$��

3�#������

� �� ���#���������������������������/������%����$�������3�������/����

7��� �� �/���� ��� ������� @� ���= #�� ��$����B �� #���� � ��$������� ��#��#����������������

3%�#�

L������������,� ������������������-���������0����3#�����

��$��� �� �� ������� ����� �� �'$��� �� ����� 0����� 0������ ��$5��������������0���

���������������������

����

C�"�A�"3��0�#���� �� ���/�������$���)��������"�������0����/����$�$��������� ���$���� �� �� 0����� �$����+� � �� �� ��$#��3� #���� ������� ��#��� �#� ����"���

C�$��

.������������ ���������� ���$�$����#�������$������.���0���/��#�������������#��������������0���/�������$#�������&��

C���A��

.� �� ���������� �� �#����� ���$#�� �� �� #���� ��#����� �� �� �#��������� � �� #���� �������� ���� ���� ��#� �� �������� #�� ���$#��= D�/��� C�"�A�"�7�$$���A������7�$/�A�"�E$� ������

8LD���#���

3����$#������8LD��#������������/������$/�5���������/�����#�����������/�����8LD�

8LD!����

.����/����8LDC�/�������������!��������������/�����8LD!�����H������$#�8LD!������#�������������������������$#� ������ ��)�����0�#�����������!�"���

8LDC�/��

D� ���������C�/��� �� �� �/����8LD���#��� �������� �/�����8LDC�/�� �������/�8LD��$�����������������!�"��������������)��$���������������������

7D�3.3K<.G�<.1.GC.G.�7D�3.31.�E��1�3 D���� �������+'%$ $��#��������������#��������$�&+'%$ $=

�� 7���$��� .$#���� 4�����

��E.1�1.3K<.C�1�3D�37D�3.3�3..G@�"��#��.$#��B

�� 7������ A���7������ 7����D�/������ �����7����

.�.GC�3K<.C�1�3D�37D�3.3�3..G@�"��#��.$#��B

�� E����� 1�������� .����

���������������������

����

�������������������� 7�$� �� %�/-�$�� 0����� ��� $�&+'%$ #���� ������� ����� � �� ���� �� �����������-����������+'%$ ������������0����������������$�+'%$ �,%�# �D�+'%$ ��%���������+'%$ �>�.%� 7�������������$�&+'%$ $#��0�����/���)����������� ������@���������#��$��� �����/��$����B � �������� @�� ���� ��� �%���� ���$#�#�� �� ���������+'%$ �,%�# ���������+���$/�5�����$,����$�������������+����������+'%$ $�>�.%$B� .�������!�"��%�����)��$���������$�&+'%$ $=

��� ��#�� ��$�@�������%�0���6B��� <�������1���&������7�����

7�.�G1�7D�3.3����6��L� 3��������$���������������� .� �� �� %�$�� ����� �� ��� #�� ��$�� %���� �%��� @.�.LD�����6�.�.LD�����6�.�.LD�����6B7�.�G1�7D�3.3<3�G1�.D1E3.R�1��1.7D�3.3

� �-#���$��%�����������$������=��� 7��!���SG�JFS7����SG�J!���S��� 7��7�.�C.7D�33

.� ����� ��� ���$#��� �� ���� ����$���� ������$�� ���0�� +'%$ $ �����+����

1.!EG.7D�33������+����7�.�C.7D�33�

���������������������

��;�

�������������������� 7����� ����$�� $��%�� +'%$ $� �� �� �� �� �������� ����� ��#�����������#����$���� #�� �%-� �� $��%� $,� ���0������� �������� � ��#���� �� �� �������%�0���������%�0��������$�&�&'��" +%�� �+'%$ $� .�������!�"����������/�/�������������������������"���������78 1����� �� ��� /�/������� �� ������ #���$�� ����� ��� � @�����$����B$��%��+'%$ $�D�$,��� ����� �����������+'%$ $���5�������������������-� �� ���$#��� �� ��� /�/������� �� ������ @� �� ���� #���-�$�� ���$���� ��$�A�C�G.3��78B #���$�� ����� ��� $������ #����)������ �� �������� /������ ����$�����.����������������������$�������0�/������$#��$����������0�$�������������+'%$ $#����)������� >H#�� �5��������$#��$������/���� ��0������������������!? �� �� �� /���� �� �������� %���$�� ���, ������������� ����� ����� ���)�����������������/�������,��������$,�������0��)�������������� ����%�$��� �� ���� 7�����#�� ��$�$����������!�"����$������������������#��#��������������0���������+'%$ $�&%$ �.�� ���������� ������ �������������������/����#��)���/����������������������������������/���.��� �����������������)��$��$����������������������������������)��$�H��-������0�$�����

���������������������

��I�

���������8�?� .� ���� ���$#�� ������$�� �� )��$������ /���� � ��� �� )��$������ �������+���$����$�/���������������$,�)��$�����������������#��������� ����%�����%���$��0�����$���������� ��)��� ���������$���������������1.!EG.7D�33���� �������$��7�.�C.7D�33� �������/������0����������$��������������!�"��= CREATE CLASS FormBase OF Formularios AS Form

����$������ ������#�������=

�������GM�

>K�5)���� ��%���$��? 7���$�����+'%$ ���$���!��$A���������)������0���������+'%$ ����$���!��$�)�� ��/����������%�0����$���!��L<D��E�3��78� 7�$� !��L<D��E�3��78 �� �"���-�� ��$/�5� )�� ������� 3� �� %�/�����"����������������+'%$ !��$A�����%�/����� �� ����5�� .������#���/���=����$�����+'%$ ���$���!��$A����������)�� ��/����������%�0� ���$���!��L<D��E�3��78�����+'%$ !��$A����������������� @�%���B����+'%$ !��$� ����������������������!��$A���%����������������#��#����������������$5���������+'%$ �,%�# ���������+'%$ !��$�

���������������������

��N�

�%��� �� ��$/����$�� �� ���� ,#�,� �%� $ � ������� )��$������ !��$A������$�0�$��������� �������#���������

�������GM�

�������GM�

���������������������

��O�

�������GM;

6��/�$�� ������� )��$������ @#���������� 7C�D T�B � ��� !��� T 3�0� �%�����������P���������������P������� ����$�����0����������$���������!� �%����������$�������0�)��$�������#�������0�+�����,/�������!��$A������������/�$����������>7�$�%���$�����?.����/�����=

CREATE CLASS MENSAJES OF FORMULARIOS AS FORMBASE FROM FORMULARIOS

H��������!�"�����$������,���� ������#�������=

�������GMI

>K�5��%�$��#����� ��%������? K�� ������ ��� ���0� +'%$ � /����� �� !��$A���� �� ���� #��0���� ��!��L<D��E�3��78������0�+'%$ ��%�$�����������$/�5� ����$�� ����� ��/�����������!��L<D��E�3��78�

���������������������

��Q�

�0���� ����$����������+'%$ ����0���������+'%$ �����������������������/�/����������������H��������0�+'%$ ������$��������� ����$�� ��/����������/�/���������������� �������+'%$ �,%�# �����, ��/��������/�/������������������+'%$ �>�.%�����, ��/���������/�/���������������� H�0���$���� �������$#���$,���������� .��������> �5����$��%����� �-?

7����!��$

7����!��$A���

7����L�������

1�� ��$�GM� D�+'%$ !��$A���������0���@�%���B����+'%$ !��$�.���� ��)��� ����������,#�,� �%� $���������)0"���$����+'%$ !��$���,�������#�����������0�+���+'%$ L�������������0���@�%���B����+'%$ !��$A����.���� ��)��� ����������,#�,� �%� $ � ����� ���)0"���$ �� !��$A��� ���,� � ���#������� �� L������� ���$/�5���������,#�,� �%� $���������)0"���$��!��$� 3�$���$�����0�����������,#�,� �%� $0���$�� ��L�������%������������������������������������0������������$��$��������5������� �%�������%���$���� ������$/������+'%$ L��������

��� D���� ��$����0����I;����#��#���������%��� D���� ��$����0����9����#��#�����4�� %���� D�� �� �$������������� ��������������,=

a.� BackStyle = 0 (transparente) b.� Left = 2 c.� Top = 25 d.� Width = 40

���������������������

��9�

;�� D�� �� �$����/��������$�����������������,=a.� Caption = “OK” b.� Height = 27 c.� Left = 228 d.� Top = 60 e.� Width = 84

4���$����/������P��/����/��������$�����������/�$��=C%��!��$��������@B��$���0������� ������#�������=

�������GMN

D� ��������$������������������!�"����=(���������������%� �����P��/������/��������$���������/�����������)0"����������@B������)��$�������* >H �5%�����)0"����������@B?D�/�����)��$����������$�$�������%�����������������)��$������� �%��������)0"���EGEC���)��$�����������/�$��=

�������GMO

���������������������

����

>K�5����$��%�������� �-? 1���5����� �� �� )��$������ ��/� ����/�� �� #��,$����� �� ���� ���$�$����L������@(�*�� ��)���=(#��,$����*��(�*�� ��)���=(����#����,����*B�.���)��$�����$/�������#��,$��������#�������#������0�������#���� �/������� � ������������ ��� ��$�� �� #��,$���� ����/��� � �� ,#�,� �%�������� ������������ ������������,��������������+'%$ �+�!" ! ��#%����0�����!��$� >7�$�����������������L������ �����/�$���������? ��$����%�� ���������������/�/���������������������������������������%���$�������/�����= 3.C7D�33DEAC�!��L<D��E�3 3� ����$���������$�����&. "�����+'%$ L������� �L�!��$L������U7������/����@(L.G3��.3*�(.�����$�#��$��$������*B H� �� %� ������ ���&. "� �L�!��$L������ @� ���� �� ���, ����������B #����'� �� �� 0�$��� >�� �5 ��? �� �� �� �� %�$�� ���%� �� ������ !�"�� �� ����$��0��������%�����������/�$��= �L�!��$L�������3%�J@B H��������VVV0���,WWW�#�������)��$���������$�#���$��0�������� ������#��������

�������GMQ

����$�������� ��%�$���������%����� �-)��=

SET CLASSLIB TO FORMULARIOS

oMiFormMensaje = CREATEOBJECT("MENSAJES", "Este es mi primer mensaje")

oMiFormMensaje.Show()

7���������������3.C7D�33DEAC�!��L<D��E�3������$������������������ !�"�� �� �/�� �� /�/������� �� ������ ���$��� !��L<D��E�3 #��� ��#���$�������������+'%$ $@�������#���/���=#��� ��#���$��������&. "�$�����+'%$ $ ��������������������������%�0�!��L<D��E�3��78B� .� �� �� ������ �-�������$������������&. "� ���$����L�!��$L������� ������ �� �� �� +'%$ L.G3��.3� ���$,�� �� ����$�� ��0����� �� #��,$����� ��������#��������"�� �������$��0������)��$�������

���������������������

����

.� �� ������� �-��� �� ����$�� ��$������ �� )��$������ #�� �� ��� �� �� ���� �����-�����%�/-�$������������0-������0���/��� �%��������$�������&. "���$/�5�/���������+'%$ L.G3��.�

oMiOtroForm = CREATEOBJECT("MENSAJES", "Este es otro mensaje")

oMiOtroForm.Show()

�������GM9

� �-��)����������������/��3.C7D�33DEAC�!��L<D��E�3�>#�� �5�� )�� ���������? �� �� �� �� %�/-�$�� ������� ��� ������������ � �� /�/���������������/��/������ 3������$�����������/�/�����������������%���$�������/�����= 3.C7D�33DEAC� ������ '�#��,$�����

���������������������

����

�����������5��������������������������������

D��$��$/����� ��� ������ ��� ���,#�,� �%� $ � ���)0"���$(H ������ ����0���/��������#���/���=

�� '/������ ���� ����� ������

����/������ #'/���� �� ��)��� �� �� ,#�,� �%� � �� )0"��� #����� ���

������������������ ����#�� ��$�������� ����/������ #���� ��� �� ��)��� �� �� ,#�,� �%� � �� )0"��� #����� ���������������������������������� ������������/������� ����/�������������� ��)��� ����,#�,� �%����)0"���#���������������������$�����������������.�.LD��I��6Local loNuevoEmpleado, loNuevoGerente

CLEAR

loNuevoEmpleado = CreateObject("EMPLEADO")

with loNuevoEmpleado

.cNombre = "Raquel"

.cApellido = "Martínez"

.dFechaNacimiento = CtoD("12/02/1975")

.dFechaIngreso = CtoD("15/09/1994")

.MostrarFechaIngreso()

.MostrarFechaEgreso()

.MostrarSueldo()

.dFechaEgreso = CtoD("15/09/2010") && Esto es un ERROR, no

funcionará porque dFechaEgreso es una propiedad PROTEGIDA

.nSueldo = 1234567 && Esto es un ERROR, no

funcionará porque nSueldo es una propiedad OCULTA

.PonerFechaEgreso(CtoD("15/10/2010")) && Esta es la forma

correcta de asignarle un valor a la propiedad dFechaEgreso

.PonerSueldo(1234567) && Esta es la forma

correcta de asignarle un valor a la propiedad nSueldo

?

.MostrarFechaIngreso()

.MostrarFechaEgreso()

.MostrarSueldo()

endwith

���������������������

����

loNuevoGerente = CreateObject("GERENTE")

with loNuevoGerente

.cNombre = "Mercedes"

.cApellido = "Candia"

.dFechaIngreso = CtoD("21/03/2009")

.PonerSueldoGerente(5678901) && Esto es un ERROR

endwith

Release loNuevoEmpleado, loNuevoGerente

Return

*

*

DEFINE CLASS PERSONA AS CUSTOM

cNombre = Space(20)

cApellido = Space(20)

dFechaNacimiento = {}

PROCEDURE MostrarDatos

? This.cNombre, This.dFechaNacimiento

RETURN

ENDDEFINE

*

*

DEFINE CLASS EMPLEADO AS PERSONA

PROTECTED dFechaEgreso && dFechaEgreso es una propiedad

PROTEGIDA, por lo tanto es visible en esta clase y en todas sus

subclases.

HIDDEN nSueldo && nSueldo es una propiedad OCULTA, por

lo tanto solamente es visible en esta clase.

dFechaIngreso = {}

dFechaEgreso = {}

nSueldo = 0

cNombreJefe = ""

PROCEDURE MostrarFechaIngreso

with This

? .cApellido + ", " + .cNombre + " Ingresó el día: " +

DtoC(.dFechaIngreso)

endwith

ENDPROC

PROCEDURE MostrarFechaEgreso

with This

? .cApellido + ", " + .cNombre + " Egresó el día: " +

DtoC(.dFechaEgreso)

endwith

ENDPROC

PROCEDURE MostrarSueldo

with This

? .cApellido + ", " + .cNombre + " Sueldo = " +

Transform(.nSueldo, "999,999,999")

endwith

ENDPROC

���������������������

��;�

PROCEDURE PonerFechaEgreso

LParameters tdFecha

This.dFechaEgreso = tdFecha

ENDPROC

PROCEDURE PonerSueldo

LParameters tnSueldo

This.nSueldo = tnSueldo

ENDPROC

ENDDEFINE

*

*

DEFINE CLASS GERENTE AS EMPLEADO

PROCEDURE MostrarNombreGerente

? This.cNombre

ENDPROC

PROCEDURE MostrarFechaEgresoGerente

? This.dFechaEgreso

ENDPROC

PROCEDURE MostrarSueldoGerente

? This.nSueldo && Esto es un ERROR

ENDPROC

PROCEDURE PonerSueldoGerente

LParameters tnSueldo

This.nSueldo = tnSueldo && Esto es un ERROR, nSueldo es una

propiedad OCULTA, por lo tanto no se puede acceder a ella desde esta

subclase

ENDPROC

ENDDEFINE

*

*

�������$������#�� ��$�������������0���������������������#��#�����#���$�������� ������/�%������� ��$��������$�����&. "����$�����G��0�.$#����������� ��$���� ����0����������#��#�������������������������������#�� ��$���� �������-���= .dFechaEgreso = CtoD("15/09/2010")

��������!�"�������������$����������$������=

�������GM��

���������������������

��I�

>�� �5 �� �����?�� �� �!��%�. ���� �� ��� #��#����� �� ���, #���� �������������������.���� ��)��� ��#����������������������$��������������+'%$ �����������$�&+'%$ $� 4���$�� ����P �� �� /���� (E ����* �F�������� !�"�� 0���0� � �������������0�+������ �������-������$�0�$�������� ������#�������=

�������GM��

>H�%���#�� �5�������?�� ����#��#������3��������,����������������������.���� ��)��� ������$������#�����������������������#��#���������������� '�������������� �����#����������������������������/������ H���������>��$������ ��$����0��������#��#����� �����,#���� ���� �����,������?D�%���$��$���������#������$���������)���������$���0������� �������-���= .PonerFechaEgreso(CtoD("15/10/2010")) .����� �� )��$��.������$����#������$����� ���$���(����!��%�. ����@B*����������/���$�#��,$������)��%����� ����� ��� #���� � ��$/��� �� ������ �� �� �$#����� ���$�� �� #������$���������3�����@B�����������/���$�#��,$����������������$#�����������$�0�$�������� �������-���= �����3�����@���;INOB .���-���#����������!�"�����- ����#�� ��$�������'������������%���� ��F����0�+�������>��%���#�� �5?

���������

���������������������

��N�

�%����������#�� ������+'%$ 6.�.GC.�����������$/�����0��������#��#������3�����������#��#������3�����#�����������+'%$ .LD.�1�����,���������������������$������0���/��#�����+'%$ .LD.�1��#��������$,��G� �� ����� ��0���/��#��� ��� $�&+'%$ $ �� ��+'%$ .LD.�1���� �� ������� ��0���/��#�����+'%$ 6.�.GC.� ����$�����=

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ ���� ���������� �������� �� ��������� ��� ��� ������ �������� ��� ������ �� �������� ��������� ���������� ������ ��� ������ ���� ��� ����� �� ������ ���� ��� ���� ���������� ��������������������������������������������������������������������������������������������������������������������������������������������������������������!�!"����#���$������%&����$������'&�(&����$�������)������������������������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������������������������������������������������������������!�!"����#���$������%&����$������'&�(&����$�������)���

7�����$5�����@#������$�������)��������B���#������$��$-��$������

���������������������

��O�

������������������ 3������$�)�� '%#��&. "�$��%��%�����)�������#��#�����������$5�����@)�������� � #������$������B �� �����, ��� +'%$ @� #�� ����� ������� ����� ����&. "�$ #������������� � ��� +'%$ B #��� ��#�������� �� �������� @� ��� #���� �� ����������B� �� ���$#��� ��������$�� ��)���� ��� +'%$ �� ��#������� � ��� �������� �� ��.$#���� ��������������

>7�,���#��#������������,���+'%$ ?>H��,���$5�����?

1��#�5���#������� �������� ������ �/��,�������� �� ������������$��#�����������#��������#���-�$������������#������ ������=��#������� �7��� � 7��,���� I �G�$/�� 7��,���� �� ��#������ 7��,���� �� �1�������� 7��,���� I� �C��5)���X� 7��,���� �� �7������X��@$�0��B 7��,���� �� �D�������� 7��,���� �� ��-� 7��,���� �I �.$��� 7��,���� �� �GM�������$��������������� 7��,���� �I �3�"� G�$5���� � �.�����7�0�� G�$5���� � �!��%���G���$����� !��%� QL5����� L������1����@B YY7��� ��G�$/���1���������C��5)����.�$��� G�$/��H�#������@B YYL��������G�$/������#�5����#������ �#������HG�$/��@B YYL���������#������������$�����G�$/�� ������������%��%�����)������������#��#����������������$5����� �������,�������+'%$ 7DE.GC.�����$�$������������� �������������

���������������������

��Q�

�������������������������������

G��$��$���� ������ ����$�� ����� �� )��$������ �� %���$�� ��� �����$�����7�.�C.!��L�L�1E!H!��L�3���$/�� ����$/�5�#���$����������+'%$ /�������)��$������F���������6.�.LD��N��6Local loMiForm

*--- Primero, creamos una instancia de FORM y la llamamos loMiForm

loMiForm = CreateObject("FORM")

with loMiForm

*--- Segundo, asignamos valores a las propiedades

.BackColor = RGB(64, 255, 255)

.Caption = "Mi primer formulario usando clases"

.Height = 600

.Width = 800

*--- Tercero, le agregamos botones de comando

.AddObject("BotonOK" , "MiBoton1")

.AddObject("BotonSALIR", "MiBoton2")

*--- Cuarto, hacemos a los botones visibles

.BotonOK.Visible = .T.

.BotonSALIR.Visible = .T.

*--- Quinto, mostramos el formulario y los botones

.Show()

endwith

*-- Sexto, leemos los eventos

READ EVENTS

*--- Séptimo, liberamos al objeto de la memoria

Release loMiForm

Return

*

*

DEFINE CLASS MiBoton1 AS COMMANDBUTTON

Caption = "OK"

Height = 30

Left = 50

Top = 570

Width = 100

PROCEDURE Click

WAIT WINDOW "Has presionado el botón OK"

ENDPROC

ENDDEFINE

*

���������������������

��9�

*

DEFINE CLASS MiBoton2 AS COMMANDBUTTON

Caption = "SALIR"

Height = 30

Left = 650

Top = 570

Width = 100

PROCEDURE Click

CLEAR EVENTS

ENDPROC

ENDDEFINE

*

*

>K�5)���� ��%���$��?

��� 7���� ��� 0����/�� ���$��� ��L�!��$� �� ���� �� ��� ��������� �� �� +'%$ !��L�.���� ��)��� ���������������#��#����������������$5������

��� ��� ���0��������� ���������#��#�������������&. "����� � �� �� ��� /������ �� ��$����� ��� ���$��� A�����Z � �� ���� ���$���

A����3�DE�;�� ��������0����0��������@�C�B����#��#�������(����/��*���$/��/������I�� L��������)��$������@������/������������BN�� D�������0�����O�� D�/�������/��������$�$����Q�� 7���������/����������0�����7�$$���A������.���� ��)��� ��#���������

��� #��#������� � ����� ��� $5����� �� �� +'%$ 7�$$���A����� �� ���#'/������#���� �����

��� D���� ��$��0��������� ����#��#�������/�� .����/�$�������� � ������������,���������������%� �����P�����

/���� �+ ������ ��� $���� ��/�� �� /����� .� ���� ���� $������, ��$�������

9�� 7����������/��������$/�5�����0�����7�$$���A��������� D���� ��$��0��������� ����#��#�������/�� .����/�$�������� � ������������,���������������%� �����P�����

/���� �+ ������ ��� $���� ��/�� �� /����� .� ���� ���� ��$#���, ����0�����#������������#������$����������$��$���

���������������������

�;��

��������3���������5��4������������������������������

������������������������7D�33@B 6���������$/��������������������������������������������������117D�33 � �� ������)������������������/�/�����������������78�11�A�.7C@B � �� ����/��������������������/����������$#��������������.�.GC3@B ����#������'$������0���������+�����EG3C�G7.@B 6����� ��� ���������� �� ��� ����� �� �� ����� � ��0���0� �� �������� ������������ ��%������������L.LA.�3@B 6����������$/��������#��#�����������#������$�����������$��$/��������/��������������������L�<3.�A�@B 7���������� ������������)��$�������/����#����������#���������$��������/������/�����������,#������������#��������3.D�A�@B D�����+������)����������/����#�����������������������������������������787D�33.3@B 6����� �� ��)��$����� �� ��� ������ �� ��� /�/������� �� ������ ������ �� �������7�L�A�@B 7�$#������#��#�������������/��������0���0��C������#��#�����������0������������������5������7�.�C.7D�33 �/����1���&������7������#��� ����#���������������0���)��������������7�.�C.7D�33DEA 7���������0�@�0��-�B/�/���������������7�.�C.�A�.7C@B 7������/��������0����������)��������������

���������������������

�;��

1.!EG.7D�33 7��� ��� ����� � ��� ��/����� ��)����� #�� �� #�� ��$���� � ��#���)��� ���#��#��������$5������1E3D�H�A�.7C3 L��������)��$�������/�����/�������/���������������/�����1�1.!�<DC@B .��������$5�������������#���� ���������$��$���$/�� ����$5����������������/������)������6.C�A�.7C@B ����0����/����������$���+���������������)������������/����6.C.L 1�0���0���0���������������#��#���������� ���#�� ��$�#�����$5��������0����������$#�������&�DE3C�A�.7C3 7�������$����$��������)��$�������/�����/����������������/�����G.��A�.7C@B 7��������0��/������������������/�/���������������@��78B��������#�� ��$�@��6B#�������/��������%�0��G�1.!�<DC E$#��� �������������$5�������������#���� ���������$��$���$/��L�1E!H7D�33 �/����1���&������7������#��$�������$���)���� ����)������������ ������"�������������������0���)���������������A�C�7DE.GC@B 1�0���0���#����������$�����������/������������������)��$������.L3C�C<3@B ����#���������/���#������#��#�������0�����$5������/�����.L��.�A�.7C A�������/���������/�������������������$#�������������.D.�3.7D�33DEA 7��������/�/����������������.G�L.7D�33 D���$/������$/��������)�������������� �����,��������������������/�/���������������3.C7D�33DEA �/�����/�/���������������0������������������������)�����������������

���������������������

�;��

3H3@��N9B 1�0���0���0���� �������������#��#�����%���$/������0����#����)���������#��#��������������������@���������B3H3@��O�B 1�0���0������)�������#������/���� ���������������/������L����������� ��������#���������#���)������3H3@��O�B 1�0���0� �� ��$/�� ��� ���%�0� �378 �� �� ���� �� ��������� ��� �/������#���)��������, �������3H3@��O�B 1�0���0�������� �-����/����#������/������#���)������C4E3 ��0�������)����������/���������������0������������)���������������EC4F.G1�EC4 .�#���)���$'���#���#��#�������#������/����

���������������������

�;��

���������������������������������������������

� 3� ��������$�� ������� �� 0���� �� ��� #��#����� �� �� +'%$ � ,%�# � �� ����$����$/������0�����#���$��%��������������#��#�������.GC���$������� ���������$#���

�� 7���$�������0�)��$�������� D�� �� �$����7�$$���A������� .���$5��������P���/���������/�$��=

C%���������7�#����U(.����������0���#�������)��$������*�� .������$����)��$�������� 4���$������P��/����/��������$�����

.�.LD��O��6Local loForm

loForm = CreateObject("FORM")

with loForm

.Caption = "Este es el caption original del formulario"

.AddObject("Boton1", "BotonCAMBIA")

.AddObject("Boton2", "BotonSALIR")

.Boton1.Visible = .T.

.Boton2.Visible = .T.

.Show()

endwith

READ EVENTS

Release loForm

Return

*

*

DEFINE CLASS BotonCAMBIA AS COMMANDBUTTON

Caption = "Cambiar título"

Left = 20

PROCEDURE Click

This.Parent.Caption = "Este es el nuevo caption del formulario"

ENDPROC

ENDDEFINE

*

*

DEFINE CLASS BotonSALIR AS COMMANDBUTTON

Caption = "SALIR"

Left = 200

PROCEDURE Click

CLEAR EVENTS

ENDPROC

ENDDEFINE

*

*

���������������������

�;;�

>K�5%���$��? ��$��������$�����&. "�����#�)��$������@�����!��LB���������$�$����!��$ @�� 0�$�� �� �� (�* ������� �� ��)��� (�����* � �� (�* �� �� �� �� �� ��)���(�/����*����� �������������(�/���������*B� 3� �������$/��$������#�������)��$������ C������� �� � �� �$�� ��� /������ ���$���� A����� � A������ D� +'%$ ���#��$�����A����7�LAE����+'%$ ����� ������A����3�DE�� 7������%���$�� ���$/��/��������������0���/���� K������$�����$����)��$������� 3�"���#������$������0������ 35#��$�� ��/���$�� �� �&. "� ��!��$ �� �� $�$����� #��� �� ����#���+�������$����� .���#������$���������P����+'%$ A����7�LAE���$/��$����0���������#��#������� ��+'%$ �,%�# ��A����7�LAE��$,���#��-)���$������ ��#��#�����(7�#����*� .�� �� ��)��� �� �����������/������ ��$���� @A����7�LAE�B#���$����$/�����0���������#��#��������)��$������@����������+'%$ �,%�# B� .���)��������������#�� ����0������ ����#���/������������#��#��������#��������#��������#����������� ���$�� C%���������������������������7�#����U(.����������0���#����* C%�������������������������%U��� C%���������������������������D�)�U�I�

������

���������������������

�;I�

����������������4�����������������������

� �0��������������$������������$5������������$������������$5��������+'%$ �,%�# ���)��$���%��������������#����������������������������D������"�������� ������=

������� ������ � .��� ���������$#����$����$������.�.LD��I��6�#����%��������+����#���������������������������#����������� ��)������L������!��%�E� ����@B ��#�����������+'%$ ,%�# @��������#�����������+'%$ .LD.�1�B�.�.LD��Q��6FDEFINE CLASS GERENTE AS EMPLEADO

PROCEDURE MostrarNombreGerente

? This.cNombre

ENDPROC

PROCEDURE MostrarFechaIngresoGerente

EMPLEADO::MostrarFechaIngreso() && Aquí se utilizó el operador

de resolución de alcance para ejecutar un método de la clase padre.

ENDPROC

ENDDEFINE

*

*

� .��� ���������$#����$����$���������������#��� �������� ���������������6������ ����� �� #��#�� #������$������ ��� �� �� ����� �� ��$���$�� � #��#������#��� ����0��$,������$������ ��G�1.A.4�7.�3.�.�.LD��9��6Local loNuevoEmpleado, loNuevoGerente

CLEAR

loNuevoEmpleado = CreateObject("EMPLEADO")

with loNuevoEmpleado

.cNombre = "Raquel"

.cApellido = "Martínez"

.dFechaNacimiento = CtoD("12/02/1975")

.dFechaIngreso = CtoD("15/09/1994")

.MostrarFechaIngreso()

.MostrarFechaEgreso()

.MostrarSueldo()

���������������������

�;N�

.PonerFechaEgreso(CtoD("15/10/2010")) && Esta es la forma

correcta de asignarle un valor a la propiedad dFechaEgreso

.PonerSueldo(1234567) && Esta es la forma

correcta de asignarle un valor a la propiedad nSueldo

?

.MostrarFechaIngreso()

.MostrarFechaEgreso()

.MostrarSueldo()

?

endwith

?

loNuevoGerente = CreateObject("GERENTE")

with loNuevoGerente

.cNombre = "Mercedes"

.cApellido = "Candia"

.dFechaIngreso = CtoD("21/03/2009")

.MostrarNombreGerente()

.MostrarFechaIngresoGerente()

.PonerSueldoGerente(9876543) && Esto es un ERROR.

endwith

Release loNuevoEmpleado, loNuevoGerente

Return

*

*

DEFINE CLASS PERSONA AS CUSTOM

cNombre = Space(20)

cApellido = Space(20)

dFechaNacimiento = {}

PROCEDURE MostrarDatos

? This.cNombre, This.dFechaNacimiento

RETURN

ENDDEFINE

*

*

DEFINE CLASS EMPLEADO AS PERSONA

PROTECTED dFechaEgreso && dFechaEgreso es una propiedad

PROTEGIDA, por lo tanto es visible en esta clase y en todas sus

subclases.

HIDDEN nSueldo && nSueldo es una propiedad OCULTA, por

lo tanto solamente es visible en esta clase.

dFechaIngreso = {}

dFechaEgreso = {}

nSueldo = 0

cNombreJefe = ""

PROCEDURE MostrarFechaIngreso

with This

? .cApellido + ", " + .cNombre + " Ingresó el día: " +

DtoC(.dFechaIngreso)

endwith

ENDPROC

���������������������

�;O�

PROCEDURE MostrarFechaEgreso

with This

? .cApellido + ", " + .cNombre + " Egresó el día: " +

DtoC(.dFechaEgreso)

endwith

ENDPROC

PROCEDURE MostrarSueldo

with This

? .cApellido + ", " + .cNombre + " Sueldo = " +

Transform(.nSueldo, "999,999,999")

endwith

ENDPROC

PROCEDURE PonerFechaEgreso

LParameters tdFecha

This.dFechaEgreso = tdFecha

ENDPROC

PROCEDURE PonerSueldo

LParameters tnSueldo

=MESSAGEBOX(TRANSFORM(TNSUELDO))

This.nSueldo = tnSueldo

ENDPROC

ENDDEFINE

*

*

DEFINE CLASS GERENTE AS EMPLEADO

PROCEDURE MostrarNombreGerente

? This.cNombre

ENDPROC

PROCEDURE MostrarFechaIngresoGerente

EMPLEADO::MostrarFechaIngreso() && Aquí se utilizó el operador

de resolución de alcance para ejecutar un método de la clase padre.

ENDPROC

PROCEDURE PonerSueldoGerente

LParameters tnSueldo

EMPLEADO::PonerSueldo(tnSueldo) && Esto es un ERROR, porque

tnSueldo es una propiedad oculta de la clase EMPLEADO

ENDPROC

ENDDEFINE

*

*

7�$� 0�$��� �����+�� �� #������$����� ����3�����6������@B �� �� +'%$ 6.�.GC. �� �� ������ >#�� �5 ���? �� �� ���, ���$���� �� #������$���������3�����@B �� �� ����� .LD.�1�� � ��� #������$����� ��$/�� �� 0���� �� ��#��#����� �3������ ��� ������� �� �3����� �� ��� #��#����� �+�'"%� #�� �� ���������������/���������#������������5�����������$���������������$����@��$����������%����� �-B� �.7<[�1�D�=����#��#������+�'"%����$������#����������������������� ������)��������$#���/����������������3�����������������������������������������������#�� ����$��+�'"%�

���������������������

�;Q�

���������������������@����� �%���������$��0�����$�������+'%$ ��$������,�����"�����#��+,������������%���+ �������#������������+���$���������������=

�� <������������ <����� ������ <���$��

.�������������0��,#���������������������������������D���� ����$������,

����"�� �������$��������$��$�����,��0��������������#��+�$������ .���0����������$����������/�$��=

CREATE CLASS ETIQUETA1 OF CONTROLES AS CONTAINER

>K�5������$����������� �-��������!�"��?K�� ����$�������������0�+'%$ ������������$��,.CEK<.C��������, ��/����������%�0�7�GC��D.3��78���+'%$ �&%$ ���,7�GC�EG.�� G��$������,���� ������#�������=

�������GM��

7�$�#���$��0������#������������+'%$ �����$�.CEK<.C��������%�0������$�7�GC��D.3��78

���������������������

�;9�

D���$/��$������$�&����� �� �$������������� ����������������#��� �� ������-=

�������GM�;

.� �� #��#������������� ��� ������� D�A.D� #���$�� �!� � �� �� #��#����� ����#���$��O��@#�����#������$,������������#�������B� .���#��#����������������������CEL.���#���$��=��� H����$5������������������CEL.�������/�$��=

�������GM�I

6��/�$��������)���$���������#���0���$�� ���%�������$�������������%�0����$���7�GC��D.3��78�����������%�0�������������������+'%$ �����/�$����������.���+'%$ �%���#������������+��������� ����)��$������� ��$���0���)������� .���0����������$��������������!�"�������/�$��= L���)�)��$�<.A��

���������������������

�I��

G��$������,��)��$������0��-��%���$������P���������(���J7������*

�������GM�N

.�� �$��(���F*���� �7�GC��D.3��78�G��$������,��������+'%$ $ �� ���,���������7�GC��D.3��78� �� ����$�$���� ����$����%�� ���#��� �$����� ��0���$������������0��+'%$ $5������,�� �� ,������ E������$�� �� ������� .CEK<.C�� �� ������� )��$������ � 0���$�� ���#���������$��������� ������=

�������GM�O

���������������������

�I��

.���$5����EGEC���)��$�����������/�$��=

�������GM�Q

.������$�� �� )��$������ � F 0���$�� �� ��"�� ���#��+,����� �� �����%� ��+ ������� 3� ����$�� �� ��$��0�$,� �,#����$,� ������ �� ���������� ��$/��� ��0��������#��#����������������������CEL.��� ����#����� ����$/�5�#���$����$/�������"��������/���� �������$��� 7�$� 0�$��� �� $�� #��� ���$#� %�$�� ����� ���� ����� �� ������� ��/�����#��+,�����#�� ��#��������.����������$#��$����$#��� ���$��0������� ����$,���$#�������������� �������#, ����� .� ���%�0� 7�GC��D.3��78� �� )��$������ �<.A���37C � ����� �����$,����$#����������������������%�0���$#��$�������������������$����� .� �$#������� �� ��� �����$#��$�� ��$/�5� � ��� 0���� �/���0���� #�����������$�����H #�� ��#������ �� ������ �� ���� ������ #����� �����/��$� �� ��$��� ���#���������'���$�#, ����

���������������������

�I��

����������������������� �%���������$�����+'%$ ��/�� ���������,������0������ �������D�)��$���%����������$�������������$#�����������<����+���$���������������=

�� <������������ <����� ������ <���$��

.���0����������$��������������!�"�������/�$��=

CREATE CLASS ETIQUETA2 OF CONTROLES AS CONTAINER 1��#�5� �� � �� �� �� ������� �� �� � �� ������� ���� ����$�� ��� ���0�#��#�����������$�$�����!����"��� �����$���0������� ������#�������=

�������GM�9

.� ��#��#����������������������� ��/��#���$�� �!�� �� ��#��#����� ����#���$��O��@��� ����#���+��$,���������B� .���#��#����������������������C�$���#���$��=I�� .���$5������������������C�$��������/�$��=

This.Parent.Label1.Visible = !This.Parent.Label1.Visible 6��/�$�� �� ����� � 0���)���$�� �� )�������� ��� ��� ����$�� �� ���0�)��$���������$����<.A������������$��������������!����#�����$5����EGEC���)��$�����������/�$��= ThisForm.Etiqueta21.Label1.Caption = "Este texto está titilando"

.������$����)��$�������FVVV�-�����"�����,���������WWW

���������������������

�I��

������������������������� �%���������$�����+'%$ �� ����$/�����������$�����#������, ������"�����,��������$�������������������/����)�����$�����$��%������5���������������#����������� <����+���$���������������=

�� <������������������� 1�������������/��

.���0����������$��������������!�"�������/�$��=

CREATE CLASS ETIQUETA3 OF CONTROLES AS CONTAINER

.������������.�� �����=- BackStyle = 0. Transparent

- BorderWidth = 0

.���/���=- BackStyle = 0. Transparent

- ForeColor = 0, 0, 128

- Left = 0

- Top = 0

- Width = 720 (o el que te parezca más adecuado)

.���/���=- BackStyle = 0.Transparent

- ForeColor = 192, 192, 192

- Left = 2

- Top = 2

- Width = 720 (o el que te parezca más adecuado)

.������������.�� �����=- Height = 17

- Width = 720

��� ����0�����)��������$/������������ �����/����������/����� ��#�#����������������������� ����� ����$�� �����5����/������ ����$�� �����5�/������$������$�������� ��3���������$����� ������� �������$�������� �����������$��������� ��������������#���������#������

�������GM��

7����������� ����$�� ���� ������5����/�� ���� ��#���5��/���

���������������������

�I;�

1��#�5�����$��'��� �$��= 7����SG�JL��%��F

���G�$�=�����/�$��(����7�#����*

.������0�$5���� ������$������������#��$����,��� �����$��$���#�������������� �����������+'%$ ���$/�5���� ������� �����#����������������$,���������� #��� �� �� �)���� �� ��$/�� ��� 0���/�� � ���5����$���� � ����/��� G����� ���$�� ���� ���� ���� ��#���5�������������� .���$5����%���������������/�$��=

�������GM��

>!��������,?��$���0���)�������7���$�������0�)��$������������$�$��!��L�� .����)��$�������������$��������������!����& �����/�$���������� D�� ������$5����EGEC���)��$�����������/�$��=

�������GM��

.������$����)��$�������FVVV�-�)�������WWW

���������������������

�II�

��������������������������� .� $�� )�������� �� �� �������� )��$������� ��������$�� #���� �-����� ���/�-����� #��� �� �� ������� ��� � $,� ����� �� �� ��)����� �� ��� ��$#�� �� ��������������/���������-�������/�-������%���������$�����+'%$ ��������0��,�����$����#�������������������$����/����������+'%$ $��$������������$#������ #���-� ����� �� )���� �$������� ���� #���-� ����� �� )���� �+�� ��� ���� ��#� ���$�&�������������������������������������0����� .���0����������$��������������!�"�������/�$��=

MODIFY CLASS ETIQUETA4 OF CONTROLES AS CONTAINER

D��������$�������������������$�0�$�������� ������#�������=

�������GM��

.� ������� ����� ���0� #��� ��/���� ����,� ����� ���������� �-��������0������-����� .�������������!����'= - BackStyle = 0. Transparent

- BorderWidth = 0

- Height = 23

- Width = 720

.����������������=

- BackColor = 255, 255, 128

- Curvature = 20

- Height = 23

- Left = 0

- Top = 0

- Width = 720

�%������ �� �$��������������!����'������������!����&��� ������$���������$#�����������>���$��� �� �������������������������������#����������$��$��?7���� ���-������� '�#��/��$��D����������� ��������������$��#�������������$���)������������������0�����������!�"�������������$������������ ������ 0������� �� ����$�� �� ���/���� ��� +'%$ $� ��� ����0�� � ��� ������� #����������#���������������������$�����

���������������������

�IN�

.�������������!����&�= - Height = 23

- Left = 0

- Top = 0

- Width = 720

- Label1.Alignment = 2 – Center

- Label1.FontBold = .T.

- Label1.FontSize = 12

- Label1.Left = 0

- Label1.Top = 3

- Label2.Alignment = 2 – Center

- Label2.FontBold = .T.

- Label2.FontSize = 12

- Label2.Left = 2

- Label2.Top = 5

H�%����#���#��������"�� ��$������,���!����'����$����$5���� ��������� ��,�������+����������=

�������GM�;

�������GM�I

���������������������

�IO�

3���$/�� ��'� )������ �� �� ��$�&�������������!������ �-����� ��%�$��)�������O������>�����������$�� �����$,�������$,���� �?.�����������������, $�������� �� ��"�� �������� � ���5����$���� ���, )��� ��- �� ����$�� ��������������������0������������������$5����EGEC������!����'��� �� �$������� ��������-����=

�������GM�N

D� ���� ��� ��� ��� �� .�� ����; � ����� ��� ��$#������� ��� �� ���$#���"����$������$��$����%��#�������������"������������� �������� ��#�����,���$#����������� A������%�������$�������)����%�������#���/�#���0���)���� �����!����')���������$��������$��������������$�������0�)��$�����������������$�$��!��L;���� �� �$������������������!����'������$5����EGEC�����/�$��=

�������GM�O

���������������������

�IQ�

��- ������$����������������������)��$�������0������$#��������������"#������0�����%���$����������� ���/����$��=

�������GM�Q

H �-� ��� �-����� �#������ #��)����$���� ���������� �� �� �����$���� �� �� ���-�$������� ���� 7�$�������$����������$�����#���-�$�������0������������������� ������$������ ��� �-�����������/�-����������������#������������� �������������������#���-������������������)�����$������������#���-��������������������+��������/������������� �������C�$/�5������#���������������$�&�������������#���-����� ���������� ��- ��$� �� ����� ��� ��"��� H� ���� ��#�����, �� ������� ������0����#�� ����������!�"��������������0�����������$�������#��$���%����$���0������

���������������������

�I9�

��������������������� 4�� $��%-��$�� /������ �� #���-�$�� %����� �� �� ��� /������ �� ����$��%� � ��$��%�� �����"�����%��� %���$�� ��� /��� �������� ���� '���� )���������, ��$#��� ����0������D�%���$����-#���#���� ������������� ������ ��������� ��������$��%�������$,���������� .���0����������$��������������!�"�������/�$��=

CREATE CLASS BOTONCANCELAR OF CONTROLES AS COMMANDBUTTON .���#��#�����������������/�$��= 7������� H����$5�������(�����/�$��= 7D.��.�.GC3 H ��� �� ����� � #����� �� �%��� �� �����$�� ��� �� /���� �� ��� #��$����,������������0������������#����$��������$��%�����������������

���������������������

�N��

����������������������������������

.�$��%�� �#���������� #���$�����������$������ )��� ��)-��= ���� ���-����������$#�������������$�������#��)�������������$�0�������������������� '�������#�������� ������$�������+����$������)����#�������������������� ��+,�������0��������� 7�� �� +'%$ �� ������������$�� � ������������ ��� #��0����$�� � ���������#���������� �� ��� ��������-������ 1���� ��� � �� #���$�� $������ )��� ��)-�� ���������������������+'%$ #��������#���%���5�����������$�������������$��$,�),���� .���0����������$��������������!�"�������/�$��=

CREATE CLASS FOTOS OF CONTROLES AS CONTAINER

D�� ����������$��=

�� 1��������������)���� 1������������������ <���������� ��

.����������*��������/�$��=- BackStyle = 0 - Transparent

- BorderWidth = 0

- Height = 299

- Width = 331

.�������������)�������/�$��=

- Height = 32

- Left = 149

- Top = 0

- Width = 32

.�������������)�#�����/�$��= - Height = 237

- Left = 7

- Stretch = 2 - Stretch

- Top = 36

- Width = 316

.������������ ��������/�$��= - Alignment = 2 - Center

- BackStyle = 0 - Transparent

- Caption = (nada, lo dejamos en blanco)

- FontSize = 8

- Height = 15

- Left = 3

- Top = 282

- Width = 324

���������������������

�N��

.����������+����������/�$��=- BackColor = 0, 128, 128

- Curvature = 20

- Height = 243

- Left = 3

- Top = 33

- Width = 324

.����������+����#�����/�$��=

- BackColor = 192, 192, 192

- Curvature = 20

- Height = 243

- Left = 7

- Top = 37

- Width = 324

7��������%�$����$#��������#����0�������������������������� ����%�$��#�����0���������������#��#������� ����������������%���)���������/�����$5���������� ��%���$���������������= .���$5����������*����������/�$��=

�������GM�9

D� � �� �$�� �� $5���� �� ���� ���$�$�� %������ �*���)�,�� � �� 5������/�$��=

�������GM��

���������������������

�N��

.� $5���� �������� ��� ���0��, ������ �����$�� $������ ��� )��� ��)-�� D���0��$�� ��$� #��,$���� �� ��$/�� �� �� )��� ��)-� �� ����$�� 0������+�� � ��$5����������� ��,������ .��� ������$5�����#�������������������0��0��,����$/������)��� ��)-� ������$��0������+�����3���$/����- ������� �*���)�,���

�������GM��

��- �������� ����$���/���������$/������)��� ��)-� ������$��0�����#���$�������/���� ���$�=

ThisForm.Fotos1.NombreFotografia() H #��� ������ ����$�� �� ��� �� ������� ���� ����� �� )��� ��)-� �� ��$������,�#���$������ ���������� �����$5�������(�������������)���

�������GM��

7����� 5� %� � ����P ��/�� �� �$� �� �� �� ��$����� �� �/���, �� ������ ����,�� � ����#����, ������������%�0��3���� �������%�0������������,$���������������������)�#�

���������������������

�N��

����)����������������������� ��#���$��� �� �������������������!�C�3����#���/��������$�������������0�)��$��������$��$��$� �� ������$����������������)�#�#���������$�&�$��%�$����#��� �����0������+���$����� �������� ������)���������$5����.�������������/�$��=

�������GM��

>K�5 %���$�� � �-? 7���$�� �� ���0� )��$������� �� ���� �� � �� �$�� ������������= ��� �$� �� � �� /����� .� ������� �$� �� ���0��, #��� $������ �� $��$��$� �� �����,/�$��0�������������������)�#����������*������/0��$����������$�&�$��%�$�����H��/�������0��,#�����������)��$������� .��� )��$������ �"���� ����$���� �� �� $�$���� �� �� ��$#�������� �� ���, ��/�����������������.���)��$��������$#����������������+�$��#�������������#��-)���@�����������$���������)��� ��)-�B���� ������$���$��� �������$�� �� %���� �� ��)���� � �� +'%$ � ,%�# � �� ���$#�� ������ �����)��������/�$��=�4�� %�U�������4�� %��� ������$��%�������������5�������

���������������������

�N;�

������!�"�� �������$�� �������������� �$� �����)��������$��$� �������������)��$������@#�� ����)��$����������+'%$ �,%�# �������������)���B� 3�$����$����� ������ �����/�$�� �����% U �����������% �� �� ����$��%������� ������5����� ��������!�"�� �� �� ���%��� �� �$� ����/� ��� � ��� �����%����)��$������� A����� �%��� ����$���� ��� ���� ����� �� )��$������ #��� #��/�� �� ��������������*����)���������������$�������� ��- ������0����������$��������������!�"�������/�$��=

modify form FORM5 D�� �� �$�����������*���������$5�����������)��$�����������/�$��=

�������GM�;

>��� �5 ����? ��� �� ����� ������ ��� )��$������ #���$�� ��)������� ����� ����������+'%$ $ �����,�������������%�0�7�GC��D.3��78� >H ��������$�� %���� ���? 3-� #�� �� �� �� $5����.�������� ��� ����������)�#%�/-�$���������= .AddObject("BotonC", "BotonCANCELAR") H ��$� (A����7�G7.D��* �� �� ��� �� ��� ��������� ���,���� ��� ������!�"�� ���� �� �� �� ������� �� ����$�� �������� �������� ����$�� �� ��������������������������H����������$������ ��%����������������3.C7D�33DEA��������������/�/������������������ .���������������!�"��/�������������/�����������0������������%�0�7�GC��D.3��78���������������-�F�����)������� A������%��� ����$������� ��������������� )��$�������0�� �� �� ��%�$��%��%� )������� /���� ��- �� �� �������$��� %���$�� ����P ��/�� �� �$� �� �� ����$������ ��� �$�� ��� )��� ��)-� �� ����$�� �� �� ����� ���� � ���� �� �� ���/����$��=

���������������������

�NI�

�������GM�I

�%���$�0�$����L������/����)��� ��)-���������� ���/����$��=

�������GM�N

���������������������

�NN�

�������������������������������� D�������������$��$������ �����$��%������������������#�����������������������������#��#������#�������������������������)��������,���������������#��������� �%���������$���������������0��������� �� �������+���$��#����� ��������� ������#��������������)��������������#�����5��������$���$����)���1��� .���0����������$��������������!�"�������/�$��=

MODIFY CLASS INGRESODATO OF CONTROLES AS TEXTBOX

H������ ��$�������0����������#��#�������= - BackColor = 250, 250, 250

- BackStyle = 1 – Opaque

- DisabledBackColor = 232, 232, 214

- DisabledForeColor = 0, 0, 0

- FontName = Courier New

- ForeColor = 0, 0, 255

- Height = 23

- Width = 100

.��� �������#���-�$�������+����#��� �� ����� ���� ���� ��#��������� #��� �����$�� �)������ #��� �� ����� ����� ��#��-)����� ��� �� ����� )��%�� ������$�� ������0�+'%$ ����������$���$����)���*����.���0����������$��������������!�"�������/�$��=MODIFY CLASS INGRESOFECHA OF CONTROLES AS INGRESODATO FROM CONTROLES

.���������%�$���������������0���,���������$���!��L>#�� �5%���$�����? .� ��� ����� ���������� �� ��� ��������� �����/���� #�� �� ��� ��������� ��������0���������+'%$ $���,�������������!�"���#��������������)���*�����������0��� �� ��� ��� �� ��� +'%$ $� ���,����� ���� �� ��� +'%$ �������� #�� �� �������/�$������������������������������+'%$ �

D����� ��$�������0����������#��#�������= - DateFormat = 3 - British

- InputMask = 99/99/9999

- Value = {}

- Width = 81

3�$����$����� �%��� ������$�� �� ���0� �������� �� ���� ���� #��� �� �������������������������$���$����)������������.���0����������$��������������!�"�������/�$��=

MODIFY CLASS INGRESOCANTIDAD OF CONTROLES AS INGRESODATO FROM CONTROLES

7�$�0�$�����$/�5����,����0���������������)���1����

���������������������

�NO�

D����� ��$�������0����������#��#�������=- InputMask = 9,999.99

- Value = 0

- Width = 67

H����$5�������������/�$���

�������GM�O

>K�5 ����$�� %������� � �-? 1���5����� �� ������ �� ���%� ��� ������� � ���������������������� ��%������#��#����������.��(�>H#��� �5%���$�����?��� �������������������$#����� ������%��"����� �������$����@���������������-�$�����#������������#����B��$����@������������ �����- ����#���-����0����B������������ H�%���������$�����������#�������$#������.�$����$�������������������������$/�����E�#��L��P�������%�.���0����������$��������������!�"�������/�$��=MODIFY CLASS INGRESOIMPORTE OF CONTROLES AS INGRESODATO FROM CONTROLES

H������ ��$�������0����������#��#�������= - InputMask = 999,999,999.99

- Value = 0

- Width = 109

.���$5�������������/�$����$��$� ��%�/-�$�������������$5��������������������)������������ ��- ��%�$��������;���������#������� ������������������������=

�� !�# $��%"� �����0�#������� ������#���������� !�# $�� +>% �����,��#������+�����)��%���� !�# $��%!"��%� �����,��#������+����������������� !�# $�),�#" �����,��#������+������$#�����

3�)�������������#���-�$��� �� ���� ����$,��#�����$#����$"#%#��"%' $

�� ���� #���-� ��#������+���� �� �������� ���-�$�� ��$���� � !�# $�),�#" #��� ��

���������������������

�NQ�

#��#����������.��( �����-�$���������������'$����9�#������#��� �$#������'�$������������-����%�/�������#��� �������������#������$/��������������� � ��+,� !�# $��%A�$+�'%$ #��� ��� ����������� �� ��� ������ ����� ���������������/���������$��'�������H��-������0�$����� A����� ��$� �� �����$/�� ��� )���� #��/�� �� �� %�$�� %��%�� ��/�$��0���)���� ��)������������P������������+���������������������������#����������� �������������$�������0�)��$����������������$���$��!��LN���$���0������� �������-���=

modify form FORM6

D�#���$����A��P7�������9���9���9���������$�������������������#���������$����)��$���������$�0�$�������� ������#�������=

�������GM�Q

H�-������������ ����������%�������������#�����0���������������������$#������������������)�����������2���)������������)���*�����#���$���� ������������H������'���$���/�$���� ��������)��%�0,����#�� �����������$�������/�����)��%���$�=��X��X������������!�"�������%�+��,#�� �����"������$���'$������

���������������������

�N9�

�����������������������������������

.� �� ���$#�� GM N @7������ )��$������� #�� #�� ��$�B � �� �� +'%$ #���$������)��� ��)-����%�/-�$��0������ ����)��$����� �� ������)��$�����������)��$�������� �-#�������$�������5�����= .� ��$5���� ���� �� ������� )��$������ #�����#�� � �� ���� ���� ����$5����@#�����$#�����������%�������P��/����/��������$�����B�����/�$������ ���������� �=

�������GM�9

7���$�������0�)��$���������� �� �$�������� ������������GM�9����$5������������������$����������� ���/����$��=

�������GM;�

���������������������

�O��

���� ���%�������$����)��$����������������������������)��$�������.����0�)��$�������"��������$��������$�$����������, ��/���������������������� ��)��� ����������������������#����������$����� �������$��'���#���$������$�������������������0��������� �����������.� ���������������)��$���������� ��������������)��$������ �������$��%���������#���$��$������������� ���������5��������)��$���������$#������ ��%�$��0����� .�)��$��������$#�����������������#��#����������������$5���������+'%$ �,%�# �!��L�.���� ��)��� ��#���$����$/��������������)���������#������� ��$�&�� �� #�������� �� ��#� �� ������� ����� �� $��$� �� #���$�� %���� �� ���)��$����������$������$/�5�#���$��%������������)��$���������$#������� 3� �� ����$�� ��)������ ��� ��������-������ ���,������ �� �������� )��$���������$#��������������������������,$,��,#��� �������)��$����������$��������$,��#���$��������� ������ �����$#�������,����#���/�������������$�������� �����0������� �� ��#��� �� '� ���%�0� �37C � �378 ������ ��� ��$/��$�� ����$#�������� ��#�������������#��������������)����������������$�����7�����)��$���������$�$�������������#�����������$#��)��������

���������������������

�O��

�4�������������5������� .�������!�"�����#��#����������$5�����$��'�����=���������)��.�#��$��� �� ������� ����$,����$���� ������ �� �/����� @���� ����#���B �� 0���������#��#������H���� �����������������$,����$����������������� �������0�0��������#��#������ .����$5����� ������ ��$��$���$/�� �� ��#��#����� � �� ���� ��)��������#���)�����+�����\����������\���� ���� '�������#����� >7�,���������0������� ���/����$���������+�����? K�� #���$�� 0������ ��� 0������ �� ��� #��#������� ����� �� ��� ���������� ��,��������- ������$��������$��0������0,������ .����$5��������,�$���������$�,#�" ����$�����$#��������������������$#���� ����#�����������������������)����������������������/�������� H ���,� ���#���/��� ����� #��� �������� #��#��� �/����� ��$�#��� ��� �/���������0������!�.�.LD�����6Local loFecha

SET CENTURY ON

SET DATE BRITISH

CLEAR

loFecha = CreateObject("Fecha")

with loFecha

.dFecha = CtoD("01/01/1940")

.ImprimirFecha()

.PonerFecha(CtoD("31/12/1995"))

.ImprimirFecha()

.PonerFecha(CtoD("21/04/2011"))

.ImprimirFecha()

endwith

Release loFecha

Return

*

*

���������������������

�O��

DEFINE CLASS Fecha AS CUSTOM

dFecha = {}

PROCEDURE dFecha_Assign

LParameters tdFecha

if DtoS(tdFecha) < "20000101"

=MessageBox("ERROR...la fecha " + DtoC(tdFecha) + " es

inválida")

else

=MessageBox("La fecha " + DtoC(tdFecha) + " es correcta")

This.dFecha = tdFecha

endif

ENDPROC

PROCEDURE ImprimirFecha

? This.dFecha

ENDPROC

PROCEDURE PonerFecha

LParameters tdNuevaFecha

This.dFecha = tdNuevaFecha

ENDPROC

ENDDEFINE

*

*

7�$� #���$�� 0��� �� $5���� �!��%�\���� � �� ���#�� )��%�� �� �������������������.�����������7��� ���������������� ��������#��#������*������)��%������������,���%�+�������$,���$������,��$�������������� C����������� �������������%�������������$�������= ��!��%���!��%�U7��1@(��X��X�9;�*B ����������$��������05���= ��!��%������!��%�@7���@(��X��X�99I*BB ��$5�����33E6G������� ��,�����%�+������ 7����� �� )��%� �� ������ �� 0,���� � ����$�� �����+���� ��/�$�� ��� ������"#����$�������$���0������-���= This.dFecha = tdFecha

���������������������

�O��

D��$5����� �77.33 � �33E6G ��$/�5� ���,� ���#���/��� #��� ��� �/���������0�����������!�"���#�����$#��#���$�������/��=.�.LD�����6Local loForm1

loForm1 = CreateObject("MiForm")

with loForm1

.Caption = "*** CAPTION DEL FORMULARIO PRINCIPAL ***"

.Left = 100

.Width = 500

=MessageBox("Este es el caption: " + .Caption)

endwith

Release loForm1

Return

*

*

DEFINE CLASS MiForm AS FORM

PROCEDURE THIS_ACCESS

LParameter tcPropiedad

=MessageBox("Se accedió a la propiedad: " + tcPropiedad)

Return(This)

ENDPROC

PROCEDURE LEFT_ASSIGN

LParameters tnLeft

=MessageBox("Se le asignó a la propiedad Left el valor: " +

Transform(tnLeft))

This.Left = tnLeft

ENDPROC

ENDDEFINE

���������������������

�O;�

����������B������� .�������!�"��9��������/����#'/����������$/����\3��������������#��$�����#���)����#��#��������$5�����#�����#�������#�����#��� D�/������%��������� ��#���$�������#��#��������$5�����0���/�������� �� �#�������� ��� ��������� �� �������� � ��� 0����/��� ��$� #'/����� @��� �������������<ADE7B�H ��$���F�� �� ���#��$��� ����� #��#������� �$5����� �����#'/������.��-�������#�������$��'���#���%�� ��$������������������� >K�5 #���-�$�� ����� �� �� �/���� \3�����? 7��� ���� ���� �� ��� ����������������#���/�������� ����#��������������#��������� *--- Se definen las propiedades y métodos del objeto _Screen

*--- Es decir, los que se usarán en todo el Sistema

with _Screen

.AddProperty("cNombreAplicacion", "Mi Gran Sistema Informático")

.AddProperty("cCarpetaUbicacionEjecutable", JustPath(SYS(16, 0)))

.AddProperty("cUsuario")

.AddProperty("cContrasena")

.AddObject("MiProcedimiento", "MiClase")

endwith

*--- AQUI VIENE TU PROGRAMA PRINCIPAL

with _Screen

.cUsuario = "nombre del usuario"

.cContrasena = "contraseña del usuario"

endwith

*--- AQUI FINALIZA TU PROGRAMA

*--- Se eliminan las propiedades y métodos del objeto _Screen

with _Screen

.RemoveProperty("cNombreAplicacion")

.RemoveProperty("cCarpetaUbitacionEjecutable")

.RemoveProperty("cUsuario")

.RemoveProperty("cContrasena")

.RemoveObject("MiProcedimiento")

endwith

Return

*

*

DEFINE CLASS MiClase AS CUSTOM

PROCEDURE MiProcedimiento

ENDPROC

ENDDEFINE

!-���� ���������������J��%\3��������,��#������0����= D��]���0�#���� �� ����#��#��������$5��������/����\3����� D��]����� ��0��������� ���������#��#������� D��]���$������#��#��������$5����� ����%�/-��� �� ��������] .�$5���������#����@B#��$���� �� ����������0�#��#���������/�����3�����������$/�5�#�������#���)���������0�0��������#��#������

���������������������

�OI�

�����$#��������-���=.AddProperty("cUsuario")

����� �� �������0�#��#��������/����\3���������$���3������#���������������0���������#��#����������$/�������-���=

.AddProperty("cNombreAplicacion", "Mi Gran Sistema Informático") ����� �� �������0�#��#��������/����\3���������$������ ������������$/�5�������� �����0��������������=(L�6���3����$�E�)��$,����*� .� �� ���� with _Screen �� ��� �� 0������ � ��� #��#������� ��������$����� �� �����\3�����#��������������'�������%�/-����� �����0������� .������� with _Screen ��$��0�@/��������$���������%�B���#��#���������/����� ����#��$�� with _Screen %�/-�� �� ���>#�� �5%�������?�� �����/���� �� ���� ��#�� ��$���������= (����������������� �� ���5���� ��$�����/��������������*� .���������� ���� ��$�0�$�� ���#��#�������� ���$5������������ ���$�����������#��������������'����������,�����������/����\3������3����/���$������0����������$��������������!�"���#����$����$#��/�����>7<^G1�<3��.D�A�.C�\37�..G? 7����� ����$�� ����0�������$5�������5���#���/�����������#���������������$#�������5����������� �������� ��= (D���� ����������/�%�������������� �������$���������*� ��� ����������������� �� <����+��������$��%���� ���� .���� ��)��� ���������$,���/�$����� ���������#��#�������\3�����0����������$,��� ������)�������#�� �����������#���-�$�������#��/��$����-#���$��������������$�� ����#��#������������0����#����������������������� ���$��������0��������#��#�������������0���� ���������$��������������� ���� ���������$��F#�������� ��$����0�������������� ��� 3���������$�������� ����������������,�/����H������������$������������#���F�

���������������������

�ON�

�������������������������(�(�(� .���!�"�������������$������$����������������������� ��������%��-������������������G.�����!�������/���� ��)�����������#�����0�$�������������%������������������ ����$��%�$�����

3��������C�HF7�C74F!EG�DDH >7�$����������+�? 1�/�����C�H#���$������������������ �� ����$������������ 1�/�����7�C74���������������� ��$���������������������������� 1�/�����!EG�DDH���������������� �� ����$�������������$#���.�.LD�����6Local lnMiNumero

CLEAR

*--- Quita uno solo de los asteriscos de abajo y mira lo que sucede.

Luego ponlo a ese y quita otro. Todos son errores puestos a propósito.

TRY

* abc

* lnMiNumero = lnMiGranNumero

* do MiProcedure

* set printer ot

CATCH TO oExcepcion

lnErrorNro = oExcepcion.ErrorNo

lcMensaje = ""

do case

case lnErrorNro = 1

lcMensaje = "El archivo no existe"

case lnErrorNro = 10

lcMensaje = "Error de sintaxis"

case lnErrorNro = 12

lcMensaje = "La variable no existe"

case lnErrorNro = 16

lcMensaje = "Comando no reconocido"

case lnErrorNro = 36

lcMensaje = "El comando contiene una palabra no reconocida"

endcase

=StrToFile(DtoC(Date()) + " " + Time() + " Ocurrió el error Nº "

+ Transform(lnErrorNro) + " " + lcMensaje + " " + Chr(13),

"SISTEMA.ERR", .T.)

FINALLY

ENDTRY

Return

*

*

.���#�� ��$�������/���������$����������������#�����������0�����������%�0� �� ��"�� ���$��� 3E3C.L��.��� ��0������ ��� ���%�0� �� #���, ������� ��)��%����%����������������������������-��$���$/�5����'$������$������

���������������������

�OO�

������#��0��.�$���$#�������#������������������ ��$���������������������H�������$���� ����#���-��� �� �������$,����$���$/�������#�����������$/�����#�� ��$����$/���������������$/��������$#������������ G������������%������������$������C�$/�5�#���-��%�/������#�������������������������7�C74�$�����������-������$#�����#���%�/���������= CATCH TO oExcepcion

lnErrorNro = oExcepcion.ErrorNo

lcMensaje = ""

do case

case lnErrorNro = 1

lcMensaje = "El archivo no existe"

case lnErrorNro = 10

lcMensaje = "Error de sintaxis"

case lnErrorNro = 12

lcMensaje = "La variable no existe"

case lnErrorNro = 16

lcMensaje = "Comando no reconocido"

case lnErrorNro = 36

lcMensaje = "El comando contiene una palabra no reconocida"

endcase

=MessageBox(lcMensaje)

H#����#����� ��%��0�������������������0��������������������� �������#�� ��$����� D� �$#������� � �- �� �� ��� �� ������������ C�HF .G1C�H ��#���������#������������������$�����������������+���$����� .�� %��, �� ������� �#�������� ��� $,� ����/�� � �� ��� ������� ����������������������� ������������ ����0�����<3�G1�.DL[C�1�.����@B ���$,� ��C�HF.G1C�H���� #���/������ �� ����$�� #���$������ ��������������������#���������������/������ �����$5����.����@B �����������������/������ .�����$5����#���$����#������#���������������������� ����������

���������������������

�OQ�

������@��������C���� <�� �� ��� ������ 0������� �� ����$�� �� �����+�� ������ �� �� #���$������$���+�� �� ���� #�� ��$��� #�� ���$#��= ���� � ."���� �%��� 0���$�� ��$�����$���+������������� ��������#-����0���$����$�����$���+��."���� ��� ������� �� ������ !�"�� �� ����$�� ����$���+�� ���� �$#�+�$������������/�����������FL3�����

Local loWord

loWord = CreateObject("MSWORD")

with loWord

endwith

Release loWord

Return

*

*

H �%���� ������ ���J��%F���J��% �����/���$�� ����� ��� ������������� #���%������ �������$��������$#��=

�� 7���������0�����$������ �/���������$������ � �� ����"���� L����������"������ ��������/������������� L��������0����#��0���������$������ E$#��$��������$������ 6������������$����@��$��1�7��1!�����B�� 7�����������$����

����������������������������L3���1#�����$�����#��#�������=

DEFINE CLASS MSWORD AS CUSTOM

cNombreDocumento = ""

cNombreImpresora = ""

oWord = NULL

oDocumento = NULL

oRango = NULL

ENDDEFINE

D� #��#����� ��� �1������� $�������, �� ��$/�� ��� ����$���� ������$����������� D� #��#����� ��� �������� $�������, �� ��$/�� �� �� �$#������ �������$��������0���$����$#��$���1�/��������$/��������$#��������������������������$#��������

���������������������

�O9�

.�0���� ��������� ��#��#������ �� ��G<DD>#�� �5���?#�� ��������������$�����/�������0�����������������/�����#���$����)��������$�G<DD�.����/����� ��������$��#��#��������$5����� ��/����� .� �� �/���� �1������� ������$�� ��� #��#������� � ��� $5����� �� ����)����������������$����� H�����/�������� ����#��#��������$5����� ������)����������� ��������$����� >7�$�%��-�$����$5����#�������������0�����$����? PROCEDURE AgregarDocumento

with This

.oWord = CreateObject("WORD.APPLICATION")

.oWord.Visible = .F. && No queremos que Word sea visible

.cNombreDocumento = ""

.oDocumento = .oWord.Documents.Add()

.oRango = .oDocumento.Range()

endwith

ENDPROC

>H#����/���������$�������"�������? PROCEDURE AbrirDocumento

LParameters tcNombreDocumento

with This

.oWord = CreateObject("WORD.APPLICATION")

.oWord.Visible = .F. && No queremos que Word sea visible

.cNombreDocumento = tcNombreDocumento

.oDocumento = .oWord.Documents.Open(.cNombreDocumento)

.oRango = .oDocumento.Range()

endwith

ENDPROC

3� ��$#���$�� �$/�� $5����� 0���$�� �� ��� /������� #��������� D� �����)��������� ������$5����� �1���������#���)���$������$/�� �� �����������$���� �� ����$���/�������$����$5����-���45����/����� ��� 3�$����$�����������$�����$5�����#��������+�������$,��������>K����$��$����������"������ �����? PROCEDURE FontNegrita

LParameters tlNegrita && debe ser .T. o .F.

This.oRango.Font.Bold = tlNegrita

ENDPROC

>K����$���$#��$��������$����? PROCEDURE ImprimirDocumento

with This.oWord

.ActivePrinter = This.cNombreImpresora

.PrintOut()

endwith

ENDPROC

���������������������

�Q��

>K����$��$������������$����? PROCEDURE MostrarDocumento

This.oWord.Application.Visible = .T.

ENDPROC

.� �� #�� ��$� .�.LD�����6 �� ���$#�&� � ���� ����$���� #���,������������#�� ��$� �� �����/� ��"�� �������G�%� �������� ���#�� ��$�� �-#�� ����$���"������#������-�����������,��/����"#������� ����$���+�����1#�������$#������#�����������������$,��$#������������������ ��#���$����)�������������$������$#����������� ��������$�������������������������$���������#���/��� H��������������#���$�������+�����#��#��������$5����� ������)������#�����$#������#�������������$�&��������������� C�$/�5���/�$���������� ����/�$������#��������� ��#��� ��)�����������0������ ��#���$��� H ��#���#��������� �������-�����/�$����0�������������������@����������� �74�@��B�3�����%���$����-�����"�����������,����$��$��-����

���������������������

�Q��

������@��������� ���� ����$���+��."�������#��� ��/������������#��������#����/������������������#�����������������/�������)�����������- ��0�����#�����/����$�%������� 7�����0�$��� ��/�������#�������."�������$������#������=

�� 6��/�������#����������0��� 6��/�������#��������"�������

.� �������#����%��������$#��%������/����������#��$���0�+����� ����

�#��������#��)���/��� 3� ����$�� ��� #������� ���0�� �������� �������� ����� �� ������ !�"������$�� ������������������/�����-�����������������������$/������������$��������������������$�&�������������������$/���������������%������������ ���-�#��� ���0� ���$#������ ����� ��0��������� � ����0�+ �� �� ����������/�������� ������������������� .� ��$/��� �� $���)���$�� ��� #������� �� �"������� �� ����$�� $��%� $,�),����>�� �5?#�� ����������������@�-��������#��������������������$/������������$���� ��#�� �� ������� �������� ����B �� ���, ������ �� �� #������� � �� '���� ��%���$���������������������������� 7��������� ��0���$���������������#����$��%������������ �������������$���������� ��������$����/������������ �����#����%�����$��%����$#�� G������������������������ ������=

DEFINE CLASS EXCEL AS CUSTOM

cNombrePlanilla = ""

oExcel = NULL

oAplicacion = NULL

ENDDEFINE

������������$��� �� ����)���������#������$������#���%������$,�'����#�������� ��������������0�#������������/�$������ ������#������$�����=

PROCEDURE NuevaPlanilla

with This

.oExcel = CreateObject("EXCEL.APPLICATION")

.oAplicacion = .oExcel.Application

with .oAplicacion

.Visible = .F.

.WorkBooks.Add()

endwith

endwith

ENDPROC

���������������������

�Q��

H #��� �/��� ��� #������� �� �� ���-�$�� ��/��� �� �� ������ �����/�$�� ���� ������=

PROCEDURE AbrirPlanilla

LParameters tcNombrePlanilla

with This

.oExcel = CreateObject("EXCEL.APPLICATION")

.oAplicacion = .oExcel.Application

with .oAplicacion

.Visible = .F.

.WorkBooks.Open(tcNombrePlanilla)

endwith

endwith

ENDPROC

��������/����0����@��"����'$����)��%�B���������������$������ ������#������$������$��������������$����=

PROCEDURE EscribirCelda

LParameters tnFila, tnColumna, tuValor

This.oAplicacion.Cells(tnFila, tnColumna).Value = tuValor

ENDPROC

H#��� �/����� �� 0���� @��"��� �'$���� )��%�B �� �� ��������� �� ��� ����������$������ ������)���������$/�5�$����������=

FUNCTION LeerCelda

LParameters tnFila, tnColumna

Local lnValor

lnValor = This.oAplicacion.Cells(tnFila, tnColumna).Value

RETURN(lnValor)

H#���$������ ��#������� @�����#��� �����0���/�����������B ����$������#������$�������������-��$�=

PROCEDURE MostrarPlanilla

This.oAplicacion.Visible = .T.

ENDPROC

7�$� 0��� ����$���+�� ."��� �� $�� ),���� #���-�$�� � �� ���� �'� $��%��#������$������� )��������=#�����/��������������#���� ��"������ �������$/������������� ��"��������#�������� ����� ����� ����$�����������.�)����-��$���� ��%���)������)��$�����������+��� �������6�� ��� ������������� ��������#��0���,��������#������ ������������

���������������������

�Q��

������������������������ <�� +'%$ �� 0�����$���� ���$�$��%� �� �������� �� �� ������ H ��� �� �� ����� ��#��0����������!�"���� )��$����,������$��/�����%��0���������� �� �� )����� � ��#���$��� �� ����#���%������$���� �$,� �������� ��������������������������$#���#���-�$��� �� ��������� ���������������-������=

�� K��������������������� '��������$����������%�������P ��/�� ��6�������������$��

�� K��$������ ��� ����� ��� �� ����� �������� �� ����� �� ��� ��$,� ����������$#�������$��������������$#��������������

�� K�� $������ ��� )���� �� ��������� �������� �� '� �� ��$#��� �� ���������������

�� K��$�������������������������$�����$5������� K��$������ �,)�������� ������������ K��#��$��������+��/'� �����

.���0����������$��������������!�"�������/�$��=

MODIFY CLASS GRILLA OF CONTROLES AS CONTAINER

7��������������$����������������������0�+'%$ ����$���6�EDD�� ���� ��/��, �� �� ���%�0� 7�GC��D.3��78 � �� ���, ������������ �� �� +'%$ 7�GC�EG.��>7���������#�� �5�����������?�� ���������+'%$ �� �����,������� ��������� ����$/�5������,��"�/�"� ��$������,��������������������$����#�������#���$��%���� ���������������$������6�E1�7��������+'%$ ��/������ ��$#����� #�� ��� � $,� �&. "�$ �������� ��/�$�� ������� ��� �� �/���������������#�����$#��������7�GC�EG.��7�D��.31.D�3!ED�3 <����$���� ������ �� �����$������ ��� )���� �� ��� ����� �� ��� ������� �������/��� ���$�=

Thisform.Grid1.SetAll("DynamicBackColor", ;

"IIF(MOD(RECNO(), 2)=0, RGB(255, 255, 255), RGB(0, 255, 0))", ;

"Column")

D�������������)������$���������)����#����@��;�N�Q�����B�������/���������)�����$#����@����I�O�9�����B�������0�����.���������������#��/�������� ����$��$�����������������#���F>��� ����$��$��������I�Q����������?���-����$�� ��� ����������= � �����+�$�� ��$����� �� )�������� EE!@B � �����+�$�� ���)������E7�3.@B�3���$/�� �%��������������0�$��%�$����=�����+����$5��������)������#��#�����#������+�������0��0���������� 3�#�� �$�� �� ����$��$���������)�����������������=

�� ����������$#�������� ���0��� A�����������$#�������,������������������ �+��������$#������$���� �����������

���������������������

�Q;�

.��������������/��-�$��=ThisForm.Grid1.SetAll("DynamicBackColor", ;

“Thisform.ObtenerColor(MiCondicion)", "Column")

H��$5����C%��!��$��/�����7����@B#���-������ ���$���������=L[C�1��/�����7����D���$�������E$#����D������7����

������ ������E$#����_� ��7����U�6A@�II����B YY7�������� ������E$#����`U���G1���E$#����_U������� ��7����U�6A@�II��II��IIB YY7����/����� ������E$#����`������� ��7����U�6A@�����IIB YY7�����+�� �������������@��7����Baa

���������������������

�QI�

��������������������� 7����� �� � �� �$�� �� ��$/�/�" � �� )��$������� �� %���$�� ����P ��� ��/���������%���/��5����� �����P��/�����#����(A������*0�$���� ���$�����=

�������GM;�

.���0������ ���#������ �� �������$��-����=(7�$/�A�"A������*����+�!$"#�+"�#���������7�$/�/�"� >H#��� �5���0�?��� )������������� ���������������$/�/�"=� �� ,������#���������� ������������������� ����������������� .�$��%�$,�),�����)��������$/�/�"�������������������� ����)���������������������$����#�������"����� H ��$� �� ������ !�"�� �� ��� /���� � ��� #�������F ��� #��$��� ������������������#�����������#��#�������������� ��������$����#���$�������+������������������#����)���������$/�5�#���$��������������������#��#����

���������������������

�QN�

�3�3�3.6<E����7�.��<G7�G3C�<7C��

��� �������������0�������/�$��� �� �������#��#��������$���A<ED1.���� .�0���������#��#��������,����$/�� �������@������,B�����%�0������ 7���$�� �� ���%�0� ��6 �� ����/��, ��� #��,$����� � �� ���$��, � ��

)��$�������#�����$#��=

L�EG\6�EDD���6LParameters toMiObjeto, toParametro2

DO FORM CONFIGURAR_GRILLA with toMiObjeto, toParametro2

;�� 7���$�� �� ���0� )��$������� ��� ����� ��� �#������ �� �����$�� #���� ����#��������������������@���������$#��=7�G!E6<���\6�EDD�B

I�� 7���$�� �� ���0� #������� � #���$�� ��$� ���%�0� #�����#�� �� #�� ��$�����������#����@����������=L�EG\6�EDD���6B

N�� 4���$������P��/����/����(A����F*���� �$��(�##��������@�##BO�� .�� �$������$/��#�����������#��������@ ����/���� � �������$/�� ��

#���$������#��#����������#����B��� �����$��Q�� H����,

�%���������������$�������+��������������� �����/�$������������$#��$����

��� �� �$����������0��������)��$������@������������$#������ �����B�%���$������P�����/���������%���/��������������@���������$#����� �����B���� �����P��(A������F*�F0���$����)��$������ ��%�/-�$������������#���GM;� ���$�������$#���%�$�������������0�)��$���������%�$��� �� ������ ������#���$����$������/�������#�������$����/���������%����� �$�����#����(A������F*��������� �������$�������

�������GM;�

���������������������

�QO�

����#����� ���������+�!$"#�+"�##�������$��%-��$�$,���$#����������$#��#���-�#��$���������� ������$/������������$�������#�������������$�&��� ��� ������� �� ����$�� ����/����� ������$�����$�������� ������� ����� ������#����������$��$��%-��$��� �����������������$�/������������ ��������������� ������� �� ���������� ������ .�������� �%��� �� ����$���� ��/�� ��$� ����� ���0�� ������� ��$/�5� ��/����$�� �� ������������������������������������������%��,�$��%�$,�0�������� 3� ��� ������ ��� %��,� #��� �� #��#�� ���� �������� ��+,� �� ��������� ������������������ #��� ������ #��� �� ������ �� ��������� �� �� ����� #������� ��� �����������������-���-�$��/���� ����� ����������������#���)��������������

���������������������

�QQ�

�����������������;<� .��� )������#���� ����$���� ���$���#���$��'����G��#��$��� ����+����$5���������������������$5���������������� 4�� ��� ���$#��� �� �� �����+�� � �� ����� #���� 0���� ��$� )������� � ���������� ��#�����/�������������)������� .��������)��$������1.L����378#���0�������������

�������GM;�

7�$/������$�&�����0�������������������/���������� �%�+����P��/����/����(7����/������*�)-������ ������������/����0�������$�&����0����������������������������/������� C� ����$����� �� �������� �� )�������$����� �� ���� )��$������� �� ���#��������#���,��������$��'����

���������������������

�Q9�

6�������������������������� ����������������������������

������7�� <���� ������ #" ) !" �"�, %����� ��� ��=

��� �� ����� ����������0����/������������������������������������ .������������������0����/������/���#���)��������#�������� �����#����� G����#������#���������������������������

<����$#������� ����)�����$������#������7������$#���#���-�$�������/��= $���@Bb

���L�G�$���.�����2 �%��L�G�$/��c;�d2 e 7�� �� ���� �� ����$�� ��L�G�$���.����� �� ��� 0����/�� �� ����$�������#���,�'$������������ ��L�G�$/�������0����/�� �����#���,��$�$,"�$�;������������ D� 0����/��L�G�$���.����� �� ���#���, ���������� �� �� 0����/��L�G�$/�����#���,�'$����������$#������������$�������+�������� ��������$����� ��������/������$�������������$#�������= L�G�$/��U���;IN2 .���$/���������!�"��������� �����0&�') !" �"�, %���.���$#���� ��#���$�������/��= L�G�$/��U(������* L�G�$/��U���;IN L�G�$/��U��O9 �5����#������%��������������0������#�����0����/��L�G�$/��� <� ��� ���� �� #" ) !" � "�, %�� ����� ��� 0������� � ��� ���0�������� D�0������ �� �� ���%�+��, ��� �������� �� �� ������#����� � �� ��#� ��������� ��0����/�� @��$� ��� ��� �������� ��$5����� �L�G�$/�� �� ��� �-���� ����������B � �����0�������� ��F���%�+��,������� ��������� .�����������������!�"��%��������������������=

4�J��=E$#��$���3���� C�#�� )��7������/������������/��7��� D������ ��� �-���� @��$� �$#��$����� �� ��#���� )����� #��� ������� �/����� �0����/��� �� ���� �B �� #���-� #����� �� �� ������ !�"�� ��� #��$��� �� �� ���$��������0���������)�����$������#�����

���������������������

�9��

L,��/�������������$������/�-���� ������= C��$#��$�������� ��#�� .� �� ���� ���� �� %�� �� ���� �� ��,������3 #��� ����� ��� ��� �/����0��>!��������,?4$$$$F�#��/�$���.����/�$�������0�#�� ��$�= D�7�D��L�G�$����3EGC.6.����L�G�$/���33C�EG6 ��L�G�$���U(.���������"��* ��L�G�$/��U������ ?��L�G�$������L�G�$/�� .������$������#�� ��$�#���0�� ���������F� VVV���#����WWW��$�� ������#��������#�����= .���������"�� ������ D�����!��� & #D%��+�##�#���������,������3��#���������0��������!������� ������ #" ) !" �"�, %��� 7������,������3�-#���$���/��������E������3������)�������������� �����$����������������#����0����/������#���/����#�����$#��������������/�$������ �������-�������#�� ��$�=

�������GM;;

G�� ������ ������ ��� ��� ��#�� �� ����� ���#���/��� � ������ �����/�$�� EG�0�$�� ����#����������/����#���/��(E��� ��*�

���������������������

�9��

.���������������������#������������������-������������0�������������!�"�� ���� ��� ���� )�����$���� ��#�����.� �����#���/���� �� ����� ����!���,� ��0������)�!"��� D� ���� ����� ��� $�������= �� ����� ���� �� �� ����� #��5/���� 0���)-�����3��$#����#��)���/��������5#��������������0�����������5�������������������%�/������$#��/����

���������������������

�9��

������5������������E.1�11.3�D�D.7C<�� �0����#���$������������������ �����#��#���������������������������#���$��%����$��),���$���������$5�����33E6G���$�0�$�������� ���������$#��=

Local loSoloLectura

loSoloLectura = CreateObject("PROPIEDAD_SOLO_LECTURA")

with loSoloLectura

.cMiVariable = "Este es el nuevo texto"

? "Mi texto = " + .cMiVariable

endwith

Release loSoloLectura

Return

*

*

DEFINE CLASS PROPIEDAD_SOLO_LECTURA AS CUSTOM

cMiVariable = "Este es el valor original"

PROCEDURE cMiVariable_ASSIGN

LParameters tcValor

=MessageBox("Error, la propiedad cMiVariable es de solo

lectura")

*--- Quita el asterisco de la siguiente línea para asignar

* This.cMiVariable = tcValor

ENDPROC

ENDDEFINE

*

*

.� ���� ���� �� #��#����� .�"��� �� �� �� ���� �������� �� �� ��� ��$�� ��0����5����������,�)�������#��#��������������,�����0������������� .�$5�����L������/��\�33E6G����������, ����0�+ ���� �� ��� �� �� '�0�������#��#�����.�"��� ��� 3� ����$�� �� �� 0���� ��� ���� #��� � �� #��#����� �������� ��/�$�������/��= C%����L������/��U�������

���������������������

�9��

>7fL�3�A.�3E<G��D�A��.3C^7���.7C�L.GC..37�EC�? �0���� ����$����/�������#���/��� �������/�����������������������������"�������������$���������������D�)��$�$,�������������/����������05���������$���+���������������$�0�$�������� ���������$#��=Local lcMiPalabra, loWord, llResultado

lcMiPalabra = "Visuel" && quiso escribir 'Visual'

loWord = CreateObject("WORD.APPLICATION")

llResultado = loWord.CheckSpelling(lcMiPalabra)

? "¿Existe la palabra " + lcMiPalabra + "? ", llResultado

Release loWord

Return

*

*

���E�AD.3H!<G7E�G.3.GD�37�CE�G C���� ��/�$�� �� #���$�� ��$/��� �� 0���� ��� ��#���� �� �� )��$�������/�������� ���������/���������$5������ ���$�= C%��!��$�7�#����U(.���������#������$�)��$������* C%��!��$�D�/����7�#����U(4�������-�*T1C�7@1�C.@BB H ��$/�5���/�$�� ��#���$����$/����������$���� ��#��#������#������%���$������P��/��������������� �����0��������#��#�������/����$����������#���$�����-��0���� �������������� 3���$/�� ���������!�"�����������#���/���������� ��$��#��� �����������.���0��������#��#��������/����$�����������������/�$��= U*4�������-�(T1C�7@1�C.@BB D��$#�������� �-������������-$/������ ������@UB������������� ��������#���$������������)�������� ���$��0�������$#������)��$������1.L��Q�378><3��.DL[C�1�+6- 45�D���E.1�1"�+�/�����L�3C���<G!��L<D��E�? 4�����)��$��#���/�����$��������)��$�������#���$�������/��= ��L�!��$�������34��@B �#���$�������/��= ��L�!��$�����������/��U�C�

���������������������

�9;�

>7�,�������)����������,���$����?

.�$5����+6- 45$�������� )��$������� ����� ��� ��#��#�����"��� ����0�����C�

D���)������������+6- 45���"��� ���� ��34��@B����$5�������� ��#����� �����/�� ���� � ������ �� 5�� .� ��$/�� � �� #��#����� ����$���� �� #����0���������)�����

.�� �$#���� ������������$�������� )��$������ ��$/�5� ������%������������ �������� ����-�� �� $5���� +6- 45 #��� �� �� '���� �� �� �������� �� �� ��)��$���������50���/����������#����������+������� ��������������>7fL� 3�A.� 7<�D.3 3�G D�3 ���E�AD.3 1.7D���1�3 .G <G�!<G7EfG���7.1ELE.GC�? 3�������%�/���������E������3������������������/�-'�+���� �����#������/��������-0��,���������0����/��� ��%������������7�L�7�LAE��D�3��D��.31.D�3��E.1�1.31.<G�6�EDD� En modo ejecución, con la función SetAll():

ThisForm.Grid1.SetAll('WIDTH', 40, 'COLUMN')

En modo diseño, selecciona la grilla, y escribe en la ventana

de comandos:

ASelObj(laGrilla, 1)

laGrilla[1].SetAll('Width', 120, 'column')

Release laGrilla

����0����)��$�������$����� ������0��,� ��F������������$�����������$��$����%������������������%������#�"����� �� ��#����� �� #����� �����+�� ����� #��#������� ��$/�5� �� �� ������@A��P7�����!���7�����!���G�$��!���3�+������B�

���������������������

�9I�

��������� 7�$���%�/�,�������������#��������$����� ������������������!�"�������� �����)-��������$#�����������������)5�����C�������0��������-�#���������$���� ����������$#��+���#������������� �'�%��$��%�$,� ��#������#��������/������������� �-����%����%�������/��������#��������$������� ���%��������������$������#������$#�+���������#��$����#����� .� )�����$���� ��������/�� �� ������ �� ��$�������� #�� �� �� )����� �� ������ �������#�� ��$����� ������ ������� ���, ���-� ���0������� ���$��%��� ��$�%�/�,�#�������$#��/�����#�5���������������$����� 7�$����$#����#�� ��$������ �� �$#��������� ��#����� ���$��%����- ����$��,���#�������������,�$��� ������������� �������� ��$/�5� �� %�� $��%�� ���$#��� �� �� ����� ����� �� �� ���#�������������� ������������$������������"#������������%���������������� �-#��)���������$#����������� ����%�/�������������%�/�����������0������-��$,���#�/������� ��%����-��� ����������$#������,����-���#������ �������0����� 7��� ���� ����� �� �������� ��������� � ���������� �� ������ �����+��� #�������$�����������$� ��$���$���� �����$#�����,�/���0������������/�����/���������

���������������������J��0g%��$������$