Newsgroup: it.comp.appl.access
Titolo: access e schermo touch

Buongiorno a tutti
 
sto riadattando un programma access affinchè funzioni con tablet windows ed ho 2 domande da farvi:
 
c'è modo di personalizzare caselle combinate e di riepilogo affinchè la barra di scorrimento verticale sia più grande per permettere lo scorrimento a dito?
 
per scorrere i record ho posizionato 2 pulsanti comodi da raggiungere con il pollice e scorrere su/giu, mi chiedevo se ci fosse la possibilità di fare la stessa cosa con uno swipe su/giu...
 
attendo vs risposte!
 
grazie e buona giornata
 
Nicola


Con le dimensioni delle combo/list penso sia una rogna
Anche se aumenti le dimensione font, restano sempre quelle
 
Sperando possa esserti utile ti descrivo come ho risolto io lo 
scorrimento dei record di una schermata continua
Schermata con un centinaio di record, sono i nomi delle agenzie portuali
Coi classici tasti su/giu/primo/ultimo non mi piaceva per niente perche' 
non ti consentono la rapidita' attesa dall'utente
Allora sul piede della form c'ho messo una label alta 1 cm e larga tutta 
la form, l'idea e' che l'operatore tocca sulla barra e sposta da 
sinistra a destra per visualizzare dal primo record all'ultimo
La label dispone tra gli altri anche degli eventi MousDown e MouseMove
 
Sul MouseDown cloni il recordset corrente, conti i record totali, vai al 
record corrispondente alla posizione che stai toccando sulla barra
40        Set MyRS = Me.RecordsetClone
50        MyRS.MoveLast
60        numero_record_totali = MyRS.RecordCount
70        Me.Recordset.MoveFirst
80        numero_record_attuale = 0
90        agg_pos Button, Shift, X, Y
 
 
Sul MouseMove,  vai al record corrispondente alla posizione che stai 
toccando sulla barra
40        agg_pos  Button, Shift, X, Y
 
 
Tutto sta nella funzione agg_pos
Function agg_pos (ByVal but As Integer, ByVal shi As Integer, ByVal X As 
Single, ByVal Y As Single)
40        If but = 1 Then
50            lbltestX.caption = X
60            lbltestPercento.caption = Int(X / 144)
70            If numero_record_attuale <> Int(numero_record_totali * 
lbltestPercento.caption / 100) Then
80                spostamento_rispetto_posizione_attuale = 
Int(numero_record_totali * lbltestPercento.caption / 100) - 
numero_record_attuale
90                If Int(numero_record_totali * lbltestPercento.caption 
/ 100) >= 0 And Int(numero_record_totali * lbltestPercento.caption / 
100) <= numero_record_totali Then
100                  numero_record_attuale = Int(numero_record_totali * 
lbltestPercento.caption / 100)
110                  Me.Recordset.Move 
spostamento_rispetto_posizione_attuale
120                  End If
130               End If
140           End If
 
In sostanza fai corrispondere la pressione sulla zona sinistra della 
barra al primo record visualizzato, la zona destra all'ultimo
Strisciando sulla barra devi vedere scorrere la griglia record nel corpo


Ciao Roberto, 
la soluzione non è male e devo capire come applicarla poichè nel mio caso si tratta di migliaia di record.
Ci studio un pò su per applicarla, nel caso ho difficoltà ti ricontatto per chiederti maggiori info.
 
Nicola


144 è la larghezza della barra?

Il giorno mercoledì 10 aprile 2019 18:20:01 UTC+2, RobertoA ha scritto:

Ciao Roberto,
nel pomeriggio ho testato il tuo codice ed ho riscontrato 2 anomalie:
 
1) la prima è che i record non scorrono spostando il mouse sulla barra poichè posizione attuale risulta sempre zero
 
2) la percentuale della barra va oltre il 100 se la barra è lunga e conteggia più articoli di quelli che inrealtà sono presenti in tabella ... 
come stabilisco che deve essere 100 alla fine a prescindere dalla lunghezza?
 
Grazie
Nicola

 come stabilisco che deve essere 100 alla fine a prescindere dalla lunghezza?
 
Ho scritto un codice di prova, funzionante ( il recordset è associato a 
una listbox Elenco0 contenuta nella form, la label Etichetta2 in fondo è 
lunga 8 cm, quindi con la proporzione considero che il 100% deve essere 
8 cm ):
 
 
 
Private Sub Etichetta2_MouseDown(Button As Integer, Shift As Integer, X 
As Single, Y As Single)
 
 
Dim rst As DAO.Recordset
Dim strSQL As String
  Dim databs As DAO.Database
  Set databs = CurrentDb
 
strSQL = "SELECT * FROM TABELLA1 "
Set rst = databs.OpenRecordset(strSQL)
 
Set Me.Elenco0.Recordset = rst
rst.MoveLast
numero_record_totali = rst.RecordCount
agg_pos Button, Shift, X, Y
 
End Sub
 
 
 
Function agg_pos(ByVal but As Integer, ByVal shi As Integer, ByVal X As 
Single, ByVal Y As Single)
        If but = 1 Then
 
    Dim rst As DAO.Recordset
Dim strSQL As String
  Dim databs As DAO.Database
  Dim sh As Integer
  Set databs = CurrentDb
 
strSQL = "SELECT * FROM TABELLA1 "
Set rst = databs.OpenRecordset(strSQL)
Set Me.Elenco0.Recordset = rst
rst.MoveLast
numero_record_totali = rst.RecordCount
rst.MoveFirst
 
   Etichetta2.Caption = Int((X / 567) * numero_record_totali / 8)
 
               sh = Int((X / 567) * numero_record_totali / 8)
 
               Me.Elenco0.ListIndex = sh
            End If
End Function