Página 1 de 1

Funciones y Métodos

Publicado: Jue Ene 06, 2011 1:22 am
por ddupre
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body bgcolor="#ffffff" text="#000000">
<tt>Hola foro:<br>
Les planteo la siguiente duda de ignorante que soy.<br>
<br>
Necesito programar algunas rutinas dentro de un form, que harÃn
algunas tareas dependiendo de los valores que seleccione el
usuario en unos pocos controles (radiomenu, combobox, etc)<br>
Comencà escribiendo funciones al estilo Clipper pero no encuentro
como referirme a los controles, intentà poner algo asà dentro de
la funciÃn: <br>
<font color="#3333ff"> ÂÂÂÂÂÂ ÂÂÂÂÂ if ::oRadioMenu1:nIndex == 1Â
<------------------------------------------------<br >
ÂÂÂÂÂÂ ÂÂÂÂÂÂ ÂÂ nMesAct += (saldovta->pesosvtas -
saldovta->pesosdevo)<br>
ÂÂÂÂÂÂ ÂÂÂÂÂ else<br>
ÂÂÂÂÂÂ ÂÂÂÂÂÂ ÂÂ nMesAct += (saldovta->undvdas -
saldovta->dtas)<br>
ÂÂÂÂÂÂ ÂÂÂÂÂ endif<br>
</font>pero el compilado me responde: Warning W0001 Ambiguous
referece: 'SELF'<br>
<br>
Si pongo esto<br>
</tt><font color="#3333ff"><tt> ÂÂÂÂÂÂ ÂÂÂÂÂ if :oRadioMenu1:nIndex ==
1 <--------------------------------------------------<br >
ÂÂÂÂÂÂ ÂÂÂÂÂÂ ÂÂ nMesAct += (saldovta->pesosvtas -
saldovta->pesosdevo)<br>
ÂÂÂÂÂÂ ÂÂÂÂÂ else<br>
ÂÂÂÂÂÂ ÂÂÂÂÂÂ ÂÂ nMesAct += (saldovta->undvdas -
saldovta->dtas)<br>
ÂÂÂÂÂÂ ÂÂÂÂÂ endif<br>
</tt></font><br>
<tt>el compilador me responde:</tt><tt> Form1.prg(135) Error E0054Â
WITH Message [ORADIOMENU1] with no WITH OBJECT in sight.<br>
<br>
ÂCual es la forma correcta de hacerlo?<br>
<br>
<br>
Luego cambià la definiciÃn de las funciones por mÃtodos y no supe
como hacer que un mÃtodo se ejecute, intente poner una linea de la
misma forma que se llama a una funciÃn (simplemente con su nombre
y los parÃntesis() ), pero al compilar me salta el error de que no
se pueden resolver las "funciones" : <br>
Unresolved external '_HB_FUN_FUNC1000' Referenced from
C:WUTILESHLREPORTOBJFORM1.DBJ<br>
<br>
ÂComo se hace para que un mÃtodo creado por uno mismo se ejecute?<br>
<br>
<br>
Muchas gracias por cualquier ayuda.<br>
<br>
Un saludo<br>
Daniel.<br>
<br>
<br>
</tt>
</body>
</html>

Funciones y Métodos

Publicado: Jue Ene 06, 2011 6:18 am
por Carlos Ortiz
This is a multi-part message in MIME format.
------=_NextPart_000_001E_01CBAD47.FAF514C0
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_001F_01CBAD47.FAF514C0"
------=_NextPart_001_001F_01CBAD47.FAF514C0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Estimado Daniel,=20
va un ejemplo muy sencillo usando una clase y accediendo a sus metodos, =
espero sirva para aclarar el tema.
Atte. Carlos Ortiz.
------=_NextPart_001_001F_01CBAD47.FAF514C0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3Dcontent-type content=3D"text/html; =
charset=3DISO-8859-1">
<META content=3D"MSHTML 6.00.2900.5512" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Estimado Daniel, </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>va un ejemplo muy sencillo usando una =
clase y=20
accediendo a sus metodos, esperoÂsirva para aclarar el =
tema.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Atte. Carlos=20
Ortiz.</FONT><TT></DIV></TT></BODY></HTML>
------=_NextPart_001_001F_01CBAD47.FAF514C0--
------=_NextPart_000_001E_01CBAD47.FAF514C0
Content-Type: application/x-zip-compressed;
name="UsoClass.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="UsoClass.zip"
UEsDBBQAAgAIAHIFJj5inu/+ywAAACgBAAATAAAAU291cmNlL1Vzb0NsYXNz LnByZ12OvYrCQBDH
+0DeYYhNYmESiysWLOQOOw/xA65dJoMZWHfDZBe55/YFzK4KYjPFb/5f9TzP YA47cf+E3ik4je7b
6HFMeMPYk7zRxSDn9PmhEYUH5JtVsL11wTjoCMh60Z0GDWY6g2HUUZIs6+Cd qEcuYa8VNF9109bL
pm0jrfMsz2Zs0YQpqfjTbEgW2BeRTwORuiAEW822rCIDgPWQOjw7q/DI3hCo FRSvuUUSHTdOLm1Z
qV+6lu8WqNShd9eY9pG1D8+OPfkg0/47UEsDBBQAAgAIACsPJj7nyPkRUAEA AHUCAAASAAAAU291
cmNlL0NhbGN1bG8ucHJnrVA9a8MwEN0N/g+HuzSFRnGGDoYMwR/UkDjBcUo7 CvnqCFTJlexCf3e3
TpVlJ7RQOlUgkN67d3fvkRvfgxvYa/WOrFMRHI2KBTXGwRlnJ9QWjalgvVDz VjeOSNAwzVvGP2Tk
gHXfKT0+M2QnGsHijixCslyE4YAS3/O9Ky6Z6GuE4JFygXrOTsGAx5v14QDV NASycre1P/XSKomy
GyoAYJtW97vkvMkWzZp117OJ3Je7fVpWT8AeqFDaInmRVxDsNRpuuwBzMqoD SxECY1Vrb43Pg3Gg
Arg0HZWMUw2CArMp4NA+LRK34PAm5PZfj+/9akuVtOZqBj+DcU7zDEYWVhA6 ZHRUIjW8kWpYvdWq
5VjT2rq7WAGDzacEm+9rj/CGsqFneRRNsUUrCKbuuU1fd2gCV5RuDun3ycu/ pDGVHbfTL+IiyTPf
K9PqWBZQcPEFUEsDBBQAAgAIAOQQJj4SP3L1zQEAACMFAAAQAAAAU291cmNl L0Zvcm0xLnByZ72U
zW6cMBDH70i8wyi9LJESlCtSD1tCVKTlQyyp2uOsmSRuvUyKzTbbt+2xb1Eb yIakaatKTX0AMx7P
jH//MeGx78ExlB3vSRiO4FJzrFBrZw59z/deyVaoviE4eo9SUXcqbo6cPQxP /unwvXi1XK+hvuBu
ewYXVZGNc5cMAOIiK4s8yWvgChvJGbX92dOVpJHmHSruni68MW2MSvQKf1pa 4YbUGClL6rfFOcQd
oSGXexFM2cuqKJOq/gA8hmFI87SGPF3BL0cYQrH5SIbhFjuEW26oA9lqg62Q 2NkYe0AhyJkRFGvY
fjfcsJ5yTtW4OtJWGolKfqUF8JpatyWYO83OFyspPj1y870kPx/oPhZ0IH16 d7V9IUH/dACYKz4d
2kIrLShtyRi5ww5IQUOb/nqE+Lkn0PIatTWCoE4goAIeMd9rMwSKooNU0Wuo p/kiiHL6sgieVSud
tGFQCMLeAprtuw96aLHIPm01NvhDqkhM3ed7VVJfVjnkUr0o3N8I/xzeWanT OyO9FGZhFx6uVdSm
NsRdMFBZuhZlh3lsT0f+wGcPNyjsNw/KtCRIS+Oc1Teg9uD3N/Dmiti/kWuA 3WB3GQ6JeWP6Hf8P
0D8AUEsDBBQAAgAIAOQQJj4U63RFswEAAEgEAAAQAAAAU291cmNlL0Zvcm0x LnhmbZWT30+DMBDH
35fsf7jwxBJiBmOIJD5sCBlmbGagPtfRabOuLFCi0fi/2xY3qjHqeOr94O7T 713TKJ8tryCsMOI4
LqudCbQ1YADhfJJlkEu33e/1ewCQxIe4MsUXBBnm07JhRW3C2B1b4NhDC0a+ Y4Ht+jD4khhSghnP
yCs2YXTuihTb01PWOX7hEFyCoboaXaSMS6YiuTyYg6DFMMFIM8gQqyHDFdkY FvgWCAB3ONQLL1nC
CCeIitbH+p1La/RZt/03WlwlsTplzR5XgS7UWXwmO6jofZLPYDm9jsJcsq5Q QcoUs8ZWxEdTYC/w
sylQ6Uaj0xS0PSGgwL8Q2ni6eijheFfLcm9gJLt9WXFci9saIWKcFKgQFrwf 07/f4mfOqCD8DtGy
UpgpqrfS8w9KX+C5cnye5LW1LHqDKjHiw7SESMfQqSM8/zJCNqHkke1wW4Kj MFrk0aoLp+hljtkj
f5Jh/0QhppyFiK4biloppg3nJfuHEHJWUgjP+aZDt8mHwt2OLZl4B+utimqd ldM4kXyOHjBt10wd
/2Z2xnJmQmJnLJ/oj8xqKX5HWUX57Wqh+vR7H1BLAwQUAAIACADyECY+BxGM 9aoCAACpBQAADAAA
AFVzb0NsYXNzLnhwamWUW2/aMBTH3yPlO+x9GiKhl3VSHlouaqZSELCLBDw4 jglefZvttNBvu2+y
49hAsj3F5/c/xz43WM8Xs6/j4WobR6ujIhk5kDgaEYM1VZZKkX0zcsiQMXE0 q62q7Rn0Gteh5Ioy
orPDI9KFrHUcTREVU1nWjGQTqXnSU7oCWjNLFSO5MBYJTEzWW/Xi6Od8igTd EWO9nWN4M47mSCNO
LNEGjNl4mvUmIH4H2+WU9PpxtCCMIEMyOD7UlJXu4LJB4pjdG0ON/UDFDhL4 YylGTlPHBa32Fm5c
aVSSKdIv7noI4kRYd1zP5qt89ryEbtzXVnIEoVPCX5EeEcwgp6YlTaIjUtRV Dg94c1krpYkxT1SQ
55oXROfN4yFi0nJZ7qW2uLaWisorP5AWAqwn8kpYlkCzpCazpv8uK2c9DIcA nIHUBBruA4fgIBmB
bgfgXCGFF++7HuULmO1skY9dSUsYDyYjqjN/gm4LzOqyQeHo+mrOfqczzKD4 5QB84mh8UFCBM0df
No9E65IYtDkgtwfpZok4jNlsLouznuRPTQLJZXmanUizIWK4ZtKbg/a+rJ/y h8V9yDzJPq79/Vv/
6TFauPgzlvjg2eDCjM/E86vs05n/ZtQSj68vGGx+BM0LN/89CbOLo1uH937V t9oG589t+so9vHNX
n2Bl36jwPOm3vStb1TQISVtgSFSBp23OEdYyCINONmUZ8FUbl8VO2NCc5Lqd Eyi4PCk3/8TslA3K
bTvG0MMlplP2vgAtCJ3SIS9Uhimk/baCMBmkQejUjmGhFarCjNK0q3EuQyvT TgOUCrRTv8KaKHl6
v9OAffFOTzGd+t+BBe4GXmC8xf03yFW6/U8/B6ZM+bKRZYHPVdy1FW4or07S oH+66O2MkoAodz+o
M04Dho2Bf5Mwhr9QSwECFAAUAAIACAByBSY+Yp7v/ssAAAAoAQAAEwAAAAAA AAAAACAAtIEAAAAA
U291cmNlL1Vzb0NsYXNzLnByZ1BLAQIUABQAAgAIACsPJj7nyPkRUAEAAHUC AAASAAAAAAAAAAAA
IAC0gfwAAABTb3VyY2UvQ2FsY3Vsby5wcmdQSwECFAAUAAIACADkECY+Ej9y 9c0BAAAjBQAAEAAA
AAAAAAAAACAAtIF8AgAAU291cmNlL0Zvcm0xLnByZ1BLAQIUABQAAgAIAOQQ Jj4U63RFswEAAEgE
AAAQAAAAAAAAAAAAIAC0gXcEAABTb3VyY2UvRm9ybTEueGZtUEsBAhQAFAAC AAgA8hAmPgcRjPWq
AgAAqQUAAAwAAAAAAAAAAAAgALSBWAYAAFVzb0NsYXNzLnhwalBLBQYAAAAA BQAFADcBAAAsCQAA
AAA=
------=_NextPart_000_001E_01CBAD47.FAF514C0--

Attached files UsoClass.zip (2.6 KB)Â

Funciones y Métodos

Publicado: Jue Ene 06, 2011 1:44 pm
por ddupre
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
<tt>Carlos,<br>
Muchas gracias por tu ayuda.<br>
Este ejemplo me ha enseÃado mucho y dentro de mi ignorancia en
clases pude comprender los pasos a seguir para hacer lo que
quiero. Pido que me corrijas si me equivoco<br>
<br>
1) En el form definir una propiedad para poder instanciar un
objeto.<br>
2) Luego en el inicio del formulario instanciar la clase y guardar
su valor en dicha propiedad<br>
3) Crear un nuevo .prg en donde se define la nueva clase heredando
de alguna otra, donde declaro los mÃtodos y propiedades que
necesito.<br>
4) Escribo la lÃgica de los mÃtodos declarados segÃn mis
necesidades.<br>
5) Luego en el form accedo a el/los mÃtodos dentro de algÃn evento
del mismo o de alguno de sus controles.<br>
<br>
Si esto lo hago con funciones seria:<br>
<br>
1) Declarar la funciÃn escribiendo la lÃgica que necesito
utilizando las variables en las que el usuario carga sus valores.<br>
2) Donde necesito que esa funciÃn se ejecute poner una linea con
su nombre terminado con ().<br>
<br>
A simple vista parece mas sencillo lo segundo y seguramente para
muchas situaciones asà lo sea.<br>
</tt><br>
<tt>ÂHay alguna forma de poder utilizar los controles de un form
dentro de una funciÃn?</tt><br>
<br>
<tt><br>
Muchas gracias<br>
Daniel</tt><br>
<br>
<br>
<br>
El 06/01/11 03:18, Carlos Ortiz escribiÃ:
<blockquote cite="mid:[email=4d2551b1@svctag-j7w3v3j.]4d2551b1@svctag-j7w3v3j.[/email]" type="cite">
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
<meta content="MSHTML 6.00.2900.5512" name="GENERATOR">
<style></style>
<div><font face="Arial" size="2">Estimado Daniel, </font></div>
<div><font face="Arial" size="2">va un ejemplo muy sencillo usando
una clase y accediendo a sus metodos, esperoÂsirva para
aclarar el tema.</font></div>
<div>Â</div>
<div><font face="Arial" size="2">Atte. Carlos Ortiz.</font></div>
</blockquote>
</body>
</html>

Funciones y Métodos

Publicado: Jue Ene 06, 2011 2:55 pm
por Carlos Ortiz
Quizás usando objetos en algo tan básico puede parecer mas código o mas
complejo, pero esta metodología de programar o pensar orientado a objetos
(uso de clases y métodos) es mas potente que la programación basada en
funciones y podés ordenar mejor el código.
Con las clases podes encapsular el comportamiento de tu sistema en objetos,
además tenés herencia y otras cosas más que vienen bárbaro para programar.
Para más tarde te paso el ejmplo a funciones, un saludo.
Atte. Carlos Ortiz.

Funciones y Métodos

Publicado: Jue Ene 06, 2011 3:08 pm
por ddupre
Carlos:
Muchas gracias por tu ayuda y seguramente que programar oop es mejor, lo
que me pasa es que es la primera vez que me enfrento a una situación
donde el uso de funciones me complicó un poco.
Te agradeceré mucho el nuevo ejemplo.
Un Saludo
Daniel.
El 06/01/11 11:55, Carlos Ortiz escribió:
> Quizás usando objetos en algo tan básico puede parecer mas código o mas
> complejo, pero esta metodologí­a de programar o pensar orientado a objetos
> (uso de clases y métodos) es mas potente que la programación basada en
> funciones y podés ordenar mejor el código.
>
> Con las clases podes encapsular el comportamiento de tu sistema en objetos,
> además tenés herencia y otras cosas más que vienen bárbaro para programar.
>
> Para más tarde te paso el ejmplo a funciones, un saludo.
>
> Atte. Carlos Ortiz.
>
>

Funciones y Métodos

Publicado: Jue Ene 06, 2011 4:38 pm
por Martin Del Angel
On 1/5/2011 6:22 PM, Daniel Du Pré wrote:
> Hola foro:
> Les planteo la siguiente duda de ignorante que soy.
>
> Necesito programar algunas rutinas dentro de un form, que harán algunas
> tareas dependiendo de los valores que seleccione el usuario en unos
> pocos controles (radiomenu, combobox, etc)
> Comencé escribiendo funciones al estilo Clipper pero no encuentro como
> referirme a los controles, intenté poner algo así­ dentro de la función:
> if ::oRadioMenu1:nIndex == 1
> <------------------------------------------------
> nMesAct += (saldovta->pesosvtas - saldovta->pesosdevo)
> else
> nMesAct += (saldovta->undvdas - saldovta->dtas)
> endif
> pero el compilado me responde: Warning W0001 Ambiguous referece: 'SELF'
>
> Si pongo esto
> if :oRadioMenu1:nIndex == 1
> <--------------------------------------------------
> nMesAct += (saldovta->pesosvtas - saldovta->pesosdevo)
> else
> nMesAct += (saldovta->undvdas - saldovta->dtas)
> endif
>
> el compilador me responde:Form1.prg(135) Error E0054 WITH Message
> [ORADIOMENU1] with no WITH OBJECT in sight.
>
> ¿Cual es la forma correcta de hacerlo?
>
>
> Luego cambié la definición de las funciones por métodos y no supe como
> hacer que un método se ejecute, intente poner una linea de la misma
> forma que se llama a una función (simplemente con su nombre y los
> paréntesis() ), pero al compilar me salta el error de que no se pueden
> resolver las "funciones" :
> Unresolved external '_HB_FUN_FUNC1000' Referenced from
> C:WUTILESHLREPORTOBJFORM1.DBJ
>
> ¿Como se hace para que un método creado por uno mismo se ejecute?
>
>
> Muchas gracias por cualquier ayuda.
>
> Un saludo
> Daniel.
>
>
Hola Daniel:
Para Poder acceder a objetos de la clase usando funciones, tienes que
que hacer esto:
Cuando llames la Funcion, por ejemplo:
IF EnviaMail(Self)
msginfo()
else
msgstop()
endif
FUNCTION EnviaMail(Self)
local nCual
if ::oRadioMenu1:nIndex == 1 <=====Miembro de la Clase
nCual:=1
else
nCual:=2
endif
return .t.
Si no envias como parametro Self , cualquier referencia que hagas a un
miembro de la clase dentro de la función, tendras el error.
Warning W0001 Ambiguous referece: 'SELF'
Debe de funcionar sin problema alguno.
Saludos...

Funciones y Métodos

Publicado: Jue Ene 06, 2011 5:18 pm
por ddupre
Martin:
Lo probare y te cuento.
Muchas gracias
Un Saludo
El 06/01/11 13:38, Martin Del Angel escribió:
> On 1/5/2011 6:22 PM, Daniel Du Pré wrote:
>> Hola foro:
>> Les planteo la siguiente duda de ignorante que soy.
>>
>> Necesito programar algunas rutinas dentro de un form, que harán algunas
>> tareas dependiendo de los valores que seleccione el usuario en unos
>> pocos controles (radiomenu, combobox, etc)
>> Comencé escribiendo funciones al estilo Clipper pero no encuentro como
>> referirme a los controles, intenté poner algo así­ dentro de la función:
>> if ::oRadioMenu1:nIndex == 1
>> <------------------------------------------------
>> nMesAct += (saldovta->pesosvtas - saldovta->pesosdevo)
>> else
>> nMesAct += (saldovta->undvdas - saldovta->dtas)
>> endif
>> pero el compilado me responde: Warning W0001 Ambiguous referece: 'SELF'
>>
>> Si pongo esto
>> if :oRadioMenu1:nIndex == 1
>> <--------------------------------------------------
>> nMesAct += (saldovta->pesosvtas - saldovta->pesosdevo)
>> else
>> nMesAct += (saldovta->undvdas - saldovta->dtas)
>> endif
>>
>> el compilador me responde:Form1.prg(135) Error E0054 WITH Message
>> [ORADIOMENU1] with no WITH OBJECT in sight.
>>
>> ¿Cual es la forma correcta de hacerlo?
>>
>>
>> Luego cambié la definición de las funciones por métodos y no supe como
>> hacer que un método se ejecute, intente poner una linea de la misma
>> forma que se llama a una función (simplemente con su nombre y los
>> paréntesis() ), pero al compilar me salta el error de que no se pueden
>> resolver las "funciones" :
>> Unresolved external '_HB_FUN_FUNC1000' Referenced from
>> C:WUTILESHLREPORTOBJFORM1.DBJ
>>
>> ¿Como se hace para que un método creado por uno mismo se ejecute?
>>
>>
>> Muchas gracias por cualquier ayuda.
>>
>> Un saludo
>> Daniel.
>>
>>
>
> Hola Daniel:
>
> Para Poder acceder a objetos de la clase usando funciones, tienes que
> que hacer esto:
>
> Cuando llames la Funcion, por ejemplo:
>
> IF EnviaMail(Self)
> msginfo()
> else
> msgstop()
> endif
>
>
> FUNCTION EnviaMail(Self)
> local nCual
> if ::oRadioMenu1:nIndex == 1 <=====Miembro de la Clase
> nCual:=1
> else
> nCual:=2
> endif
>
> return .t.
>
> Si no envias como parametro Self , cualquier referencia que hagas a un
> miembro de la clase dentro de la función, tendras el error.
> Warning W0001 Ambiguous referece: 'SELF'
>
>
> Debe de funcionar sin problema alguno.
>
>
>
>
>
> Saludos...
>
>

Funciones y Métodos

Publicado: Jue Ene 06, 2011 5:31 pm
por ddupre
Martin:
Funciono perfecto
Mil gracias
Saludos
El 06/01/11 13:38, Martin Del Angel escribió:
> On 1/5/2011 6:22 PM, Daniel Du Pré wrote:
>> Hola foro:
>> Les planteo la siguiente duda de ignorante que soy.
>>
>> Necesito programar algunas rutinas dentro de un form, que harán algunas
>> tareas dependiendo de los valores que seleccione el usuario en unos
>> pocos controles (radiomenu, combobox, etc)
>> Comencé escribiendo funciones al estilo Clipper pero no encuentro como
>> referirme a los controles, intenté poner algo así­ dentro de la función:
>> if ::oRadioMenu1:nIndex == 1
>> <------------------------------------------------
>> nMesAct += (saldovta->pesosvtas - saldovta->pesosdevo)
>> else
>> nMesAct += (saldovta->undvdas - saldovta->dtas)
>> endif
>> pero el compilado me responde: Warning W0001 Ambiguous referece: 'SELF'
>>
>> Si pongo esto
>> if :oRadioMenu1:nIndex == 1
>> <--------------------------------------------------
>> nMesAct += (saldovta->pesosvtas - saldovta->pesosdevo)
>> else
>> nMesAct += (saldovta->undvdas - saldovta->dtas)
>> endif
>>
>> el compilador me responde:Form1.prg(135) Error E0054 WITH Message
>> [ORADIOMENU1] with no WITH OBJECT in sight.
>>
>> ¿Cual es la forma correcta de hacerlo?
>>
>>
>> Luego cambié la definición de las funciones por métodos y no supe como
>> hacer que un método se ejecute, intente poner una linea de la misma
>> forma que se llama a una función (simplemente con su nombre y los
>> paréntesis() ), pero al compilar me salta el error de que no se pueden
>> resolver las "funciones" :
>> Unresolved external '_HB_FUN_FUNC1000' Referenced from
>> C:WUTILESHLREPORTOBJFORM1.DBJ
>>
>> ¿Como se hace para que un método creado por uno mismo se ejecute?
>>
>>
>> Muchas gracias por cualquier ayuda.
>>
>> Un saludo
>> Daniel.
>>
>>
>
> Hola Daniel:
>
> Para Poder acceder a objetos de la clase usando funciones, tienes que
> que hacer esto:
>
> Cuando llames la Funcion, por ejemplo:
>
> IF EnviaMail(Self)
> msginfo()
> else
> msgstop()
> endif
>
>
> FUNCTION EnviaMail(Self)
> local nCual
> if ::oRadioMenu1:nIndex == 1 <=====Miembro de la Clase
> nCual:=1
> else
> nCual:=2
> endif
>
> return .t.
>
> Si no envias como parametro Self , cualquier referencia que hagas a un
> miembro de la clase dentro de la función, tendras el error.
> Warning W0001 Ambiguous referece: 'SELF'
>
>
> Debe de funcionar sin problema alguno.
>
>
>
>
>
> Saludos...
>
>