Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Απορια σχετικα με τοποθετηση κερσορα

Îåêßíçóå áðü ôï ìÝëïò roni7. Τελευταία δημοσίευση από το μέλος imanos στις 26-09-2006, 16:07. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-09-2006, 04:34 17132

    Απορια σχετικα με τοποθετηση κερσορα

    Καλησπερα σε ολους. Θα προσπαθησω να περιγραψω το προβλημα μου και ελπιζω  να γινω κατανοητος. Χρησιμοποιω στην εφαρμογη μου (VB.Net 2005) ενα data grid απο την Component Source. To grid αυτο εχει τη δυνατοτητα να χρησιμοποιησω το πρωτο row σαν filter row, οποτε προσφερει ουσιαστικα τοσα πεδια-κριτηρια οσα και τα columns. Το grid λειτουργει ως εξης : Αν πχ θελεις να ψαξεις ολα τα records που εχουν την τιμη "Αθηνα" στο πεδιο city, πρεπει να πληκτρολογησεις "Αθηνα" (ολοκληρη τη λεξη) και μετα να κανεις κλικ σε ενα button. Aν θελεις να ψαξεις ολα τα records στο πεδιο city που η πολη να ξεκιναει απο "Α" πληκτρολογεις "Α*" και κανεις κλικ στο button.  To προβλημα μου ειναι οτι θελω να αποφυγω το να πρεπει ο χρηστης να κανει κλικ στο button για να λειτουργησει το φιλτρο. Οποτε μια σκεψη που εκανα ηταν καθε φορα που πληκτρολογει ενα γραμα ο χρηστης ο χρηστης να διαβαζω τι εχει γραψει. Για να μπορεσω να διαβασω την τιμη πρεπει να θεσω το grid σε status εdit off. Το κανω αυτο και διαβαζω την τιμη, ομως πρεπει να "ξαναβαλω" τον κερσορα εκει που τον "αφησε" ο χρηστης.

    Πχ εστω οτι ο χρηστης θελει να βαλει το κριτηριο "Αθηνα"

      πληκτρολογει "Α". Οταν πληκτρολογησει, εγω θετω edit off το grid ωστε να μπορω να διαβασω το "Α". Μετα θετω edit on το grid και θελω ο κερσορας να ειναι μετα το "Α". Το προβλημα μου ειναι οτι οταν οταν θετω το grid σε edit on το αποτελεσμα ειναι να ειναι το "Α" selected δηλαδη μπλε και ο κερσορας δεν ειναι ενεργος. Οποτε οταν παει ο χρηστης να πληκτρολογησει το "θ" , το "θ" παει και αντικαθιστα το "Α".

    Με λιγα λογια αυτο που θελω ειναι αν μπορει καποιος να μου πει εναν τροπο να θετω τον κερσορα στο τελος καποιου text.   Συγνωμη αν σας κουρασα και ευχαριστω εκ των προτερων για τον χρονο σας

  •  25-09-2006, 08:31 17133 σε απάντηση της 17132

    Απ: Απορια σχετικα με τοποθετηση κερσορα

    Αν ήταν ένα απλό textbox θα μπορούσες να πεις

    TextBox1.SelStart = TextBox1.SelLength

    Θα πρέπει να ελέγξεις αν το συγκεκριμένο grid (δεν μας είπες ποιό είναι, το ComponentSource πουλάει controls από πολλές εταιρείες) παρέχει τέτοια properties για το text box που σου εμφανίζει.
    Vir prudens non contra ventum mingit
  •  25-09-2006, 19:05 17159 σε απάντηση της 17133

    Απ: Απορια σχετικα με τοποθετηση κερσορα

    Ευχαριστω παρα πολυ για την απαντηση. Εννοειται πως δεν περιμενα βοηθεια για το συγκεκριμενο grid αλλα γενικοτερη βοηθεια σχετικα με τη λειτουργια αυτη και πραγματι με βοηθησατε. Γι αυτο το λογο δεν εγραψα και ποιο grid χρησιμοποιω. Ειναι το GridEx της Janus Systems.
  •  25-09-2006, 19:29 17161 σε απάντηση της 17159

    Απ: Απορια σχετικα με τοποθετηση κερσορα

    Μπορείς κάλιστα να βάλεις ένα Handler στο event του KeyDown του Grid έτσι ώστε όταν και αφού γράψει σε ποιές στήλες θέλει filter και αφού πατήσει Enter να εκτελείται το φίλτρο.

    Αν δεν κάνω λάθος για το συγκεκριμμένο grid που αναφέρεις η συγκεκριμμένη λειτουργία που αναφέρω παραπάνω εκτελείται από μόνη της χωρίς να χρειαστεί να κάνεις κάτι σε κώδικα δηλ.όταν ο χρήστης δώσει Enter το φίλτρο εκτελείται από μόνο του χωρίς να πατήσει το κουμπί που εμφανίζεται στην στήλη.

    Επίσης στό site της Janus στο Forums μπορείς να βρείς πολύτιμη βοήθεια http://www.janusys.com


    Ιωάννης Μανουσάκης
  •  26-09-2006, 01:17 17192 σε απάντηση της 17161

    Απ: Απορια σχετικα με τοποθετηση κερσορα

    Καταρχας σας ευχαριστω για το ενδιαφερον.

    Πραγματι υπαρχει αυτη η λειτουργια αλλα αυτο που θελω να αποφυγω ειναι το να πρεπει ο χρηστης να πατησει το Enter. Θελω καθε φορα που πληκτρολογει κατι να ενεργοποιειται το φιλτρο. Μην ασχολειστε αλλο, το σωστο ειναι αυτο που ειπε ο kelman (να ψαξω αν εχει αντιστοιχο property το grid ) καθως και αυτο που λες εσυ να απευθυνθω στο site της Janus.Επρεπε να το ειχα κανει απο την αρχη και κακως εβαλα ποστ εδω καθοτι ειναι εξειδικευμενο θεμα του συγκεκριμενου grid.

    Ευχαριστωωωωωωωωω
  •  26-09-2006, 16:07 17237 σε απάντηση της 17192

    Απ: Απορια σχετικα με τοποθετηση κερσορα

    Κοίταξα λίγο περισσότερο το τή μπορεί να κάνεις για την περίπτωσή σου. Ο μόνος τρόπος που πιστεύω ότι μπορείς να κάνεις αυτό που θέλεις είναι με CustomEdit.

    Δηλαδή τοποθετείς ένα textBox στην φόρμα σου txtCustom και θέτεις για τις στήλες που επιθυμείς θέτεις το property EditType σε Custom οπότε γίνεται triggered o παρακάτω κώδικας.

    Private Sub gridEX1_InitCustomEdit(ByVal sender As Object, ByVal e As Janus.Windows.GridEX.InitCustomEditEventArgs) Handles gridEX1.InitCustomEdit

    'Θέτουμε την τιμή που ήδει μπορεί να υπάρχει στη στήλη που βρισκόμαστε

    If e.Value Is Nothing Then

    txtCustom.Text = ""

    Else

    txtCustom.Text = e.Value.ToString()

    End If

    'Για το παράδειγμα επιτρέπουμε την εισαγωγή μόνο όταν βρισκόμαστε στό πεδίο του Filter

    If e.Row.RowType = RowType.FilterRow Then

    txtCustom.ReadOnly = False

    Else

    txtCustom.ReadOnly = True

    End If

    'Όταν οχρήστης ξεκινά την πληκτρολόγηση τότε το property EditChar

    'κρατά τον χαρακτήρα.

    'Άν ή εισαγωγή άρχησε επειδή ο χρήστης έκανε κλικ στό κελί τότε το EditChar

    'επιστρέφει (char)0

    If e.EditChar <> "" AndAlso Not txtCustom.ReadOnly Then

    txtCustom.SelectionStart = txtCustom.Text.Length

    Else

    If e.Value Is Nothing Then

    txtCustom.Text = ""

    Else

    txtCustom.Text = e.Value.ToString()

    End If

    txtCustom.SelectionLength = txtCustom.Text.Length

    End If

    'Καθορίσουμε το προπερτυ του EditControl ώστε το GridEX control

    'να γνωρίζει σε ποιά στήλη θα βάλει το custom control

    e.EditControl = txtCustom

    End Sub

    Private Sub gridEX1_EndCustomEdit(ByVal sender As Object, ByVal e As Janus.Windows.GridEX.EndCustomEditEventArgs) Handles gridEX1.EndCustomEdit

    'Συγκρίνουμε την αρχική τιμή μέ την τιμή στό control.

    If txtCustom.Text.CompareTo(e.Value) <> 0 Then

    'Αν αυτή διαφέρει τότε θέτουμε το property DataChanged σε true

    'για να δείξουμε ότι το control πρέπει να κάνει update στό κελλί.

    e.DataChanged = True

    e.Value = txtCustom.Text

    End If

    End Sub

    Το φιλτράρισμα τώρα τών εγγραφών μπορείς να το πάρεις στο TextChanged event του TextBox χρησιμοποιώντας και αυτά που ανέφερε ο Kellman.Xρειάζεται λίγο προσοχή γιατί την τιμή στό κελί  την περνάει στο event του EndCustomEdit του grid οπότε ίσως πρέπει να χρησιμοποιήσεις όχι AutoFilterMode αλλά manual οπότε και θα χρειαστεί αν χρησιμοποιήσεις τις κλάσεις GridEXFilterCondition  και  GridEXFilterConditionCollection  του Grid.

    Πάντως δεν έκανες κακώς που έβαλες αυτό το post εδώ.Πρέπει να ξέρεις ότι ίσως στο dotNetZone μπορεί να βρείς για όλα απαντήσεις.Απλά σου ανέφερα οτι καλό είναι να απευθύνεσαι στο επίσημο site της Janus γιατί εκεί πιθανόν να βρείς τις απαντήσεις που θέλεις πολύ πιό εύκολα

     


    Ιωάννης Μανουσάκης
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems