Spanish Panel Touch (pregunta) [SOLUCIONADO]

ebqlabs

Active Member
Licensed User
Hola,

tengo una función creada en "Sub Panel5_Touch (Action As Int, X As Float, Y As Float) ", en el
desde una tablet obtengo las posiciones "x" e "y" y las almacenos en la BD.

Pero estas coordenadas
x: 58
y:128

que genere de una tablet de 7 pulgas, como le puedo re-utilizar para otros dispositivos ? Por que esas posiciones pinto una marca, pero cuando la cargo de otros dispositivos y como no son de la misma resolución, la marca queda en otro lado.

La estoy cargando de estas manera, desde la BD:

B4X:
Panel5.AddView(ImageView2,m.Get("app_pos_xxx"),m.Get("app_pos_yyy"),5%x,4%y)

Favor su ayuda. y atento a comentarios. Gracias.
 

JordiCP

Expert
Licensed User
Longtime User
Lo suyo sería que guardes en la BBDD las posiciones relativas X e Y respecto al ancho y alto del panel, ya que las dimensiones del mismo serán diferentes en cada dispositivo.

X: 58/Panel5.Width
Y: 128/Panel5.Height '<-- X e Y tendrán decimales, a tener en cuenta para la BBDD.
(en esta caso, el Width y Height de tu tablet)

Y en los otros dispositivos, lo cargas como
B4X:
X2=Panel5.Width*m.Get("app_pos_xxx")
Y2=Panel5.Height*m.Get("app_pos_yyy")
Panel5.AddView(ImageView2, X2, Y2, 5%x, 4%y)
 

ebqlabs

Active Member
Licensed User
Entonces, me dices antes que grabe las coordenas modifique me codigo ?


B4X:
Sub Panel5_Touch (Action As Int, X As Float, Y As Float)   
    Select Action
        Case Activity.ACTION_DOWN     
            Timer1.Enabled=False
            Timer1.interval=1000  '5 segundos
              Timer1.Enabled=True
            j = X
            k = Y                   
        Case Activity.ACTION_UP
            Timer1.enabled=False
    End Select
End Sub

en el codigo
j = X
k = Y

sería:

j = X/Panel5.Width
k = Y/Panel5.Height
 

JordiCP

Expert
Licensed User
Longtime User
Sí, ya que lo que importa es la posición relativa que tu has tocado en el panel, y no la absoluta.
Por ejemplo, si tocas en el centro del panel, j y k valdrán 0.5
('j' y 'k' deben ser Float, y guardarse como tales en la BBDD)
 

ebqlabs

Active Member
Licensed User
Sí, ya que lo que importa es la posición relativa que tu has tocado en el panel, y no la absoluta.
Por ejemplo, si tocas en el centro del panel, j y k valdrán 0.5
('j' y 'k' deben ser Float, y guardarse como tales en la BBDD)

Quedo perfecto, gracias por la ayuda.

Saludos.
 
Top