Καλησπέρα σε όλους,
τελευταία με απασχόλησε το βασικό πρόβλημα που κυριαρχεί στα mobile, το θέμα του χώρου της οθόνης που έχει ο χρήστης στη διάθεσή του κατά την εκτέλεση μίας εργασίας.
Φυσικά, αυτός ο χώρος (VisibleDesktop) μικραίνει όταν ενεργοποιείται το εικονικό πληκτρολόγιο (SIP-->Software-based Input Panel).
Οι περισσότεροι θα γνωρίζετε (δε βάζω τον εαυτό μου μέσα καθώς 'νέος' στα mobile) ότι θέτοντας την ιδιότητα της φόρμας (ή panel) AutoScroll σε True, βοηθάει λίγο την κατάσταση αλλά δεν κάνει αυτό που θέλει ο χρήστης, στην περίπτωση εισαγωγής δεδομένων σε φόρμα με πολλά πεδία, να μεταφέρονται τα πεδία προς τα επάνω, αφήνοντας τελευταίο αυτό το οποίο θέλει να επεξεργαστεί.
Με λίγο 'googling' αρχικά βρήκα αυτό και αφού το δοκίμασα, αρχικά νόμιζα ότι έλυνε το πρόβλημα, αλλά στη συνέχεια διαπίστωσα (χρησιμοποίησα ως datasource τον πίνακα Employees της Nortwind) ότι όταν ο χρήστης βρίσκεται στο τελευταίο πεδίο (Reports To) και ενεργοποιήσει το SIP δεν μεταφέρεται στο συγκεκριμένο πεδίο στο VisibleDesktop.
Συνέχισα το 'googling' και βρήκα στη συνέχεια αυτό, το οποίο φαινόταν καλό (αλλά όχι αρκετά) και το οποίο ήμουν έτοιμος να ακολουθήσω. Χρησιμοποιώντας την ίδια φόρμα, κατέληξα σε χειρότερα αποτελέσματα από το προηγούμενο έλεγχο.
Μετά από αρκετούς πειραματισμούς, κατέληξα να χρησιμοποιήσω συνδιασμό των δύο μεθόδων για να έχω το αποτέλεσμα που ήθελα.
'Παραθέτω τον κώδικα σε vb
'InputPanel1 είναι έναι ένα InputPanel control
'και το PanelSIP είναι ένα Panel control με dock property Bottom
Private Sub InputPanel1_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles InputPanel1.EnabledChanged
SuspendLayout()
PanelSIP.Visible = InputPanel1.Enabled
PanelSIP.Height = InputPanel1.Bounds.Height
Inputpanel(Me.Panel1.Controls, Me.InputPanel1.Enabled, InputPanel1.VisibleDesktop.Height)
ResumeLayout()
End Sub
Δεν ξέρω εάν βοήθησα κάποιον, αλλά επείδη παιδεύτηκα λιγάκι, θέλησα να το μοιραστώ με εσάς.
Ευχαριστώ και συγγνώμη για την πολυλογία!