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

 

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

Συντεταγμένες σημείου κλικ

Îåêßíçóå áðü ôï ìÝëïò KoYkoY. Τελευταία δημοσίευση από το μέλος KoYkoY στις 12-05-2006, 08:52. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  10-05-2006, 16:18 12500

    Hmm [^o)] Συντεταγμένες σημείου κλικ

    Σε μία βάση δεδομένων της ms Access έχω δημιουργήσει μία φόρμα με καθορισμό της ιδιότητας DefaultView=1 (continuous forms).

    Εκείνο που προσπαθώ να κάνω είναι όταν ο χρήστης μπαίνει σ' ένα textbox κάποιας εγγραφής τότε μία άλλη φόρμα να ανοίγει ακριβώς κάτω από το textbox εισόδου.

    Στο συμβάν Enter του textbox εμφανίζω τη φόρμα και χρησιμοποιώ τη μέθοδο Move(Left, Top, Width, Height) για να μετακινήσω τη φόρμα στο σημείο που θέλω όπου Top μια δημόσια μεταβλητή που παίρνει τιμή στο συμβάν Λεπτομέρεια_MouseMove όπως:

    Private Sub Λεπτομέρεια_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    yTopPosition = Y

    yTopPosition=yTopPosition + Ύψος Κεφαλίδας Φόρμας

    yTopPosition=yTopPosition + 520

    End Sub

    Ο παραπάνω τρόπος αρκετές φορές εμφανίζει τη φόρμα στο σωστό σημείο άλλες πάλι σε άσχετο σημείο. Μπορεί να μου πει κάποιος τί δεν κάνω σωστά; Γενικά ποιος είναι ο τρόπος για να ανιχνεύσουμε τις συντεταγμένες του σημείου της οθόνης όπου ο χρήστης κάνει κλικ; 

  •  11-05-2006, 02:23 12516 σε απάντηση της 12500

    Απ: Συντεταγμένες σημείου κλικ

    Κανονικά θα έπρεπε να πιάσεις event όπως GotFocus , ή mouseClick πάνω στο textbox..Δυστυχώς όμως δεν ξέρω εαν υπάρχουν στην Access αυτά τα event στο συγκεκριμένο control..
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  11-05-2006, 08:19 12519 σε απάντηση της 12500

    Απ: Συντεταγμένες σημείου κλικ

     KoYkoY wrote:

     Γενικά ποιος είναι ο τρόπος για να ανιχνεύσουμε τις συντεταγμένες του σημείου της οθόνης όπου ο χρήστης κάνει κλικ; 

    Ο γενικός τρόπος είναι να πάρεις τις συντεταγμένες τις οθόνης που δίνει το Mouse_Left_Button_Down Event.

    Δοκίμασε να να γεμίσεις την μεταβλητή σου σ'αυτό το Event και όχι στο Mouse_Move (το οποίο δίνει συνέχεια τιμή).

    Κανονικά θα έπρεπε να διαβάζεις το Position του Control στο οποίο έκανες Enter,

    δηλ. κάτι σαν : myTop  = myTextBox.Top ,

    αλλά η VBA δεν σου δίνει την δυνατότητα αυτή για continuous forms, καθώς διαβάζει πάντα τις συντεταγμένες του Control που δημιούργησε στο πρώτο Row. 

  •  11-05-2006, 21:07 12557 σε απάντηση της 12519

    Απ: Συντεταγμένες σημείου κλικ

    Παιδιά ευχαριστώ για τις συμβουλές.. το κυριότερο απ' όλα είναι ότι με κάνουν να σκεφτώ κι' αλλιώς...

    Tα συμβάντα GotFocus και Click για το textbox φυσικά και υπάρχουν και στην Access... αυτό έλειπε! ....αλλά το συμβάν Mouse_Left_Button_Down δεν το βλέπω.
    Σκέφτηκα λοιπόν να κάνω το εξής:

    Private Sub txtChooce_GotFocus()

    yTopPosition = 0
    yTopPosition = lngCurrentRecord - 1 'σύνολο εγγραφών μείον της τρέχουσας
    If yTopPosition > 0 Then
        yTopPosition = yTopPosition * 1170 'επί το ύψος της λεπτομέρειας
        yTopPosition = yTopPosition + 3215 '+ το ύψος της κεφαλίδας
        yTopPosition = yTopPosition + 113 '+ το ύψος της λεπτομέρειας της τρέχουσας εγγραφής μέχρι το textbox
        yTopPosition = yTopPosition + 330  '+ το ύψος του textbox
    Else
        yTopPosition = 3215 '+ το ύψος της κεφαλίδας
        yTopPosition = yTopPosition + 113 '+ το ύψος της λεπτομέρειας της τρέχουσας εγγραφής μέχρι το textbox
        yTopPosition = yTopPosition + 330  '+ το ύψος του textbox
    End If

    End Sub

    Ε λοιπόν αυτό δεν λειτουργεί σωστά γιατί εμφανίζει τη δεύτερη φόρμα κάτω από το textbox με ένα τεράστιο διάστημα αλλά τουλάχιστον φαίνεται σαν να πρόκειται για ένα σταθερό σημείο.

    Έστι χρειάζεται μία επιπλέον διόρθωση για να εμφανιστεί η δεύτερη φόρμα στο σημείο που θέλω.
        yTopPosition = yTopPosition - 300 'διόρθωση

    Τώρα γίνεται ικανοποιητικό αλλά ξανά όταν μετακινούμε μεταξύ των εγγραφών δημιουργείται μια πολύ μικρή διαφορά μεταξύ του textbox και του σημείου εμφάνισης της δεύτερης φόρμας. Η διαφορά αυτή ολοένα μειώνει το διάστημα μεταξύ του textbox και της δεύτερης φόρμας καθώς μεγαλώνει η lngCurrentRecord . Στην πέμπτη -έκτη εγγραφή αρχίζει να καβαλά το textbox.

    Οπότε χρειάζεται μία επιπλέον διόρθωση στην περίπτωση που η lngCurrentRecord > 0.
        yTopPosition = yTopPosition + (6 * lngCurrentRecord) 'επιπλέον διόρθωση

    Λίγο μπακαλίστικο αλλά αφού λειτουργεί...  

    Όμως  γιατί όλες αυτές οι διορθώσεις θα πρέπει να υπάρχει μία εξήγηση.....Confused [8-)]

    Τέλος πάντων.. τί γίνεται τώρα όταν μετακινούμε σε μία εγγραφή αρκετά παρακάτω  με το scrollbar; Υπάρχει κάποιος τρόπος να μετρήσω κατά πόσο και που μετακινήθηκα; 

  •  11-05-2006, 21:45 12560 σε απάντηση της 12519

    Απ: Συντεταγμένες σημείου κλικ

    Δοκίμασε να πάρεις το Χ καi Y ώς εξής:

    Μέσα στο Event που παρακολουθείς δώσε

    myX = Me.CurrentSectionLeft

    myY = Me.CurrentSectionTop

    όπου myX και myY είναι οι global μεταβλητές που κρατάς για να δώσεις τις αρχικές συντεταγμένες στην δεύτερη φόρμα που ανοίγεις.

    Ουσιαστικά θα πάρεις τις συντεταγμένες τις οθόνης από το την Current Row και δεν θα χρειαστεί να κρατάς το RowID ή να ανησυχείς για το Scroll.
  •  12-05-2006, 08:52 12570 σε απάντηση της 12560

    Απ: Συντεταγμένες σημείου κλικ

    Τέλειο! Καταπληκτικό! Εύκολο!

    Πολλά πολλά ευχαριστώ Big Smile [:D]Big Smile [:D]

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