Sei sulla pagina 1di 95

Introduccin ................................................

Como se lleg a las clases ..................................


Beneficios al usar clases ...................................
Caractersticas de las cosas que existen ....................
Propiedades, mtodos y eventos ..............................
Clases y objetos ............................................
Clasificacin de las clases .................................
Ejemplo N 1 ................................................
Ejemplo N 2 ................................................
Simplificando la escritura ..................................
Clases base .................................................
Como crear subclases ........................................
Bibliotecas de clases .......................................
Ejemplo N 4 ................................................
Protegiendo y ocultando miembros de las clases ..............
Modelando objetos ...........................................
Creando formularios por programa ............................
Comandos, funciones y mtodos usados en la P.O.O. ...........
Como acceder a una propiedad de la clase padre ..............
Como ejecutar un mtodo de la clase padre ...................
Una clase label desplazante .................................
Una clase label titilante ...................................
Una clase label sombreada ...................................
Una clase label para ttulos ................................
Una clase de botones ........................................
Una clase para mostrar fotografas ..........................
Varias clases para ingresar datos ...........................
Agregar un formulario a otro formulario .....................
Mtodos ACCESS y ASSIGN .....................................
El objeto _SCREEN ...........................................
Manejo de errores en la P.O.O ...............................
Automatizacin de Word ......................................
Automatizacin de Excel .....................................
Una clase grilla mejorada ...................................
Creando un constructor ......................................
La funcin BINDEVENT() ......................................
Se puede convertir a VFP en un lenguaje fuertemente tipeado?
Trucos y consejos ...........................................
Conclusin ..................................................

4
6
7
9
10
11
12
15
17
19
23
24
25
32
37
38
40
43
45
48
52
53
55
59
60
66
69
71
74
76
78
81
83
85
88
89
92
95

' $ %

! "
# $ $
$
() "
*
+, #
#
$
+

$
"#
2#
$, ,#

3 /

%
+
)-

#
0

$
+, #
.
#

$#

0
/

#
#

&

,
+

/
$

0 ,

$
4 $ %
$# &

$#
#,

$
.
$ $

$ % #
$
$
. $#
$/ 5
0
%
$
%
$

0
/
$

) $

0
#

378

)
0
#

$
$

%
#

# 0
$
$#

,/
0
3

0
,

! "
9
$ %
9
/

$#
$/ 5
:

<

&

$'
= (>#
$ %
$

%
#

.
/
-

# $
$,

$
0 /
$
#
) $

#
$
# #
D
.
$ %

- )
#

#
% /- #

#
$

4
@7 /
0

!
.

6 C @ B .
)
#
$
/$# /
- $ )
$#
#
/
/
% $#
0
/
#'/
#
#
$
)
$
/
0
/
0
#
#
$
$
$
(#
$
/# #
)
#
$
$
#
# %
$# $)
/ - )
,# +
/ # %

#
#

/ - #
?*

/
$
)

# / $
$
)$#
#

. #
0
$/

# %

A
/
#

#
/

$
/
),
-

# %
#
0
%

$ /

$
$ (#

&

0
$

$ %
$ /

$ ) $
6
* .
$

1
4ED.
F
F
.G11

. . C
F
F
<GCED
$
D (#
$
$ #
$
#
#

$
#

*)
#
$

0
$
$
$ %

$#

D
$

$ %- $
$
$# #
)
+

C
# =

4
*
# / $ =
#
% J
#
$#
?D

$
%- >
$
(#
$# +
.
#
# / $ 3
# +
5
#
%
? K
#
>G )

>

3
$ %- $ $, ),
0 0
/ ?
$ / # /

$
(

. #
$
#
$
0

D #
$

/ 0
5

/
+
$ %- $ $, ,#
$,
"
#
$ % $,
$ %
* H#

3
#

0
/ -

$ (
@ /

/
K +, ' $ $
/
0
$ %

*
$$

)
+,
$ =

# %
/

/
0

*B
#

/
.
$

@!

$
/

/
@

L5

=>
#

$
'

0
+

)
#

0
% /-

$ =
$
$
$

5? #
(#
$
$
# % * '
)
#
$
$
% J
# / $
$
#
>G )
?D
#

$ %
),

$ GM

=
)

7
$

#
$, ,#

#
+ H

!" # $%&' ( .
)
#
$ %
#
)*$ *+ '
)%!" ! #( .
!+%,$ '%+ !( D
%
#
#
#
%
)
0
0
#
&$"#%++ !( K # $
#
#
#
/
0
# %+ !
$ &+'%$ $( <
/
#
@
$
B
$,
*$ *+ ' %,# ! -%.
"# $ ' ! %. $
0
#
$
+
! "
#
0

$
/

$ =
)

0 +

$,
#
#
0
$
0
,# #%)%+ !( L %
3 #
$
+
, $, ),

/
C

"

< 0

)
#

$#

"
$ &

#
$

,
C $ $

$#

$ &

#
$/
#

) $
, % %
$
#,
#
#

0
@ $,

B= $
P

$
$,
%

# #

C $ $

"
%

$/ 5 #
$
$#

,# ,
+
$ 0

$ =
$ &
) $
$
#
$
#
$/ /
$/
) /
&
) /
#

$,

$ 0 #

$ =

+
%
)
#

$ 0

)0"

<

)0"

1 !" $( >K 5

1 !" ? .

)0"
.

$#

$ 0

1 !"

#
$ 0
.
#

$,

$
%

)0"
+ )2!
1 !"
%
$ = #

%
@

.
$ 0
$ 0 $,
$ 0 $,
$
#
)0"
$+ ) ! $ .
%

,#

$ 0 #
$ 0 #
0
B

$ 0

.
B .

#
$ 0

#
$#

$ 0 #
#

/ $
$
)0"
$+ ) ! $

.
/

@
1 !"

)0"

3
<

,# ,
B

< )0"

$ &

/
@ / /
+ )2!
$# $
#

#
)0"

)0"
$

(
+ #
1 !" (

% %
C
1 !" $

<

,# ,

$#

+ #
$#

%
,# ,
#

$ < 0
$/ 5

$ %

1 !" $ $,

>7 $
#

)0"

)0"
$
#

# #
$ 0

#
$

1 !" ? 3
)0"
+ )2! 3
1 !"

+ )2!

#
1 !" $

1 !"
+

#
$

$#
#
0 , $,

0
H%

)0"

$#

)0"

)0"

1 !" $

"

H
$

$ $

<

,# ,

1 !" $
0 -

'

%
.

< )0"

#
D

#
0

! "

)0"

0
)

/
,# +
.

$
#
1 !" $ H
#

) $
,

)
#

$
0

!+ ! #

) !"
/
)0"

5
6/ 0 $ !% +'%$ 7
.
#
0 , &. " $
D
,# , %

$
)0"

$ #

$
-

,
)

$
+'%$
,

+'%$ $

$(

$#

% %
#
$ =
! # '% +'%$

6/ 0 $ ! &. " 7
7
$5
#
+'%$

)
,

B
-

+'%$
&. " $
"

)
+'%$ #
&. "

'

"

6/ 0 $ ! +%#
7

! &. " 7
&. "

+'%$

@# #
' &. "
-

+'%$ $ #
C#

'

2! $

,
o 7
o 7

< +'%$
. $#
#,
<

&. " $

+'%$ $

) $

+'%$ $

#
$5

+'%$
+'%$ $

+'%$
@B G #

/
2! $ 1 $ & ' %
o
/
o G 0 /
D
0
#

0
2! $

+'%$ $ 0 / @ $#
$
$#
% ) $
0
#

=) $
D

!
o A
o A

+'%$
+'%$

0 /

$#

$,
= $

B#
$B

89
.

$#
$/

. .L D

$
+'%$ $

+'%$
/

. 3 G

@#
#

Local 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 $
)
- % /
0

0
D

(*
$

D
#
)

$
+'%$ $
/

/
G 0
+ #
&. " /
$
/
$#
# 5

)
G
G 0
% /
%
$,
+'%$
/
)

$
G 0
0
/
D
$
0
/
)
# )
$
/
)
. 3 G
,
. $#
)
#
$ >
+'%$ $

G 0
( *
$/ 5
#

)
5? #

1 # 5
)

,# , %
#
>#
5
?
,# , % $ $
$
)
$
&. " (,# , %

,# ,
$# %
#
0

% /

$#

$ %
! "

3
$
,# ,

)0"

#
$

% $
&. " ()0"

) $ =

+'%$
,# , %

,# ,

$
&. "

/
/

&. "
#
+'%$ . 3 G
D

! % G
$/
+'%$ $

&. " $

&. " /
#

$ G $/

. 3 G
$

)
)0"

&. "
.

&. "
,# , % $
)0"

)0"
&. " (
/ $ %

;<

G C = D # 5
$,
/

0 $

/ =

loNovia1.MostrarDatos()
#

% /

? loNovia1.cNombre, loNovia1.dFechaNacimiento
3
$/
5? #
&. "

>#

1 # 5
0 +

7
$
/

) $

$ % $, # ) /
&. "
/
+

&. " $
&. " 5
/
#
/ #

L,
$,

# $
#

+'%$

$ $
#

#
,

$ $
#

. 3 G

.D. 3.
3
$ $
H

$
1.!EG. 7D 33
! "

. 3 G
$/

0 +'%$ (

0 +'%$

3 7<3C L
/

+'%$ $ /
+'%$ G
#
0

#
-

/
5/

+'%$ &%$
+'%$
- / # 0

+'%$

G $/
.

,# ,

,# ,

,# ,

# ) %

! % G
.

7.1< . L
1
.
#
$
$
#
&. "
#
#
/$ L
- / $
$
L
1
@B
G 0 L
1
@B
? C%

+'%$ . 3 G
% +'%$ .
)
1
@B /
$
&. "
+'%$
.
)
.
)

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

.C< G
!

+
/
)

.G11.!EG.
!
+

#
.G1

$
7

# )

+'%$

. 3 G

#
#

$
3-

$
. 3 G
,
# )
$

)
$/

$
,
# )

$
$

C $/ 5

8=
A ,
,
. .L D

+'%$

. 3 G
$
7 /

0 +'%$

3 7E

Local loNuevoSocio
CLEAR
loNuevoSocio = CreateObject("SOCIO")
loNuevoSocio.cNombre
loNuevoSocio.cApellido
loNuevoSocio.dFechaNacimiento
loNuevoSocio.dFechaIngreso

=
=
=
=

"Juan"
"Prez"
CtoD("03/01/1980")
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
% %
,# , % $

. )0"
L
1
+'%$ . 3 G
% %

@B

)
,# ,

$/ 5
. 3 G

E
@

$
,# ,

)0"
%

,/

)
. 3 G

+'%$ 3 7E
3 7E
$

)0"

/
B
$, )
0 $
$ =

/
$, )
$
0

#
$

$
0

+'%$ 3 7E

&. "
%

>0

)
)
$ 3 7E
)0"
(

3 0 ) $

Clase 1

Clase 1.1

Clase 1.1.1

Clase 1.2

Clase 1.1.2

Clase 1.1.1.1

Clase 1.2.1

Clase 1.1.2.1

@,# ,
%

$ #
)0"
$B

$
)

% %
6
$, ), $
/

Clase 1.3.2

$ GM

)
#

- #
% %

$#

%
)

)
#

Clase 1.3.1

Clase 1.3.1.1

1
.

Clase 1.3

/ $ % $

)
# #

3 %
$/ 5

7
$/

/
)

$,

$
+'%$ $ $ % 0
&. " $ .
! "
$# )
$ %
EC4 F .G1 EC4

EC4 F .G1 EC4


. /$ $
%
$
$#
4 $
; G
#
$

>7 ,

/ $

$,
$, ,#

. .L D

. .L D

Local loNuevoSocio
CLEAR
loNuevoSocio = CreateObject("SOCIO")

=
=
=
=

$
%

$ )
= #
$ . .L D
6 %
"
$
$ $ D '
EC4 F .G1 EC4

with loNuevoSocio
.cNombre
.cApellido
.dFechaNacimiento
.dFechaIngreso
.MostrarDatos()
.MostrarDatos2()
endwith

EC4 F .G1 EC4? 7


$ $ /

)
$

"Juan"
"Prez"
CtoD("03/01/1980")
Date()

Release loNuevoSocio
Return
*
*
DEFINE CLASS PERSONA AS CUSTOM
cNombre
= Space(20)
cApellido
= Space(20)
dFechaNacimiento = {}
PROCEDURE MostrarDatos
? This.cNombre, This.dFechaNacimiento
RETURN
ENDDEFINE
*
*

$, -

6
)

$
%

DEFINE CLASS SOCIO AS PERSONA


dFechaIngreso
= {}
PROCEDURE MostrarDatos2
? This.cNombre, This.cApellido, This.dFechaIngreso
RETURN
ENDDEFINE

3 $
0

' $
/ $

. $, ),
#

. .L D
-

#
3

$
&. "
$#

0 '
0
>7
-

. .L D
$

. .L D

$#
6

$/ $

K +,

EC4 F .G1 EC4


0 + 3
$
$- $
$#
? 3 $#
5
)

/ - $
$ $

! "
.

0 '

EC4 F .G1 EC4


&. "

$ $

$#

$,

! "
#

0
H

% /- $ 0
+'%$ &%$

)
D

/
/ /
+'%$ &%$

#
$

+'%$

! "

+'%$ $ &%$

7% PA "
$

$/

7
# - $

&. " $

#
7

$
7

$
$#

7 $/ A "
E
$

- $ #
- $

7 $$

5B

A
.

7 $$

# @

# B 0

7
7
&. " $

&. "

$#

&

&. " $ 3 #
$
$#

7
7

&. "
&. " $
$#

&. " $ .
/

$
$#

#
&

7
3
) $
7

#
$

0
) $

$
! "

$ %
E

#
1A7

) $

"
8LD

$
7

$
) $

$ $
$

&. "

. 0
$
3
) $
7

$,

) $
7

A "
7

$#
"

"

.$#
7
#

0 -

,# ,

%
)0"
% $

0
#

,# ,

)0"
$
$ 3
$/
)

1 !" $ G
$#
#
@B

." #
.

$, $
C HF 7 C74 F !EG DDH .
#

/
C4

C H
$/ 5

! $
7

) $

! $3
7

) $

6
7

&. "

$/ 5

$
&. " $

4
7
$
4 #

#
#

$
#

$
$

$/ 5 #

P
$

."#

E$
L

%0

,)

D /
L

"

$/

D
L
D A "
L

/-

- $

"
0

D. A
$ $
$

D. @ $
/

&. "
B

$#

&. " $
$

D.

."

D. 7
$

."

A
7

6
7

0 8@

"B

#
#

$,

#,

! $
7

$,
#

$
$

0
# $

#,

0 +
1 !" $
#

$, $
) $

#
D
.

#,

#,

4 P
3

/
) $

C!
@#

# $

) $

D A.D ! L
$#
B
0
$

#
) $

&. "

3 #
#
3

/
7
# #

= #

3% #
L

3#
$

'$
0

$5

C "A "
3 0 #
$
#
"

/
0

$
$

)
+

"

0
$#

$ $

3 #

C$
.
#
C

0 /

$ $
#
$#

0 /

&

A
.

#
7 $$
8LD

$#
#
7 $/ A " E$

#
#

#
$# = D /

C "A "

#
3

$#
/

8LD
8LD

$/ 5

8LD!
.

8LDC /
D

/
8LDC /
$# 8LD!
#
! "

8LD

! "

<.1.G C.G. 7D 3.3 1. E


+'%$ $
7 $
.$#
4

8LD!
)

$#

C /
/ 8LD $

7D 3.3 K<. G
D

E.1 1.3 K<. C 1 3 D 3 7D 3.3


7
A 7
7
D/
7

. .GC 3 K<. C 1 3 D 3 7D 3.3


E
1
.

8LDC /
) $

1 3

$ &+'%$ $=

3..G @ " #

3..G @ " #

.$# B

.$# B

H
0 #

7 $
%

% /- $ 0
+'%$
+'%$ > .%

7
# $
/ $
+'%$ ,% #
.

B
+

! "

$ &+'%$ #
0

$ &+'%$ $ # 0
@
$/ 5
$,
%

#
<

) $
$ @
1 &

7 . G1 7D 3.3
3
.
. .L D

$ +'%$ ,% #

@
%

$# #

%0
7

D +'%$

+'%$ $ > .%$B

$ &+'%$ $=
6B

$
% $
6 . .L D

7 . G1 7D 3.3 <3 G1 .D 1E3.R 1


-# $ %
7 ! SG JFS7
7 7 . C. 7D 33
.
1.!EG. 7D 33

$#
+

@. .L D

6B

1. 7D 3.3

$
=
SG J! S

$
7 . C. 7D 33

+'%$ $

#
%0

7
$

$
#
%%0

! "

1
+'%$ $ D $,

$ %
+'%$ $
$ % $,
0
$ & &' " +%
+'%$ $

>H #

0
# ) /
$

$
5

@
#
)
0 /

78

B$ %

- $

$
/

$# $

$
0 $

)
$# $

#
+'%$ $

"

//

//
//

$#
A C G.3 78B #
$
.
+'%$ $ #

$ $
+'%$ $ &%$

% $
$,

! "

,
0

! ?

% $

# #

.
/ .
) $ H -

/
) $
0 $

8?
.
+ $

$#
$ /

%
1.!EG. 7D 33

) $
$, ) $

) $
#

$
)
$ 7 . C. 7D 33

! "

CREATE CLASS FormBase OF Formularios AS Form

GM
>K 5 )
7
! $ )

7 $

$ ?

+'%$

$
%0

/
!

! $A
$
!

/
$
!
+'%$ ! $

$
+'%$
L<D E 3 78

! $A
$5

)
L<D

L<D E 3 78
" +'%$ ! $A
% /

"
.
%0

+'%$ ,% #

+'%$

E 3 78
$/ 5 )
5

! $A
+'%$ ! $A

%
+'%$ ! $
I

% /

/
@

# #

%
$ 0 $

$/

,# ,

GM

GM

) $

! $A

GM ;
6 / $
P

) $

$
/ $

@#
P

0 ) $
>7 $ % $

#
?.

7C D T
0
0 +

,/

!
$

T 3 0
!
! $A

CREATE CLASS MENSAJES OF FORMULARIOS AS FORMBASE FROM FORMULARIOS

! "

GM I
>K 5
K
L<D

!
/

% $

%
0

E 3 78
! L<D

+'%$ /
0 +'%$
E 3 78

! $A
% $

$/ 5

# 0
$

0
//
//

+'%$
0
0 +'%$

+'%$ ,% #
//

/
H 0

$#
>

+'%$
$

//

+'%$ > .%

$,

-?

! $

! $A

$ GM

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

,# ,

0
%

%
D
D
D

$
$
$
$

a.
b.
c.
d.

$/
0
0

BackStyle
Left
Top
Width

I;
9
=
=
=
=

$0 $
$ $
+'%$ L

# #
# #

%
4

0 (transparente)
2
25
40

%
,=

L
5

)
0 +
L

$
a.
b.
c.
d.
e.

Caption
Height
Left
Top
Width

C% ! $
$

,=

= OK
= 27
= 228
= 60
= 84

/$ =

@B

GM N
D
/

$
$

/
>H

5%
) $

/
@B? D /

)0"

)0"

! "
)0"

EGEC

=(
@B

) $

) $

/$ =

GM O

%
) $
$ $

P
*
%

>K 5

1 5
@( *
)
# ,$

L
$/

-?
) $
= (# ,$
#
$

# ,$
/
+'%$ + !" !
L

$
%

%
0 $
0

%
! $

>

L ! $L

E 3
+'%$ L

&. "

U7

L<D

L ! $L

,# ,
0

//

$ $
) $

*B .

3.C 7D 33DEA C !
3

#%

/ $

%
/

'

/
# ,$
) =(
#
,
0
#
/

,
>7 $

/
( *

@(L.G3

&. " L ! $L
5 ?
/$ =

.3* (.
@
% $

$ # $

*B
B#

! "

3% J@B
VVV0

,WWW

) $

$ #

GM Q
$

% $

-) =

SET CLASSLIB TO FORMULARIOS


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

7
! "
# $
+'%$ $
.
#

3.C 7D 33DEA C ! L<D E 3


$
//
$
! L<D E 3 #
+'%$ $ @
# / =#
# $
&. " $
% 0 ! L<D E 3 78B

$
+'%$ L.G3 .3
"
$ 0

&. "
$

$,
) $

$
0

L ! $L
# ,$

.
-

% /- $

$
0-

&. "

) $

0 /

$/ 5 /

+'%$ L.G3

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


oMiOtroForm.Show()

GM 9
-

/ 3.C 7D 33DEA C
% /- $

?
/
3

L<D

E 3 >#
//

/
$

//

3.C 7D 33DEA C
' # ,$

5
D
0 /

$ $/
# /

,# ,

)0"

$( H

=
'/

#'/

)
$

#
/

,# ,

,# ,
/
,# ,

)0"

)0"

)0"

. .L D

Local loNuevoEmpleado, loNuevoGerente


CLEAR
loNuevoEmpleado = CreateObject("EMPLEADO")
with loNuevoEmpleado
.cNombre
= "Raquel"
.cApellido
= "Martnez"
.dFechaNacimiento = CtoD("12/02/1975")
.dFechaIngreso
= CtoD("15/09/1994")
.MostrarFechaIngreso()
.MostrarFechaEgreso()
.MostrarSueldo()
&& Esto es un ERROR, no
.dFechaEgreso = CtoD("15/09/2010")
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")
&& Esto es un ERROR
.PonerSueldoGerente(5678901)
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
cNombreJefe

=
=
=
=

{}
{}
0
""

PROCEDURE MostrarFechaIngreso
with This
? .cApellido + ", " + .cNombre + "
DtoC(.dFechaIngreso)
endwith
ENDPROC
PROCEDURE MostrarFechaEgreso
with This
? .cApellido + ", " + .cNombre + "
DtoC(.dFechaEgreso)
endwith
ENDPROC
PROCEDURE MostrarSueldo
with This
? .cApellido + ", " + .cNombre + "
Transform(.nSueldo, "999,999,999")
endwith
ENDPROC

Ingres el da: " +

Egres el da: " +

Sueldo = " +

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
&& Esto es un ERROR
? This.nSueldo
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
*
*

$
$

# #

/ %
$

&. "

G 0 .$#
#

# #

$
$

.dFechaEgreso = CtoD("15/09/2010")

! "

GM
;

>

?
.
)
$ &+'%$ $

4
0 +

! % .
#

(E
$ 0 $

# #

,#
$

+'%$

! "
#

GM
>H %
#
.
)

'
H
,

# #

$
#

> $
?D % $
- =

,
# #

#
/
$

# #
$

,#
$

.PonerFechaEgreso(CtoD("15/10/2010"))

) $ .
$ # ,$

/
#
@B

$/
/
-

3
.
F

$
) %

#
0 +

$#

$
$#

$ # ,$

! % .

@B*

$
$ 0 $

=
@

;INOB

>

! "
#

5?

'

%
# #

#
3

$
0 / #
+'%$ 6. .GC.

G
0 / #

+'%$ 6. .GC.
$/
0
3
#
+'%$ .L D. 1
0 / #
+'%$ .L D. 1
#
$ &+'%$ $
+'%$ .L D. 1

# #

! !"

%&

'& (&

! !"

%&

'& (&

$5

@#

$ $- $

,
$,

3
@)
&. " $ #
B

$ )
#

'%# &. " $ % %


)
$
B
,
+'%$ @
+'%$ B #
#

$#

# #

$5

#
@

+'%$

.$#
>7 ,

# #

1 # 5
#

+'%$ ? >H

$5

/ ,
#

- $

#
7
G $/
#
1
C 5) X
7
X @$ 0 B
D
.$
GM
$
3 "
.
70
! %
G $

7
7
7
7
7
7
7
7
7
7
G
G
!

,
,
,
,
,
,
,
,
,
,
$5
$5
%

I
I

L5
L
1
@B
YY 7
G $/ H #
@B YY L
#
HG $/ @B YY L

% %
+'%$ 7DE.GC.

G $/ 1
G $/
#

)
$ $

# #

C 5)
# 5
$

.$
#
G $/
$5

G $ $
$
7 . C. ! L
+'%$ /
) $

. .L D

$
L 1E!H !
F

L 3
6

) $
$/

% $
$/ 5 # $

Local 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
= 800
.Width
*--- 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
*--- Sptimo, liberamos al objeto de la memoria
Release loMiForm
Return
*
*
DEFINE CLASS MiBoton1 AS COMMANDBUTTON
Caption
Height
Left
Top
Width

= "OK"
= 30
= 50
= 570
= 100

PROCEDURE Click
WAIT WINDOW "Has presionado el botn OK"
ENDPROC
ENDDEFINE
*

*
DEFINE CLASS MiBoton2 AS COMMANDBUTTON
=
=
=
=
=

Caption
Height
Left
Top
Width

"SALIR"
30
650
570
100

PROCEDURE Click
CLEAR EVENTS
ENDPROC
ENDDEFINE
*
*

>K 5 )
7
!

%
0

$ ?

/
)

L .
0

L! $
# #

A
L
D
D/
7
#
#'/
/

7
/

$5

# #
/

;
I
N
O
Q

+'%$

3 DE
0
0
) $
0
/
/
#
#
D
$
. /$
/
+
$
/
D
$
. /$
/
+
0
#

&. "

@CB
/

$ $
0

# #

Z
/ *

$
$/

7 $$
$5

.
)
+'%$ 7 $$

# #
,
/
/

$
$/ 5
0

7 $$
# #
,
/
/
$

$
#

#
A

%
.

P
$

A
%
.
$ $

P
$# ,

7D 33@B
6

$/

11 7D 33
)

//

78

11 A .7C@B
/
. .GC3@B
#

'$

$#

EG3C G7.@B
6
%

L.LA. 3@B
6
/

$/

L <3. A @B
7
/
/

# #

) $

3.D A @B
D
+

A @B
7 $#

//

# #
5

7 . C. 7D 33
/
1 &

7 . C. 7D 33DEA
7
0 @ 0 - B//
7 . C. A .7C@B
7
/

$ $/

787D 33.3@B
6
) $

7 L

,#

# #

1.!EG. 7D 33
7
# #
$5

1E3 D H A .7C3
L
) $
1 1.! <DC@B
.
$5
/
)
6.C A .7C@B
0

6.C .L
1 0
0

0
$#

DE3C A .7C3
7
$
G.
#

/
$ $

$/

$5

# #

L 1E!H 7D 33
/
1 &
"

) $

.L3C C<3@B
#

$ #

$5

7
)

# $

. A .7C
A
/

@ 78B

%0

$5

//
/

A C 7DE.GC@B
1 0 0
#

$ $

# #

) $

$5

$#

.D. 3. 7D 33DEA
7
//

3.C 7D 33DEA
/
//

&

A .7C@B
7
0
$ @ 6B #

.G L. 7D 33
D
$/
//

G 1.! <DC
E$#

.L

$/

$/

3H3@ N9B
1 0
# #

3H3@ O B
1 0

3H3@ O B
1 0
# )

# #
B

0
#

$/

3H3@ O B
1 0 0
C4E3
0

#
#

$/

%0

378

EC4 F .G1 EC4


. # ) $' #

# #

)
)

3
$

7
D
.
.
4

. .L D

$
$/
$#

0
0

0 ) $
$
7 $$
$5
P
/
C%
7 #
$
) $
$
P /
/

# #
%

# #

+'%$ ,% #
.GC $

A
/$ =
U (.

) $

Local 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 ttulo"
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 %

$ ?

$
! $ @
( /
*

# ) $
)
(
*B

&. "

0$

(*
( /

$/ $

7 LAE

3 "

35# $

) $

A
A

+'%$
$/

!
( *

LB

$ $
)

) $

# $

@
*

D +'%$

3 DE

0 /

! $

&. "

$ $

$
.
# #
(7 #

$
+'%$ ,% #

+'%$ A
7 LAE

P
A

7 LAE
$/ $
$,
# -) $

0
# #

*
.

$/

)
0

.
#

)
#

C%
C%
C%

/
) $

# #
#
#

@A
7 LAE B #
+'%$ ,% # B

# #

$
7 #

U (.

%U
D ) U I

;;

4
0
+'%$ ,% #
"

$5

) $
=

$#

+'%$ ,% # @

. .L D

$5
D

. .L D I 6 #
%
)
L
! % E
+'%$ .L D. 1 B

$
#

+
@B

F
DEFINE CLASS GERENTE AS EMPLEADO
PROCEDURE MostrarNombreGerente
? This.cNombre
ENDPROC
PROCEDURE MostrarFechaIngresoGerente
EMPLEADO::MostrarFechaIngreso()
&& Aqu se utiliz el operador
de resolucin de alcance para ejecutar un mtodo de la clase padre.
ENDPROC
ENDDEFINE
*
*

.
6
#

. .L D

$#
# # #
$,
$

$
G 1.A. 4 7. 3.

Local loNuevoEmpleado, loNuevoGerente


CLEAR
loNuevoEmpleado = CreateObject("EMPLEADO")
with loNuevoEmpleado
.cNombre
= "Raquel"
.cApellido
= "Martnez"
.dFechaNacimiento = CtoD("12/02/1975")
.dFechaIngreso
= CtoD("15/09/1994")
.MostrarFechaIngreso()
.MostrarFechaEgreso()
.MostrarSueldo()

;I

# #

.PonerFechaEgreso(CtoD("15/10/2010")) &&
correcta de asignarle un valor a la propiedad
.PonerSueldo(1234567)
&&
correcta de asignarle un valor a la propiedad
?
.MostrarFechaIngreso()
.MostrarFechaEgreso()
.MostrarSueldo()
?
endwith

Esta es la forma
dFechaEgreso
Esta es la forma
nSueldo

?
loNuevoGerente = CreateObject("GERENTE")
with loNuevoGerente
.cNombre
= "Mercedes"
.cApellido
= "Candia"
.dFechaIngreso = CtoD("21/03/2009")
.MostrarNombreGerente()
.MostrarFechaIngresoGerente()
&& Esto es un ERROR.
.PonerSueldoGerente(9876543)
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
cNombreJefe

=
=
=
=

{}
{}
0
""

PROCEDURE MostrarFechaIngreso
with This
? .cApellido + ", " + .cNombre + "
DtoC(.dFechaIngreso)
endwith
ENDPROC

;N

Ingres el da: " +

PROCEDURE MostrarFechaEgreso
with This
? .cApellido + ", " + .cNombre + "
DtoC(.dFechaEgreso)
endwith
ENDPROC

Egres el da: " +

PROCEDURE MostrarSueldo
with This
? .cApellido + ", " + .cNombre + "
Transform(.nSueldo, "999,999,999")
endwith
ENDPROC

Sueldo = " +

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 resolucin de alcance para ejecutar un mtodo de la clase padre.
ENDPROC
PROCEDURE PonerSueldoGerente
LParameters tnSueldo
&& Esto es un ERROR, porque
EMPLEADO::PonerSueldo(tnSueldo)
tnSueldo es una propiedad oculta de la clase EMPLEADO
ENDPROC
ENDDEFINE
*
*

7 $ 0 $
6. .GC.
3
@B
# #
3
/
%
-B

+
#
>#
5
.L D. 1

$
?
#
3

.7<[ 1 D =
# #
)
$# /
#
$ + '"%

+ '"%
3

;O

3
6
@B
+'%$
,
$
#
$
$
$/
0
# #
+ '"% #
$
$
@ $

@
%
%

$
+

<
<
<

0 ,#
$

.
"

+'%$
$

"

# +,

D
# + $

/$ =

CREATE CLASS ETIQUETA1 OF CONTROLES AS CONTAINER

>K 5
+'%$
+'%$ &%$
G

$
$ , .CEK<.C
, 7 GC EG.
,

! "
/

?K

$
% 0 7 GC

0
D.3 78

GM
7 $ #
$ 7 GC

$ 0
D.3 78

+'%$

;Q

$ .CEK<.C

%0

$/ $
-=

$ &

GM ;
.
#

# #
O @#

# #

$5

D A.D #
#

$,

CEL.

CEL.

# #

B
$ =

/$ =

GM I
6 / $
) $
%0
$
7 GC D.3 78
/ $
. +'%$ %
#
$
.

0
0

$
%0
+

) ) $

! "
<.A

;9

$
+'%$
) $

)
$

/$ =

) $

0 -

J7

GM N
.
,

0
E

F*
7 GC

7 GC D.3 78 G $
D.3 78
$ $
$
0 +'%$ $ 5
,
,

$
$

.CEK<.C

) $

GM O

+'%$ $
#

$5

EGEC

) $

/$ =

GM Q
.

) $

F 0

"

# +,

+
3
0

$ 0 $,

,#
CEL.

# #
#

$/ 5 #

7 $ 0 $
# +,
#
$,
$#
.
$,

%0

7 GC

$#
$

#
.

$/

$/

"

$# % $
$# $

$
/

$#

#,

$#
.

$
#

$,

D.3 78
%0
$# $

H#
#
' $ #,

) $
$# $

<.A

$/ 5

0
#

37C

/ 0
/ $

#
$

%
%

$
$
<
<
<

+'%$
$#

,
<

D ) $

! "

/$ =

CREATE CLASS ETIQUETA2 OF CONTROLES AS CONTAINER

1 # 5
# #

$
$ $

"

GM 9
.
#

# #
@

# #

$5

/
B

$,

C$
C$

$ =I

# #

/$ =

This.Parent.Label1.Visible = !This.Parent.Label1.Visible

6 / $
) $
$
) $

0
<.A
/$ =

$5

ThisForm.Etiqueta21.Label1.Caption = "Este texto est titilando"

) $

F VVV -

"

WWW

0
EGEC

+'%$

$/
)

$
$ %

"

#
<

+
<
1

=
/

! "

/$ =

CREATE CLASS ETIQUETA3 OF CONTROLES AS CONTAINER

- BackStyle
= 0. Transparent
- BorderWidth = 0

.
-

.
-

BackStyle
ForeColor
Left
Top
Width

=
=
=
=
=

0. Transparent
0, 0, 128
0
0
720 (o el que te parezca ms adecuado)

=
=
=
=
=

0.Transparent
192, 192, 192
2
2
720 (o el que te parezca ms adecuado)

BackStyle
ForeColor
Left
Top
Width

- Height = 17
- Width = 720

0
#
/

$
$

$/
$
3

/
5

/
$
$

$
#

GM
7

#
5

1 # 5
$ '
$ =
7
SG JL % F
G $ =
.

/$

7 #

0 $5

$
$/ 5
$/
# 5

+'%$
#

$
.

$5

# $

0 /

$ $
#
$

#
$,
/ G

/$ =

GM
>!
!

,?

0 ) $

L
.

) $

$
$5

EGEC

!
) $

&
/$ =

GM
.

) $

F VVV - )
I;

WWW

/ $

$ $

/-

. $
#

) $

/
$
#
$ &

$,
/$

#
-

)
$
+'%$
+'%$ $ $
)
+

0
! "

$#
0 ,
$#
#

/$ =

MODIFY CLASS ETIQUETA4 OF CONTROLES AS CONTAINER

$ 0 $

GM
.
0

.
-

!
BackStyle
BorderWidth
Height
Width

'=
= 0. Transparent
=
0
= 23
= 720

.
-

=
BackColor
Curvature
Height
Left
Top
Width

%
$#
$ $ ?7
$
0
#

= 255, 255, 128


= 20
= 23
=
0
=
0
= 720

$
>
)

'

&

$
' # / $ D
0
$
/
$

II

#
$
! "
+'%$ $

$
0

.
-

& =

Height = 23
Left
=
0
Top
=
0
Width = 720
Label1.Alignment
Label1.FontBold
Label1.FontSize
Label1.Left
Label1.Top
Label2.Alignment
Label2.FontBold
Label2.FontSize
Label2.Left
Label2.Top

H %
,

#
+

=
=
=
=
=
=
=
=
=
=

2 Center
.T.
12
0
3
2 Center
.T.
12
2
5

"

GM ;

GM I

IN

'

$5

3
)

$/

' )

$ &

>

, $

!
$,
$,
5 $
, )
$5
EGEC
!

$
"

0
-

?.
'

% $
$
$

GM N
D
$

"

.
$ $

$#

"

$#
#

$#
A
)
!

$
$

$
L;

%
$
!

#
'

GM O

IO

/ #
0 )
0 ) $
$5
EGEC

!
'
$ $
/$ =

"#

$
$

) $
$ =

$#

GM Q
H - $

7 $
$
#
/

$
-

$
! "

# )

$
/)
C $/ 5

- $

0
#

#
#
"
0

#
$

IQ

+
$ &
,
# $

#
%

0
0

$ %- $ /
$ %
$ %
"
, $#
0
D %
$ %
$,
.

# - $ %
% $
/
-#
#

%
$

! "

/
'

/$ =

CREATE CLASS BOTONCANCELAR OF CONTROLES AS COMMANDBUTTON

# #
7

$5

7D.

. .GC3

/$ =

/$ =

#
0

%
$

$
$ %

I9

# $

. $ %
$#
#
0
7

#
$
$

$
# )
+
$

$
)

)
$ 0

+'%$ #

#
#

# 0
$ $
$

),
.

! "

/$ =

CREATE CLASS FOTOS OF CONTROLES AS CONTAINER

$ =
1
1
<

/$ =

- BackStyle
= 0 - Transparent
- BorderWidth =
0
- Height
= 299
- Width
= 331

/$ =

Height
Left
Top
Width

Height
Left
Stretch
Top
Width

Alignment
BackStyle
Caption
FontSize
Height
Left
Top
Width

= 32
= 149
=
0
= 32

) #

/$ =

= 237
=
7
= 2 - Stretch
= 36
= 316

/$ =
=
2 - Center
=
0 - Transparent
= (nada, lo dejamos en blanco)
=
8
= 15
=
3
= 282
= 324

'
+,

+'%$

)- =

$
)

)$ $,

+
BackColor
Curvature
Height
Left
Top
Width

BackColor
Curvature
Height
Left
Top
Width

% $
$5

7
#

=
=
=
=
=
=

0, 128, 128
20
243
3
33
324

=
=
=
=
=
=

192, 192, 192


20
243
7
37
324

/$ =

% $

$#

# #
%

/$ =

$5

=
*

/$ =

GM 9
D
/$ =

$5

$ $

GM

) ,

0 $
$5

. $5
$ # ,$
,
.
$

$5
+

0 ,
$/

#
3

$/

$
)-

)
0

0 0 ,
$/
* ) ,

)-

)-

GM
#

$
/

$/

)-

$ =
ThisForm.Fotos1.NombreFotografia()

H #
, #

$5

))

GM
7
,

5 %
#
,
) #

$
%0 3

/ ,
%0

,$

)
#

# $
0 ) $
$ & $ % $
#

$
) # #
)

$5

$ $ $
0

! C 3
$
+

/$ =

GM
>K 5 % $
=
$
$
,/ $
$ & $ % $
.
/
# -)

) $
@

-? 7
/
0
H

"
.
$

$
%
/$ = 4 % U

0 ) $
$
) #

.
0 ,#
$
) $
)

$ $
$#
)- B
)
4

%
N

$
0 , #
*
) $

+'%$ ,% #
$ %

$
/0 $

$ $

$#
+ $ #
$

$#
5

! "
) $
3$

$
@#

/$
! "

5
%

$
+'%$ ,% #

) $

% U
%

$ $
) B
%

) $
A
*

) $

# /

! "

/$ =

modify form FORM5

$5

) $

/$ =

GM ;
>

5
?
+'%$ $

>H
) # % /- $

) $
% 0 7 GC

,
%
=

? 3- #

# $
D.3 78

$5

.AddObject("BotonC", "BotonCANCELAR")

$ (A

7 G7.D

! "

,
$
3.C 7D 33DEA

$
H

/ /
.
7 GC

! "

D.3 78

A
% % )
$
/
$ =

%
/
$

/
- F

$
)

%0

$
)-

%
$

N;

) $
$

0
/

% $
$

GM I
%

$ 0 $

)-

GM N
NI

$ =

$ $
#

# #

$ %

#
)

#
%

#
.

)
0

+
$

! "

$
$

#
)

/$ =

MODIFY CLASS INGRESODATO OF CONTROLES AS TEXTBOX

$
-

# #

BackColor
BackStyle
DisabledBackColor
DisabledForeColor
FontName
ForeColor
Height
Width

.
#
$
)
#
0 +'%$
! "
/$ =

- $
$

=
=
=
=
=
=
=
=

+
$

250, 250, 250


1 Opaque
232, 232, 214
0, 0, 0
Courier New
0, 0, 255
23
100

#
# -)
*

#
) %
$

#
$

MODIFY CLASS INGRESOFECHA OF CONTROLES AS INGRESODATO FROM CONTROLES

% $

? .
0
0
/ $

$
/

+'%$ $

! "

L >#

5%

+'%$ $

+'%$

*
#

+'%$
D

$
-

3$

DateFormat
InputMask
Value
Width

# #
=
=
=
=

$
$

3 - British
99/99/9999
{}
81

%
$

! "

#
.

/$ =
MODIFY CLASS INGRESOCANTIDAD OF CONTROLES AS INGRESODATO FROM CONTROLES

7 $ 0 $

$/ 5

NN

# #

- InputMask = 9,999.99
- Value
= 0
- Width
= 67

$5

/$

GM O
>K 5

- $
B

%
%
$#
#

H %
$/
/$ =

-? 1 5
# #
B

$
E # L P

%
. ( >H #
%
@

#
% .

"

5%
@

$
-

$#
0

. $

$
$

! "

MODIFY CLASS INGRESOIMPORTE OF CONTROLES AS INGRESODATO FROM CONTROLES

# #

- InputMask = 999,999,999.99
- Value
= 0
- Width
= 109

$5
)
-

3 )
# -

/$

% $
!
!
!
!

#
#
#
#

;
$ %"
$
+>%
$ %!" %
$ ), #"
#

$ $

% /- $

#
0 #
, #
+
, #
+
, #
+

- $
- $

NO

$5

=
#
) %

$, #
$

$#
$#
$"#%# "%' $
! # $ ), #" #

# #
$

. (
- $
% /
#
+,
/
A

! # $

'$

%A $+ '%$ #
$ '
H -

$/

)
$
-

$#

'

$/

0 $

9 #
#

# /

% $

% %
#

+
0 ) $

/ $

LN

=
modify form FORM6

D #
$

$
) $

A P7
9
$ 0 $

$
#

#
=

GM Q
H -

$#

/
'$

)
H
) %

$ =

' $
X X

#
2

/ $
! "

NQ

0
)

) % 0,
#
% + ,#

$
$
"

$
) $

@#

.
)

.
$#
=

$#
)-#

GM N @7
% /- $ 0
$
5

$5
%

) $

$ B

) $

+'%$ #
) $

=
) $
/
/

#
$

$5
B

/$

GM 9
7
$5

0 ) $
$

$
/

GM 9
$ =

GM ;
N9

%
"

0 ) $
)

$
.
#
% $

$
$

' #
) $

) $
,

) $
) $

$ %
$#

. ) $
$#
+'%$ ,% # ! L .
)
$ &
#
#
) $
$
$/ 5 #
3
$#
$
0
$#
) $

) $
$ $
#

#
#
$ $

'

# #
$/
$ $
) $
,

, $, ,#
) $
$#
,
# /
% 0 37C
378
#
)
#
$# )

$5
)
$ %
$#

) $
$
$
$

$,
$/ $
7

4
.

! "

# $
# #

$,

# #
$

$5
/
$

$,

$
@

'

=
#

)
B

0
0 0

# #
.
#

$5
+

>7 ,
K
,
.
$#
H
0

$ $
\
0

$
-

, $

,
!

. .L D

# #
#

'

0
$

$5
#

$/

# #

Local loFecha
SET CENTURY ON
BRITISH
SET DATE
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
*
*

# #
0,

$ ,# "
)
#

$#

/
/

$ #

DEFINE CLASS Fecha AS CUSTOM


dFecha = {}
PROCEDURE dFecha_Assign
LParameters tdFecha
if DtoS(tdFecha) < "20000101"
=MessageBox("ERROR...la fecha " + DtoC(tdFecha) + " es
invlida")
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 $
) %

$
.
,

C
! %

"#

7
$

! % \

% +

$,

%
! % U 7 1@( X

$
! %
$5

$5
7

05
=
! % @7

33E6G
) %
$
0

@( X
,

$
X 9; *B

) %
# #

$
=

X 99I*BB
% +

0,
-

This.dFecha = tdFecha

/ $

$5

0
. .L D

! "

77.33
#

33E6G $/ 5
$# # $

,
/ =

Local 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

B
.
# $

! "
9
)
# #

D /
#

/
$5

<ADE7B H
#'/
. >K 5 #
# /

#'/
#

$
#

- $

/
#

# #
$5
0 /
$ #'/
# $
# #
#
%
$

F
$

$/
\3
#
#

'
\3
#

0 /
@
$5

? 7

*--- Se definen las propiedades y mtodos del objeto _Screen


*--- Es decir, los que se usarn en todo el Sistema
with _Screen
.AddProperty("cNombreAplicacion", "Mi Gran Sistema Informtico")
.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 = "contrasea del usuario"
endwith
*--- AQUI FINALIZA TU PROGRAMA
*--- Se eliminan las propiedades y mtodos 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

!D ]
D ]
D ]

J % \3
# #

0 #

, #
$5
# #

0
$

. $5
$/ 5 #

# #
#
#

$5
@B # $
)

0
/

=
\3

% /-

0 0
O;

0 # #
# #

]
/

$#

.AddProperty("cUsuario")

0 # #
# #

\3
-

$/

.AddProperty("cNombreAplicacion", "Mi Gran Sistema Informtico")

$/ 5

0 # #
0

with _Screen

\3

'

% /-

0 @/
% /=(

$ 0 $
#

'

>7<^G1 <3
7
#

<

/
\3
$# /

=
$

$,
)

$
$

/ $
#

# #

# #
$ F#

# #
- $
#

#
0
0
$

, /

OI

\3
# / $

$
0
H

$ %
)
$,

$5

/ %

# #
?
$

.D A .C \37 ..G?
$
0
$5
$#
5

(D

% B
5%

# #

! "

$
0

$
>#

# #

with _Screen
$
with _Screen

# $
#
*

$
$ E ) $,

.
/

0
-#

/
\3
= (L 6

( ( (
.

! "

$
!

G.
%
3

$
/
$ % $

% )

0 $

C HF7 C74F!EG DDH

>7 $

+ ?

1 /

C H#

1 /

7 C74

1 /

!EG DDH

. .L D

$
$
$

$#

Local 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 propsito.
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
) %

#
"

$
$

/
3E3C.L .

$
0
- $

ON

#
%0
$/ 5

0
#
'$

,
$

# 0
$
#

. $
$

$#
# -

#
$,

$/

$/

%
7 C74 $

$
$/

$
$#

C $/ 5 # $#
#

H
#

% /
% /

$/

#
=

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#
$

#
#

#
D $#

#
.

0
$

% ,

C H F .G1C H
+

$,

$
/

<3 G1 .D L[C 1 .
$,

@B

C H F .G1C H
#
/

$5

$
$5

/
.

OO

#
@B

@
<
$ +
$ +

0
$

$
#
$# =
#0 $

! "
F L3

+
."

%
+

0
."

$ +

$
$

$# + $

Local loWord
loWord = CreateObject("MSWORD")
with loWord
endwith
Release loWord
Return
*
*

H %
%

$
7
/
L
L
E$# $
6
7

J %F
J %
$# =
0
$
$
"
"
0
# 0
$
$
@ $
$
L3

/
$
1 7

1!

1#

# #

DEFINE CLASS MSWORD AS CUSTOM


cNombreDocumento
cNombreImpresora
oWord
oDocumento
oRango

=
=
=
=
=

""
""
NULL
NULL
NULL

ENDDEFINE

D # #

$/

$
D # #
$

$# $

$
1 /

$#

OQ

$/
$/

$#
$#

. 0
$

# #
/

$
.

# #

/
# #

1
$

)
H

$5

G<DD >#
# $
/

# #

?#
$ G<DD .

$5

$5

$
>7 $ % - $

$5

PROCEDURE AgregarDocumento
with This
.oWord
= CreateObject("WORD.APPLICATION")
= .F.
&& No queremos que Word sea visible
.oWord.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
$
/

$
?

"

$5

1
$

$5

$5

#
-

/
$

)
45
+

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

O9

D
$/

/
$,

>K

>K

PROCEDURE MostrarDocumento
This.oWord.Application.Visible = .T.
ENDPROC

#
#

"
$

+
#

$ . .L D
$
/
#
1#
)

#
H

#
74 @

$
$ &

#
B 3

/ $
"

#
$

$, $#
$

# #

/ $

$
#

$#

/ $
$

$# &
G %
"#

#
$
/

#
#

C $/ 5
0

, /
$#

$
H
$#

6
"

$5

@
,

$ $ -

,
-

@
$

."

#
7

/
0 $
6 /
6 /

.
#

#
0

#
#

"

$#

#
/

# )
3

),
%

$#

$/
5? #
#

>
$
$

$
$

$ %

# $

0 +

! "
$

$/
%

$/

0
-

$ &
#

."

0 +

#
@B

"

%
#

$ % $,
$/
'

$ %

$#

=
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

H #
=

- $

/$

PROCEDURE AbrirPlanilla
LParameters tcNombrePlanilla
with This
.oExcel
= CreateObject("EXCEL.APPLICATION")
.oAplicacion = .oExcel.Application
with .oAplicacion
.Visible = .F.
.WorkBooks.Open(tcNombrePlanilla)
endwith
endwith
ENDPROC

/
$

@ "
$

'$
=

) % B

PROCEDURE EscribirCelda
LParameters tnFila, tnColumna, tuValor
This.oAplicacion.Cells(tnFila, tnColumna).Value = tuValor
ENDPROC

H#

0
)

@ "
'$
$/ 5 $

) % B
=

FUNCTION LeerCelda
LParameters tnFila, tnColumna
Local lnValor
lnValor = This.oAplicacion.Cells(tnFila, tnColumna).Value
RETURN(lnValor)

H#
$

#
- $ =

0 /

PROCEDURE MostrarPlanilla
This.oAplicacion.Visible = .T.
ENDPROC

#
%

7 $ 0
$ + ."
$
)
=#
/
"
#
)
) $
+
#

),

# - $
#
"
$

. )

' $ %
$/
- $
# 0 ,

<

+'%$
# 0

$
! "

# $
$# #

$
$

/
$,

- $

K
6
K

%
-

'

H
0
=

$
$#
K
$

K
K
K
.

$ $ %
) $
,
#
%

$
$
# $
0

$,
$

$#
)

'
$

$#

$5

,)
+

/'

! "

/$ =

MODIFY CLASS GRILLA OF CONTROLES AS CONTAINER

7
/ ,
7 GC EG.

$
% 0 7 GC D.3 78
>7
#
5
?
$/ 5
, "/ "
$
# $ %
$
$#
#
$, &. " $
#
$#
7 GC EG.

7 D

$
+'%$

,
6 E1 7
/ $

6 EDD
+'%$
,
$
+'%$
/
/

.3 1. D 3 !ED 3
<

0 +'%$
,

$
$ =

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
$#
,
+
$#
$

/ - $ =

ThisForm.Grid1.SetAll("DynamicBackColor", ;
Thisform.ObtenerColor(MiCondicion)", "Column")

H
L[C 1
D
$
D
7

$5
/

C% ! $ /

@B #

7
E$#

E$#
7
E$#
7
E$#
7

@ 7

_
U 6A@ II
`U
G1
U 6A@ II
`
U 6A@

B
E$#
_U
II IIB

YY 7

IIB

YY 7

a
a

Q;

YY 7

/
+

7
/

$
%

$/ / "
P /
#

) $
(A

%
*0 $

P
$

GM ;
. 0
+ !$"# +" #
>H #

#
7 $/ / "
5

0 ?

= (7 $/ A " A

$/ / "=

#
. $ % $, ),
$
#
H

$
#
#

$/ / "

"
! "
# #
$/ 5 #

/
$
QI

F
$
#
# #

# $
$
+

3 3

3.6<E

7 .

<G 7 G3C <7C

0
/ $
# #
,
%0
6
#
$# =

. 0
7 $
) $

L EG\6 EDD

# #
$/
/ ,

@
# ,$

$
,B

A<ED1.
%0
$ ,

LParameters toMiObjeto, toParametro2


DO FORM CONFIGURAR_GRILLA with toMiObjeto, toParametro2

0 ) $

#
I

@
$

0 #
@
/
/
$/ #
# #

#
P

N
O

4 $
. $
# $
Q H
,
%
$
P
(A

(A

/
F* F 0
$
# $
F*

$
0
%
$
$#

#
$ #
$# = 7 G!E6<
\6 EDD B
# $
$
%0 #
#
#
= L EG\6 EDD
6B
(A
F*
$ ( ##
@ ##B
#
@
/
$/
#
B
$

+
) $
/
) $
% $
/

@
@
% /- $

#
$

0 ) $
/

GM ;
QN

/ $
$#
$#
#

$# $
B % $
B
P
GM ;

% $
%

$#

#
- # $

+ !$"# +" # #
$/
/
$

$
$ %- $

$ %- $ $,
$
#
$
$ /

0
$/ 5
% , $ % $, 0

$
3
-

#
- $

% , #
#

# #

+,
#
#

QO

$#

$ &

;<
.

$#
/

$
$5

$5
4

'

# $

$ )

) $

1.L

378 #

GM ;

7 $/
(7

C
#

$
,

$ &
* )/

/
/

)
$

'

QQ

% +
0

$ &

) $

P
0

6
7
<
.
G
<

#
$#

#" ) !" " , %


0
/
0
/
#
)

$#

- $

/ =

@B b
LG $ .
2
% L G $/ c; d2

e
7
, '$

LG $
L G $/

0
0

/
# ,

$
$ $," $

;
D 0
, '$
$

#
/

L G $/

LG $ .
$#
$#
U

<
0
0

@ $

0
$

= E$# $

$#

C #

/ L G $/
0

#
-

=
)

0
#
L G $/

#" ) !" " , %


% + ,
$5
F % + ,
! "

0& ') !" " , %

.
4 J

L G $/

;IN2

$/
! "
/ =
L G $/ U (
*
L G $/ U
;IN
L G $/ U O9
5

/
$

0
+

@ $ $# $
B
# - #
)
$
#

/
#

Q9

)
! "

/ 7
#

/
# $

L,

/-

$# $

%
,? 4$$$$F # / $

>!

D 7 D

LG $

LG $
L G $/

3 #
0 #

/$

3 EGC.6.

L G $/

$ =
3 3C EG6

" *

L G $/

$
#

,
.

U (.
U

LG $

$ #

F VVV

WWW

=
"

!
& #D% + ## #
#" ) !" " , %

#
-

3 -#
0
$ =

$
/

E
#

3
#

)
$#

/$

GM ;;
G
0 $

#
/

#
(E

/$

EG

! "

)
0

0
/

) !"
D

3 $#
% /

# ) /
$# /

$
5#

# 5/
0

)-

5
E.1 1 1. 3 D D.7C<
0
# $
# $ %
$ ), $
$# =

# #
33E6G

$5

$ 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 lnea para asignar
*
This.cMiVariable = tcValor
ENDPROC
ENDDEFINE
*
*

.
0

# #

, )
. $5
# #

3
/ =
C%

L
."
$

."

# #

/ \ 33E6G

0
,

/ U

0 +

# #

'

/ $

>7fL 3 A. 3E <G
0
$
"
$
$ +

D A
/

.3C^ 7
.7C L.GC. .37 EC ?
# /
/
D ) $ $,
/
05
$ 0 $
$# =

Local lcMiPalabra, loWord, llResultado


&& quiso escribir 'Visual'

lcMiPalabra = "Visuel"

loWord = CreateObject("WORD.APPLICATION")
llResultado = loWord.CheckSpelling(lcMiPalabra)
? "Existe la palabra " + lcMiPalabra + "? ", llResultado
Release loWord
Return
*
*

E AD.3 H !<G7E G.3 .G D 3 7 CE G


C
/ $
# $
$/
0
/
$5
$ =

C% ! $ 7 #
C% ! $ D /
H
%

7 #

$/ 5
/ $
P /
- 0

3
.

$/
0

$
#

U (.
U (4
#

# #

- * T 1C 7@1 C.@BB

$/
0

$
# #

#
/

# #
/

#
$

$
/$ =

-$/

@UB

)
0

$#

) $

><3
.D L[C 1 +6- 45 D
! L<D E ?
4
) $ # /
$
L! $
34
@B
#

) $

- ( T 1C 7@1 C.@BB

$#
$

$ ) $

! "

U*4
D

/ =
L! $

1.L

Q 378

E.1 1 " + /
) $

/ U C

L 3C
$

/ =

<G

>7 ,

. $5
C
D

+6- 45 $

)
/
)

#
0
.

?
) $

+6- 45 "
5 .

$#
50 /

) $

# #

$/

$
+6- 45 #
#
+

$5

>7fL 3 A. 7< D.3 3 G D 3


!<G7EfG
7.1ELE.GC ?
3
% /
E
3
/
-0 ,
0 /
%

7 L 7 LAE

D 3

34
@B
# #

) $

"

$5
$

$/ 5

'

E AD.3 1.7D

1 3 .G <G

/ -' +

.3 1. D 3

E.1 1.3 1. <G 6 EDD

En modo ejecucin, con la funcin SetAll():


ThisForm.Grid1.SetAll('WIDTH', 40, 'COLUMN')
En modo diseo, selecciona la grilla, y escribe en la ventana
de comandos:
ASelObj(laGrilla, 1)
laGrilla[1].SetAll('Width', 120, 'column')
Release laGrilla

0
$ $

) $

%
#

@A P7

0 ,
#"

#
G $ !

+
3+

9;

# #
B

$/ 5

7 $

% /,
)$#
$# +
#

$
' %

$ % $,
#
$
#

/
# $
. )

$ ,

7 $
#

#
%

#
$
, $
$ %

$ %

$#
%
% /

#
-#
$,

+
$

$#

%
$# +

)
$ %

"#
% /

$
-

$#

$#

$
)
# /

- #

# 5

$/ 5

$#

! "
C

$
$# /

% /, #

$
)5

$
#

$#

J 0g% $

9I

, /

#
/

Potrebbero piacerti anche