Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
![]()
Καλησπέρα σε όλους τους φίλους του Forum. Προσπαθώ εδώ και πολύ ώρα να λύσω ένα πρόβλημα αλλά δεν τα καταφέρνω. Το πρόβλημα είναι το εξής. Σε μια έκθεση έχω ένα πεδίο (πχ πεδίο1) στο οποίο έχω ορίσει την ιδιότητα "Ανάπτυξη" CanGrow σε ΝΑΙ έτσι ώστε όταν τα δεδομένα δεν χωράνε να αναπτύσεται κατακόρυφα. Έτσι όμως η εμφάνιση της έκθεσης δεν είναι ωραία όταν ένα πεδίο είναι ψηλότερο από κάποιο άλλο. Υπάρχει τρόπος όταν το Πεδίο1 αναπτύσεται κατακόρυφα τότε και τα υπόλοιπα πεδία της ίδιας εγγραφής να πέρνουν το ίδιο ύψος με το πεδίο1 ώστε να είναι ομοιόμορφα. Προσπάθησα τα εξής αλλά δεν έγινε τίποτε. me.Πεδίο2.Height = me.Πεδίο1.Height και me.Πεδίο2.Height = me.Λεπτομέρεια.Height Φιλικά Δημήτρης. |
#2
| ||||
| ||||
![]()
Καλημέρα σε όλους! Δημήτρη, η τιμή στην ιδιότητα Height των πεδίων επηρεάζεται από την Can Shring και Can Grow μόνο στο συμβάν Print που όμως σ αυτό το χρονικό σημείο είναι πολύ αργά για να τροποποιηθεί. Αυτό που θα σου πρότεινα είναι να εκμεταλλευτείς την δυνατότητα Can Grow για να εξομοιώσεις το ύψος του πλαισίου κειμένου που σε ενδιαφέρει με τον παρακάτω τρόπο: Έστω ότι σε μια έκθεση έχεις τα πεδία: Pedio1 και Pedio2 με τις μορφοποιήσεις τους κτλ. και θέλεις το ύψος του πεδίου "Pedio2" να επεκταθεί όσο το ύψος του πεδίου "Pedio1". Τα πεδία αυτά είναι συνδεμένα με πίνακα ή ερώτημα και έχει οριστεί η ιδιότητα τους "Ανάπτυξη" ( CanGrow ) σε ΝΑΙ. Φρόντισε το Pedio2 να μην είναι ορατό. Πρόσθεσε άλλο ένα πεδίο, δώσε του το όνομα "PedioΝ" και τοποθέτησε το στη θέση του πεδίου "Pedio2" (μετακινείς και μικραίνεις το "Pedio2" για να μην σε εμποδίζει στη σχεδίαση). Στη λειτουργική μονάδα της Έκθεσης πέρασε τον παρακάτω κώδικα: Κώδικας: Option Compare Database Option Explicit Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) 'Αντιγραφή μορφοποιήσεων: Ενεργοποίησε όποιες από τις παρακάτω γραμμές χρειαστεί _ αν τα 2 Πλαίσια Κειμένου (Pedio1 και PedioN) _ έχουν διαφορετικές μορφοποιήσεις στη γραμματοσειρά τους. ' Me.PedioN.Properties("FontSize").Value = Me.Pedio1.Properties("FontSize").Value ' Me.PedioN.Properties("FontName").Value = Me.Pedio1.Properties("FontName").Value ' Me.PedioN.Properties("FontWeight").Value = Me.Pedio1.Properties("FontWeight").Value ' Me.PedioN.Properties("FontItalic").Value = Me.Pedio1.Properties("FontItalic").Value ' Me.PedioN.Properties("FontUnderline").Value = Me.Pedio1.Properties("FontUnderline").Value 'Για να αυξηθεί το ύψος του Πεδίου "PedioN" όσο είναι το ύψος του Πεδίου "Pedio1" _ σε χρόνο εκτέλεσης, του δίνουμε το κείμενο του Πεδίου "Pedio1" με την παρακάτω εντολή: Me!PedioN = Me!Pedio1 End Sub Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) 'Επαναφορά Μορφοποιήσεων : Ενεργοποίησε όποιες από τις παρακάτω γραμμές χρειαστεί _ αν τα 2 Πλαίσια Κειμένου (Pedio1 και PedioN) _ έχουν διαφορετικές μορφοποιήσεις στη γραμματοσειρά τους. ' Me.PedioN.Properties("FontSize").Value = Me.Pedio2.Properties("FontSize").Value ' Me.PedioN.Properties("FontName").Value = Me.Pedio2.Properties("FontName").Value ' Me.PedioN.Properties("FontWeight").Value = Me.Pedio2.Properties("FontWeight").Value ' Me.PedioN.Properties("FontItalic").Value = Me.Pedio2.Properties("FontItalic").Value ' Me.PedioN.Properties("FontUnderline").Value = Me.Pedio2.Properties("FontUnderline").Value 'Τώρα που έχει αυξηθεί το ύψος του Πεδίου "PedioN" μπορούμε να του _ δώσουμε την τιμή που πρέπει να εμφανίσει δηλ. την τιμή του Πεδίου "Pedio2" (που δεν είναι ορατό). Me!PedioN = Me!Pedio2 End Sub Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 22-04-11 στις 12:28. |
#3
| |||
| |||
![]()
Καλημέρα σε όλους Τάσο είδα το μήνυμά σου και προσπάθησα να το εφαρμόσω αλλά δεν τα καταφέρνω. Μάλον κάτι δεν κάνω καλά. Για να διευκολύνω την κατάσταση ανεβάζω ένα παράδειγμα για μεγαλύτερη ευκολία. Καλό Πάσχα σε όλους Ευχαριστώ πολύ Φιλικά Δημήτρης. |
#4
| ||||
| ||||
![]()
Καλησπέρα Δημήτρη! Θα πρέπει να προσαρμόσεις τα ονόματα του αρχείου σου σε αυτά του παραδείγματος ή το αντίθετο:
Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#5
| |||
| |||
![]()
Καλησπέρα σε όλους. Τάσο ευχαριστώ για το χρόνο σου. Έκανα τις αλλαγές που είπες και όντως λειτουργεί, αλλά από ότι είδα στην πράξη για να λειτουργήσει σωστά και να έχουν τα δύο πεδία το ίδιο ύψος θα πρέπει τα δύο πεδία (PedioN και Pedio1) να έχουν το ίδιο ακριβώς πλάτος. Σε διαφορετική περίπτωση το ένα μεγαλώνει περισσότερο από το άλλο. Όταν σε μια έκθεση έχουμε πολλά πεδία και άρα πρόβλημα χώρου τότε υπάρχει πρόβλημα. Και πάλι ευχαριστώ Φιλικά Δημήτρης. |
#6
| ||||
| ||||
![]()
Στα πεδία που σε ενδιαφέρουν άλλαξε την ιδιότητα Στυλ Περιγράμματος σε Διαφανές. Κατόπιν στην ετικέτα των πεδίων (Tag) πληκτρολόγησε ένα "x" και χρησιμοποίησε τον παρακάτω κώδικα (Τμήμα του προέρχεται από τη βοήθεια της Microsoft): Κώδικας: Option Compare Database Option Explicit Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) Dim H As Integer, ctl As Control H = Me.Pedio1.Height 'Το πεδίο με το μεγαλύτερο ύψος For Each ctl In Me.Section(0).Controls If ctl.Tag = "x" Then Me.Line (ctl.Left, ctl.Top)-Step(ctl.Width, H), 12835293, B ' 12835293 = το χρώμα End If Next End Sub Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#7
| |||
| |||
![]()
Καλησπέρα σε όλους τους φίλους Τάσο και πάλι ευχαριστώ για την άμμεση απάντηση. Δοκίμασα τον κώδικα που έγραψες και λειτουργεί πολύ καλύτερα από τον προηγούμενο και είναι και πιο απλώς. Μόνο ένα μικρό πρόβλημα είχε στην στοίχιση των πεδίων το οποίο λύθηκε με μια μικρή τροποποίηση στον κώδικα. Η αλλαγή που έκανα για να στοιχίζονται τέλεια τα πεδία στην έκθεση είναι με κόκκινα γράμματα. Me.Line (ctl.Left - 20, ctl.Top - 20)-Step(ctl.Width, H), 12835293, B ' 12835293 = το χρώμα Καληνύχτα και καλή πρωτομαγιά να έχουμε τώρα. Φιλικά Δημήτρης. |
#8
| ||||
| ||||
![]()
Καλησπέρα Δημήτρη! Δεν υπάρχει πρόβλημα στη στοίχιση των πεδίων γιατί ο κώδικας απλά δεν επηρεάζει τα πεδία αλλά σχεδιάζει ένα τετράγωνο με τις ακριβείς διαστάσεις τους (Left., Top, Width, Height). Δοκίμασε να δώσεις την τιμή 0,05 στην ιδιότητες Άνω περιθώριο και Δεξιό Περιθώριο των πεδίων. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#9
| |||
| |||
![]()
Καλησπέρα σε όλους τους φίλους. Τάσο εκτυπώνοντας μια έκθεση αυτό που παρατήρησα ότι το πάχος του περιγράμματος των συγκεκριμένων πεδίων ήταν πολύ λεπτό. Υπάρχει τρόπος να καθορίσουμε το πάχος του περιγράμματος των πεδίων; Φιλικά Δημήτρης. |
#10
| ||||
| ||||
![]()
Καλησπέρα Δημήτρη! Δοκίμασε: Κώδικας: '........ Me.DrawWidth = 12 ' Προσάρμοσε το Me.Line (ctl.Left, ctl.Top)-Step(ctl.Width, H), 12835293, B '........ Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Μορφοποίηση] Αυτοματη μορφοποίηση ύψους merged κελιών | Niha | Excel - Ερωτήσεις / Απαντήσεις | 2 | 17-07-12 20:16 |
[Μορφοποίηση] Αυτόματη προσαρμογή ύψους γραμμής | Xristos | Excel - Ερωτήσεις / Απαντήσεις | 11 | 06-05-11 13:47 |
Η ώρα είναι 11:20.