Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Φόρμες ] Αλλαγή προβολής σε παράθυρο των Windows (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/1963-allagi-probolis-se-parathyro-ton-windows.html)

dimmag 11-07-12 09:56

Αλλαγή προβολής σε παράθυρο των Windows
 
1 Συνημμένο(α)
Καλημέρα σε όλους!

Το ερωτημά μου νομίζω αφορά api
Στο συνημμένο παράδειγμα όταν από τη φόρμα Test πατάω προσθήκη θέλω το παράθυρο των Windows για αναζήτηση αρχείου να ανοίγει μεγιστοποιημένο και προβολή λεπτομέρειες.

Αν κάποιος μπορεί ας βοηθήσει.
Ευχαριστώ εκ των προτέρων.

Φιλικά Δημήτρης

skionitis 17-07-12 02:52

καλημέρα αυτό γίνεται μάλλον μόνο με VBA

Tasos 17-07-12 12:18

Καλησπέρα!

Δημήτρη, δοκίμασε τον παρακάτω κώδικα στη φόρμα σου (test).

Ο κώδικας αυτός λειτουργεί αυτόνομα (δεν εξαρτάται από τις συναρτήσεις των άλλων λειτουργικών μονάδων της εφαρμογής):

Πρόσθεσε πρώτα την αναφορά Microsoft Scripting Runtime (Tools > References)

Κώδικας:

Option Compare Database
Option Explicit

Private Const strOpenTitle = "Εισαγωγή"
Private Const strDlgTitle = "Επιλογή αρχείου..."
Private Const DlgClass = "#32770"
Private Const SW_MAXIMIZE = 3&
Private Const SW_SHOWNORMAL = 1&
Private hw As Long

Private Const strFilter = "Όλα τα αρχεία (*.*)|Αρχεία Word (*.doc)|Αρχεία Excel (*.xls)|Αρχεία Pdf (*.pdf)|Αρχεία (*.rtf)"

Private Declare Function ShowWindow Lib "user32" (ByVal _
                                                  hwnd As Long, ByVal nCmdShow As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
                                    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _
                                      As String, ByVal lpFile As String, ByVal lpParameters As String, _
                                      ByVal lpDirectory As String, ByVal nShowCmd _
                                      As Long) As Long

Private fso As New Scripting.FileSystemObject

Private Function GetFilePath() As String
    Dim strFile As String, strInitialDir As String
    strInitialDir = CurrentProject.Path    'ή πχ. "C:\"
    WizHook.Key = 51488399
    Me.TimerInterval = 1000
    WizHook.GetFileName 0, "", strDlgTitle, strOpenTitle, strFile, strInitialDir, strFilter, 0, 0, 64, True
    GetFilePath = strFile
End Function

Private Sub Form_Timer()
    If hw Then Me.TimerInterval = 0: hw = 0: Exit Sub
    hw = FindWindow(DlgClass, strDlgTitle)
    ShowWindow hw, SW_MAXIMIZE
End Sub

Private Sub cmdAddSmall_Click()
    On Error GoTo cmdAddSmall_Err
    Dim strFilename As String
    strFilename = GetFilePath
    If Len(strFilename) Then
        Me![FilePath] = strFilename
        Me.DocumentTitle = fso.GetFileName(strFilename)
        Me.FolderName = fso.GetParentFolderName(strFilename)
    End If
cmdAddSmall_End:
    Exit Sub
cmdAddSmall_Err:
    MsgBox Err & vbLf & Err.Description
    Resume cmdAddSmall_End
End Sub

Private Sub cmdOpenWordDoc_Click()
    Dim strFilename As String, lp_Directory As String
    strFilename = Nz(Me.FilePath, "")
    If Len(Trim(strFilename)) = 0 Then
        MsgBox "Παρακαλώ βεβαιωθείτε ότι η διαδρομή για αυτό το έγγραφο είναι σωστή.", vbInformation, "Προσοχή!"
    ElseIf Not fso.FileExists(strFilename) Then
        MsgBox "Το έγγραφο δεν βρέθηκε." & vbCrLf & "Παρακαλώ αναζητήστετο ξανά.", vbExclamation, "Λυπάμαι!"
    Else
        lp_Directory = Nz(Me.FolderName, "")
        If Not fso.FolderExists(lp_Directory) Then lp_Directory = "C:\"
        ShellExecute 0, "open", strFilename, "", lp_Directory, SW_SHOWNORMAL
    End If
End Sub

Φιλικά

Τάσος

dimmag 17-07-12 19:02

Καλημέρα σε όλους τους φίλους.

Τάσο είδα την απαντησή σου και σε ευχαριστώ για το χρόνο σου.
Δουλεύει, το παράθυρο ανοίγει σε προβολή λεπτομέρειες, δεν γίνεται maximize αλλά δεν πειράζει. Όμως δεν πάει στον φάκελο από όπου πρόσθεσα το τελευταίο αρχείο. Ανοίγει πάντα στο φάκελο που έχω τη βάση πράγμα που δεν εξυπηρετεί.
Προσπαθώ να βάλω σε τάξη εκατοντάδες αρχεία ( ερωτήματα - αποφάσεις-κλπ) σκορπισμένα σε διάφορους φακέλους και ήθελα να κάνω ευκολότερη την αναζήτηση.

Μια ερώτηση μόνο στο strFilter ποιά είναι η σύνταξη για το OR ώστε να προβάλλει δύο τύπους αρχείων ταυτόχρονα πχ (*.doc) και (*.xls)


Και πάλι ευχαριστώ
Φιλικά Δημήτρης.

Tasos 17-07-12 20:00

Καλησπέρα Δημήτρη!

Πρέπει να δουλέψει η μεγέθυνση τουλάχιστον σε Windows 7. Δεν μπόρεσα να το δοκιμάσω σε XP.
Ωστόσο δοκίμασε να αυξήσεις το χρόνο στο χρονόμετρο της φόρμας από 1000 σε κάτι μεγαλύτερο (Me.TimerInterval = 1500).

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


Όσο για τη διαδρομή φακέλου δοκίμασε:

Κώδικας:

Private Function GetFilePath() As String
    Dim strFile As String, strInitialDir As String
    strInitialDir = Nz(Me.FolderName, "")
    If Trim(strInitialDir) = "" Then strInitialDir = CurDir
    WizHook.Key = 51488399
    Me.TimerInterval = 1500
    WizHook.GetFileName 0, "", strDlgTitle, strOpenTitle, strFile, strInitialDir, strFilter, 0, 0, 64, True
    GetFilePath = strFile
End Function

Καλή συνέχεια!

Τάσος

dimmag 17-07-12 23:27

Καλησπέρα Τάσο!

Όλα δουλεύουν άψογα. Σε ευχαριστώ πάρα πολύ.

Δεν μεγιστοποιεί το παράθυρο αλλά το κρατάει στο μέγεθος που το χρησιμοποίησα την τελευταία φορά οπότε είναι και καλύτερα. Ακόμη και όταν κλείνω και ξανανοίγω τη βάση κρατάει το τελευταίο μέγεθος. Και η διαδρομή φακέλου εντάξει.

Έχω Windows XP θα το δοκιμάσω και σε 7 που έχει ο γιος μου.

Και πάλι ευχαριστώ
Φιλικά Δημήτρης.


Η ώρα είναι 12:48.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2