Page 1 of 1

quien me da una idea de como hacer esto?

Posted: Mon Apr 20, 2009 10:14 am
by jefe
soy totalmente novato, hace tan sólo dos dias que he conseguido compilar.

Vereis quiero hacer esto.


AVENIDA MADRID

1 3 5 7 9 10 12 14 16
18 20 22 24 26 etc


RAMON Y CAJAL

2 4 6 8 10 12 14 16 etc


Bueno lo que quiero saber como hacer para que los numeros se puedan marcar o desmarcar pulsandolos con el ratón.

La visualización ya la he hecho, pero mucho me temo que no vale, Pongo el código

Code: Select all


#include "fivewin.ch"



function main()

local oDlg

local fila,col,cCal


fila:=4
col:=2
cCal:=""


   use bar2 alias hojaruta     // esto es una base de datos que contiene calles y portales


DEFINE dialog oDlg FROM 1, 1 TO 42, 100 ;
      TITLE "Nuevo cliente" 

go top
skip 1
cCal=hojaruta->calle
@2,2 say cCal

do while .not. eof()
    @fila,col say hojaruta->portal 
     col=col+3
     if col>40
        fila=fila+1
        col=2
     endif
     
     skip 1
     
     if hojaruta->calle<>cCal
        fila=fila+2
        col=2
        cCal=hojaruta->calle
        @fila,2 say hojaruta->calle
        fila=fila+2
     endif
enddo






ACTIVATE window oDlg
return nil



 

Gracias de antemano.

Re: quien me da una idea de como hacer esto?

Posted: Mon Apr 20, 2009 2:10 pm
by jrestojeda
Hola...
A que te refieres con marcar y desmarcar los números??

Re: quien me da una idea de como hacer esto?

Posted: Mon Apr 20, 2009 3:24 pm
by jefe
gracias por contestar, me refiero a que cuando pulses con el ratón sobre un número de portal este quede seleccionado y cuando lo vuelva a pulsar se desmarque.

por ejemplo


RAMON Y CAJAL

1 2 3 4 5 6 7 8 10 12


CUANDO PULSE el numero 10 que este se marque con otro color.

me imagino que se tiene que hacer con un array, pero como no se como convertir esos numeros a objetos para hacerlo.

Espero haberme explicado bien.

Re: quien me da una idea de como hacer esto?

Posted: Mon Apr 20, 2009 4:21 pm
by jrestojeda
Hola amigo...
Prueba lo siguiente:

Code: Select all

@ nRow,nCol SAY oSay // Donde oSay es el objeto asociado.
 
Espero te sirva.

Re: quien me da una idea de como hacer esto?

Posted: Mon Apr 20, 2009 4:37 pm
by Patricio Avalos Aguirre
Hola

podrias usar los Say con lWantClick

Code: Select all

DEFINE CURSOR oCursor HAND
REDEFINE SAY oSay[1] ID 201 OF oDlg PROMPT "1" COLOR CLR_BLUE
REDEFINE SAY oSay[2] ID 202 OF oDlg PROMPT "2" COLOR CLR_BLUE

aEval( oSay, { |x| x:lWantClick := .t., x:oCursor := oCursor, x:bLClicked := { || tufuncionaevaluar() } )
espero que te sirva..

Re: quien me da una idea de como hacer esto?

Posted: Mon Apr 20, 2009 6:11 pm
by jefe
gracias a los dos me pongo con ello, aver si soy capaz

un saludo.

Re: quien me da una idea de como hacer esto?

Posted: Mon Apr 20, 2009 6:50 pm
by jefe
jrestojeda wrote:Hola amigo...
Prueba lo siguiente:

Code: Select all

@ nRow,nCol SAY oSay // Donde oSay es el objeto asociado.
 
Espero te sirva.
Patricio Avalos Aguirre wrote:Hola

podrias usar los Say con lWantClick

Code: Select all

DEFINE CURSOR oCursor HAND
REDEFINE SAY oSay[1] ID 201 OF oDlg PROMPT "1" COLOR CLR_BLUE
REDEFINE SAY oSay[2] ID 202 OF oDlg PROMPT "2" COLOR CLR_BLUE

aEval( oSay, { |x| x:lWantClick := .t., x:oCursor := oCursor, x:bLClicked := { || tufuncionaevaluar() } )
espero que te sirva..


Me podeis decir con que manuales habeis empezado, porque yo los que tengo dan por sentado muchas cosas y no me entero de nada.

Re: quien me da una idea de como hacer esto?

Posted: Mon Apr 20, 2009 6:52 pm
by Daniel Garcia-Gil
Saludos Jefe...

Es algo muy simple...
Recopilando un poco lo aqui expuesto

Code: Select all

   @ 20,20 say oSay prompt "Test" of oWnd pixel COLOR CLR_BLACK 
   
   oSay:bLClicked := {| nRow, nCol, nFlags, oSay | ;
   if ( oSay:nClrText == CLR_BLACK, oSay:nClrText := CLR_YELLOW, oSay:nClrText := CLR_BLACK ), oSay:Refresh() }
   oSay:lWantClick := .t.

Re: quien me da una idea de como hacer esto?

Posted: Mon Apr 20, 2009 6:59 pm
by jefe
Daniel Garcia-Gil wrote:Saludos Jefe...

Es algo muy simple...
Recopilando un poco lo aqui expuesto

Code: Select all

   @ 20,20 say oSay prompt "Test" of oWnd pixel COLOR CLR_BLACK 
   
   oSay:bLClicked := {| nRow, nCol, nFlags, oSay | ;
   if ( oSay:nClrText == CLR_BLACK, oSay:nClrText := CLR_YELLOW, oSay:nClrText := CLR_BLACK ), oSay:Refresh() }
   oSay:lWantClick := .t.

muchas gracias si funciona, pero ahora me tengo que empapar esto, ya que tendre que crear un array ya que en cada calle puede haber hasta 1000 portales.

de verdad muchas gracias, esque soy muy torpe y estoy aprendiendo sobre la marchas

Re: quien me da una idea de como hacer esto?

Posted: Mon Apr 20, 2009 8:57 pm
by jrestojeda
jefe wrote: Me podeis decir con que manuales habeis empezado, porque yo los que tengo dan por sentado muchas cosas y no me entero de nada.
Podrías empezar mirando los samples de FWH y la ayuda proporcionada con el paquete.
Hay muchos ejemplos muy interesantes para ver...