sanidas Δημοσ. 8 Ιανουαρίου 2006 Δημοσ. 8 Ιανουαρίου 2006 Γνωρίζει κανείς το πώς μπορώ να ανοίξω ένα αρχείο word πατώντας ένα button. Πιο component θα χρειαστώ και τι κώδικα θα γράψω στο button; Χρησιμοποιώ Borland C++ version 6 Ευχαριστώ εκ των προτέρων
Directx Δημοσ. 9 Ιανουαρίου 2006 Δημοσ. 9 Ιανουαρίου 2006 Θεωρώ ότι όταν λες Borland C++ 6.0 εννοείς τον C/C++ Builder 6.0 Σημ: Και στις δυο περιπτώσεις (OLE ή ShellExecute) πάντως θα πρέπει να έχεις υπόψη σου ότι εξαρτάσαι από την ύπαρξη εγκατεστημένων εφαρμογών ικανών να ανοίξουν το αρχείο που επιθυμείς, εάν δεν θέλεις κάτι τέτοιο θα πρέπει είτε να μελετήσεις μόνος σου το format των doc ή να αποταθείς σε τρίτους κατασκευαστές components. --- Εάν θες το αρχείο του Word να εμφανίζεται σε παράθυρο εντός της εφαρμογής σου εκμεταλλευόμενος την τεχνολογία OLE, θα πρέπει από την παλέτα System να δημιουργήσεις ένα νέο OLE Container (θα ονομαστεί αυτόματα ως OleContainer1) στην φόρμα σου. Από εκεί και πέρα ο κώδικας για το άνοιγμα του Word αρχείου που επιθυμείς μπορεί να μοιάζει με τον παρακάτω: > try { OleContainer1->AutoVerbMenu = false; OleContainer1->CreateLinkToFile("C:\\CBuilder6\\Projects\\WordApp\\wordtest.doc",false); } catch(...) { ShowMessage("Microsoft Word OLE Error"); } Η εντολή που χρησιμοποιούμε για να φορτώσουμε απλά το αρχείο (δίχως δυνατότητες άμεσης επεξεργασίας του) εντός της εφαρμογής μας είναι η CreateLinkToFile η οποία ανοίγει το αρχείο, στην περίπτωση μας το wordtest.doc (μην αμελήσεις να ορίσεις πλήρη διαδρομή διαφορετικά η εντολή θα αποτύχει), με το λογισμικό που έχουμε υποδείξει εξ’ ορισμού στα Windows (default) να διαχειρίζεται τέτοια αρχεία, και στο 99% των περιπτώσεων είναι το Microsoft Word. Η μεταβλητή ->AutoVerbMenu καθορίζει εάν θα παρουσιάζονται οι διαθέσιμες εντολές (Verbs) που προσφέρει η OLE εφαρμογή, στην περίπτωση μας το Word, όταν κάνει δεξί κλικ ο χρήστης πάνω στο OleContainer1, οπότε για πιο όμορφα οπτικά αποτελέσματα καλύτερα να είναι false. Για να ξεφορτώσεις το OLE Word από την εφαρμογή σου, χρησιμοποίησε την ->DestroyObject. Τέλος ολόκληρος ο κώδικας που αφορά το OleContainer1 είναι τοποθετημένος σε ένα try{ }catch(…){ } block διότι ο εντοπισμός λαθών βασίζεται ως επί το πλείστο σε exceptions. --- Εάν θες απλά να φορτώνεις την εφαρμογή Word μαζί με το κείμενο σου, ως κανονικό εξωτερικό πρόγραμμα, τότε δες τον παρακάτω Windows API κώδικα: > if((int)ShellExecute(Handle, "open", "C:\\CBuilder6\\Projects\\WordApp\\wordtest.doc", NULL, NULL, 0)<=32) { ShowMessage("Cannot open Microsoft Word Document"); } Χρησιμοποιούμε την εντολή ShellExecute η οποία που υποδεικνύει στα Windows πιο αρχείο θέλουμε να επεξεργαστούμε (στην περίπτωση μας να ανοίξουμε) με την εξ’ ορισμού ορισθείσα για αυτό το είδος του αρχείου εφαρμογή. Η σύνταξη της εντολής είναι ξεκάθαρη, όμως πρέπει να ορίζεις πάντα πλήρη διαδρομή προς το αρχείο και αφετέρου να έχεις υπόψη σου πως επειδή επιστρέφει το HINSTANCE της νεοδημιουργηθείσας εφαρμογής που άνοιξε το αρχείο, για να εξετάσεις κατά πόσον η κλήση πέτυχε ή απέτυχε (<=32) θα πρέπει να το κάνεις από void* (HINSTANCE), cast σε int. Καλή τύχη!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.