![]() |
Αλλαγή πλάτους στηλών σε φόρμα προβολής φύλλου δεδομένων Καλημέρα σε όλους! Σε μια φόρμα σε λειτουργία προβολής φύλλου δεδομένων μάς δίνεται η δυνατότητα να αλλάξουμε τα πλάτη των στηλών. Είναι δυνατόν, με κάποιο τρόπο, να κλειδωθεί η ενέργεια αυτή, έτσι ώστε: 1. Τα πλάτη τών στηλών να είναι παγωμένα για το χρήστη ή, τουλάχιστον, 2. Αν δεν μπορεί να κλειδωθούν, όταν γίνει αλλαγή του πλάτους, μετά το κλείσιμο του φύλλου δεδομένων, να επανέρχονται στην αρχική τους κατάσταση? Σας ευχαριστώ εκ των προτέρων |
Καλησπέρα Δημήτρη, Πρωτείνω στην εντολή με το ανοιγμα της φόρμας (On form Load) να βάλεις την εντολή Me.Πεδίο που θέλεις.ColumnWidth= Οσο θες εσϋ (πχ. 10000) |
Καλησπέρα Γιώργο, σε ευχαριστώ για την απάντηση. Δεν φαίνεται άσχημη η λύση που προτείνεις. Όμως, πρέπει να επαναλάβω τον Κώδικα και για τα (15) πεδία που έχει το φύλλο δεδομένων. Και αυτό πρέπει να γίνει σε αρκετά φύλλα δεδομένων! Μήπως έχεις καμιά ιδέα για πιο σύντομο Κώδικα, πιο "αυτοματοποιημένο"? (αφού λάβεις δε υπόψη σου ότι τα πεδία δεν έχουν τα ίδια πλάτη) |
Μπορείς να κάνεις 1 iteration και να θέσεις το πλάτος "μαζικά" με 1 Loop Σε πιο προχωρημένο επίπεδο μπορείς με κώδικα να διαβάσεις το πλάτος Χ εγγραφών (π.χ πρώτες 100 ή random) σε χαρακτήρες και με βάση το πιο πλατύ να θέσεις με μια σχετικά ασφάλεια το πλάτος ώστε να έχεις την καλύτερη δυνατή εκμετάλλευση. Βέβαια υπάρχει και η λύση ActiveX (ListView) που υπάρχουν ρουτίνες για αυτόματη προσαρμογή μέσω Windows API αλλά φαντάζομαι δεν είναι ιδιαίτερα επιθυμητό. |
Καλημέρα σε όλους! Γιάννη, αν δεν σου κάνει κόπο, μπορείς να ανεβάσεις ένα παράδειγμα? |
Έφτασε... :) Κώδικας: Private Sub Form_Load() |
Καλησπέρα Γιάννη, καταρχάς σε ευχαριστώ για το παράδειγμα. Απ` ότι βλέπω, ο κώδικας αυτός (δεν τον δοκίμασα ακόμη) επαναφέρει τα πεδία σε συγκεκριμένο πλάτος(ColumnWidth = 2000) Όμως, το ζητούμενο δεν είναι ακριβώς αυτό! Με απλά λόγια: Ανοίγει ο χρήστης το φύλλο δεδομένων. Για τους δικούς του λόγους, τροποποιεί το πλάτος κάποιου(ων) πεδίου (ων). Κατόπιν, μετά το κλείσιμο και το εκ νέου άνοιγμα του φύλλο δεδομένων τα αλλαγμένα πεδία να επανέρχονται στην προεπιλεγμένη(αρχική) κατάσταση! Αυτό είναι το ζητούμενο! |
Αυτό δεν το πρόσεξα...αλλα η λύση δεν είναι δύσκολη Θα φτιάξεις 1 πίνακα που θα κρατάει για κάθε χρήστη τις προτιμήσεις(πίνακας,πεδίο, λάτος) , (κάπου χρειάζεσαι 1 κουμπάκι λογικά στο ribbon που θα ανιχνεύει τα πλάτη και θα τα αποθηκεύει) Στο Load θα διαβάζει αυτές τις τιμές και θα τις εφαρμόζει |
1 Συνημμένο(α) Καλημέρα σε όλη την παρέα, Δείτε μια πρόταση για το ζητούμενο. Απαραίτητη προϋπόθεση για δουλέψει σωστά θα πρέπει να υπάρχει είσοδος χρήστη στην εκάστοτε εφαρμογή. Έτσι ώστε να ελέγχουμε αν έχει δικαίωμα αποθήκευσης ο χρήστης των αλλαγών στο πλάτος των στηλών σε μια φόρμα. Στο παράδειγμα όταν ο χρήστης είναι ο admin μπορεί να αλλάξει το πλάτος των στηλών και με το κλείσιμο της φόρμας «frmMain» να αποθηκεύει την διαμόρφωση των στηλών. Όταν συνδεθεί κάποιος άλλος χρήστης μπορεί να αλλάξει το πλάτος των στηλών, αλλά όταν κλείσει την φόρμα δεν θα αποθηκεύσει τις αλλαγές που έκανε. Ανοίγοντας πάλι την φόρμα «frmMain» θα έχει την μορφοποίηση που είχε κάνει ο χρήστης Admin. Ευχαριστώ. |
Καλησπέρα σε όλους! Γιώργο, καταπληκτική ιδέα, για το ζητούμενο! Ακριβώς αυτό έψαχνα... Θερμές ευχαριστίες. Καλή συνέχεια... |
Καλησπέρα Γιώργο, στο παράδειγμα που ανέβασες είδα ότι ο κώδικας ισχύει μόνο για συγκεκριμένο φύλλο δεδομένων(frmMain). Αν προσθέσουμε νέα φύλλα δεδομένων θα πρέπει να ενσωματώσουμε και σε αυτά τον ίδιο κώδικα κοκ., για να έχουμε το επιθυμητό αποτέλεσμα. Προσπάθησα με μια Public να το γενικεύσω, αλλά μου χτυπάει στο "For Each ctrl In Me.Controls". Έχεις καμιά ιδέα πώς μπορούμε να το χειριστούμε πιο γενικευμένα με καμιά Function? |
Χωρίς να έχω διαβάσει τον κώδικα ούτε έχω κατεβάσει το παράδειγμα το me θα μπορούσες να το αντικαταστήσεις με το screen active form https://docs.microsoft.com/en-us/off...een.activeform |
1 Συνημμένο(α) Καλησπερα σας, Δες μια προταση. Ευχαριστω. |
1 Συνημμένο(α) Με βάση την προηγούμενη πρόταση μου βάζω 1 quick & dirty attachment Για να το κάνεις δυναμικό θα πρέπει να περνάς σαν όρισμα την form e.g Public Function AdjustColumns(Frm as Form) Ρίξε μια ματιά |
Καλησπέρα σε όλους! Γιώργο, η πρότασή σου είναι υποδειγματική και με εξυπηρετεί απόλυτα! Γιάννη, η πρότασή σου φαίνεται να είναι άκρως ενδιαφέρουσα. Θα τη μελετήσω, και αν χρειαστεί θα επανέλθω. Σας υπερευχαριστώ. Είμαι ειλικρινά υπόχρεος για τη βοήθειά σας! Καλή συνέχεια... |
| Η ώρα είναι 14:30. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.