Clarion - Como crear y mover objetos en pantalla

 
Vista:
sin imagen de perfil
Val: 11
Ha aumentado su posición en 6 puestos en Clarion (en relación al último mes)
Gráfica de Clarion

Como crear y mover objetos en pantalla

Publicado por Wsebolod (15 intervenciones) el 24/06/2018 16:30:51
Hola buen día. En mi aplicación, necesito crear una ventana en donde al presionar el botón derecho del ratón me despliegue un menú para crear un botón o panel asignando tamaño, color y posición y poder con el mismo ratón arrastrarlo para posicionarlo y/o moverlo en la pantalla.

Saludos !!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 403
Oro
Ha mantenido su posición en Clarion (en relación al último mes)
Gráfica de Clarion

Como crear y mover objetos en pantalla

Publicado por Marcelo Madelón (299 intervenciones) el 26/06/2018 18:21:07
Te paso lo que hice y ves si te sirve.
Es un plano de los asientos de un colectivo de pasajeros.
No arrastro nada.
Espero te sirva.

Saludos



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
!    Hacer plano para coche, colectivo, micro, pasajero
 
LOOP C#= 101 TO 148
!LE SUMO 100 PARA QUE NO SE MEZCLEN CON OTROS CONTROLES
COL#+=1
IF COL# = 3 THEN COL#=4. !PASILLO :)
IF COL# = 6
COL# = 1
FIL#+=1
END
X# = CREATE(C#, CREATE:button)
IF ERRORCODE() THEN STOP (ERROR()).
X#{PROP:XPOS} = COL# * 30
X#{PROP:YPOS} = FIL# * 12
X#{PROP:TEXT} = C#-100
X#{PROP:BACKGROUND} = COLOR:YELLOW
X#{PROP:SKIP} = True
X#{PROP:LEFT} = True
X#{PROP:WIDTH} = 25
X#{PROP:HEIGHT} = 10
UNHIDE(X#)
END

El loop puede ser recorriendo tu tabla de asientos y con X#{PROP:BACKGROUND}
podrias asignarles diferentes colores...

Ademas, en WindowManager.TakeAccepted puedes preguntar por
!ACCEPTED() - 100 y te va a dar el numero de asiento sobre el que se hizo
!click...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
!   Para Posicionarce sobre el registro del browse cuando oprime el boton
IF  ACCEPTED() > 100
    GLO:CanAsientos =   ACCEPTED() - 100
    CH2:NumeroContrato  =   CO1:NumeroContrato
    CH2:Asiento         =   GLO:CanAsientos
    SET (CH2:KeyContratoAsiento,CH2:KeyContratoAsiento)
    K#  =   1
    IF  Access:Coches02.Fetch(CH2:KeyContratoAsiento)
        K#  =   0
    END
    IF  K#  =   0
        Select(?Insert:3)
        !CYCLE
    ELSE
        BRW2.ResetFromFile()
        ThisWindow.Reset(2)
        BRW2.StartAtCurrent = True
        Display
        Select(?Change:3)
        !CYCLE
    END
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar