Ενώ εργάζεστε με διάφορες εφαρμογές των Windows και Δελφοί, έχουμε συνηθίσει να λειτουργούμε με ένα από τα πρότυπα πλαίσια διαλόγου για το άνοιγμα και την αποθήκευση ενός αρχείου, την εύρεση και αντικατάσταση κειμένου, την εκτύπωση, την επιλογή γραμματοσειρών ή τη ρύθμιση των χρωμάτων.
Σε αυτό το άρθρο, θα εξετάσουμε ορισμένες από τις πιο σημαντικές ιδιότητες και μεθόδους αυτών των διαλόγων με ιδιαίτερη έμφαση Ανοιξε και Αποθηκεύσετε πλαίσια διαλόγου.
Τα κοινά παράθυρα διαλόγου βρίσκονται στην καρτέλα "Διαλόγους" της παλέτας "Συνιστώσα". Αυτά τα στοιχεία αξιοποιούν τα τυπικά παράθυρα διαλόγου των Windows (που βρίσκονται σε ένα αρχείο DLL στον κατάλογο \ Windows \ System). Για να χρησιμοποιήσετε ένα κοινό πλαίσιο διαλόγου, πρέπει να τοποθετήσετε το κατάλληλο στοιχείο (στοιχεία) στη φόρμα. Τα συνήθη στοιχεία του πλαισίου διαλόγου δεν είναι σιωπηρά (δεν έχουν οπτική διασύνδεση σχεδιασμού-χρόνου) και επομένως είναι αόρατα για τον χρήστη κατά τη διάρκεια εκτέλεσης.
TOpenDialog και TSaveDialog
Τα παράθυρα διαλόγου Άνοιγμα αρχείου και αποθήκευσης αρχείων έχουν πολλές κοινές ιδιότητες. Το File Open χρησιμοποιείται γενικά για την επιλογή και το άνοιγμα αρχείων. Το πλαίσιο διαλόγου "Αποθήκευση αρχείου" (που χρησιμοποιείται επίσης και ως παράθυρο διαλόγου Αποθήκευση ως) χρησιμοποιείται όταν λαμβάνετε ένα όνομα αρχείου από το χρήστη για να αποθηκεύσετε ένα αρχείο. Μερικές από τις σημαντικές ιδιότητες του TOpenDialog και του TSaveDialog είναι:
- ο Επιλογές οι ιδιότητες είναι πολύ σημαντικές για τον καθορισμό της τελικής εμφάνισης και αίσθησης του κουτιού. Για παράδειγμα, μια γραμμή κώδικα όπως:
με OpenDialog1 κάνωΕπιλογές: = Επιλογές + [ofAllowMultiSelect, ofFileMustExist];
θα διατηρήσει τις επιλογές που έχουν ήδη οριστεί και θα επιτρέψει στους χρήστες να επιλέξουν περισσότερα από ένα αρχεία στο παράθυρο διαλόγου μαζί με τη δημιουργία ενός μηνύματος σφάλματος αν ο χρήστης προσπαθήσει να επιλέξει ένα ανύπαρκτο αρχείο. - ο InitialDir ιδιότητα χρησιμοποιείται για τον καθορισμό του καταλόγου που θα χρησιμοποιηθεί ως αρχικός κατάλογος όταν εμφανίζεται το παράθυρο διαλόγου αρχείου. Ο παρακάτω κώδικας θα διασφαλίσει ότι ο αρχικός κατάλογος του πλαισίου διαλόγου "Άνοιγμα" είναι ο κατάλογος εκκίνησης εφαρμογών.
SaveDialog1.InitialDir: = ExtractFilePath (Εφαρμογή. ExeName);
- ο Φίλτρο property περιέχει μια λίστα με τους τύπους αρχείων από τους οποίους ο χρήστης μπορεί να επιλέξει. Όταν ο χρήστης επιλέγει έναν τύπο αρχείου από τη λίστα, μόνο τα αρχεία του επιλεγμένου τύπου εμφανίζονται στο παράθυρο διαλόγου. Το φίλτρο μπορεί εύκολα να ρυθμιστεί κατά τη διάρκεια του σχεδιασμού μέσω του πλαισίου διαλόγου "Επεξεργασία φίλτρου".
- Για να δημιουργήσετε μάσκες αρχείων στον κώδικα του προγράμματος, εκχωρήστε μια τιμή στην ιδιότητα Φίλτρο που αποτελείται από μια περιγραφή και μια μάσκα που χωρίζονται από έναν κάθετο χαρακτήρα γραμμής (σωλήνα). Σαν αυτό:
OpenDialog1.Filter: = 'Αρχεία κειμένου (* .txt) | * .txt | Όλα τα αρχεία (*. *) | *. * ';
- ο Ονομα αρχείου ιδιοκτησία. Μόλις ο χρήστης κάνει κλικ στο κουμπί OK σε ένα παράθυρο διαλόγου, αυτή η ιδιότητα θα περιέχει την πλήρη διαδρομή και το όνομα αρχείου του επιλεγμένου αρχείου.
Εκτέλεση
Για να δημιουργήσουμε και να προβάλουμε ένα κοινό παράθυρο διαλόγου, πρέπει να επεξεργαστούμε το Εκτέλεση μέθοδος του συγκεκριμένου πλαισίου διαλόγου κατά το χρόνο εκτέλεσης. Εκτός από τα TFindDialog και TReplaceDialog, όλα τα παράθυρα διαλόγου εμφανίζονται ομαδικά.
Όλα τα κοινά παράθυρα διαλόγου μας επιτρέπουν να καθορίσουμε αν ο χρήστης κάνει κλικ στο κουμπί Άκυρο (ή πατά ESC). Δεδομένου ότι η μέθοδος Execute επιστρέφει True εάν ο χρήστης έκανε κλικ στο κουμπί OK, πρέπει να παγιδεύσουμε ένα κλικ σε ένα κουμπί Ακύρωση για να βεβαιωθείτε ότι ο δεδομένος κώδικας δεν εκτελέστηκε.
αν OpenDialog1.Execute έπειτα ShowMessage (OpenDialog1.FileName);
Αυτός ο κώδικας εμφανίζει το παράθυρο διαλόγου Άνοιγμα αρχείου και εμφανίζει ένα επιλεγμένο όνομα αρχείου μετά από μια "επιτυχημένη" κλήση για εκτέλεση μεθόδου (όταν ο χρήστης κάνει κλικ στο Άνοιγμα).
Σημείωση: Εκτελέστε την επιστροφή True εάν ο χρήστης έκανε κλικ στο κουμπί OK, έκανε διπλό κλικ σε ένα όνομα αρχείου (στην περίπτωση των διαλόγων αρχείου) ή πατήθηκε Enter στο πληκτρολόγιο. Εκτέλεση επιστρέφει ψευδώς αν ο χρήστης έκανε κλικ στο κουμπί Ακύρωση, πατήθηκε το πλήκτρο Esc, έκλεισε το παράθυρο διαλόγου με το κουμπί κλεισίματος συστήματος ή με το συνδυασμό πλήκτρων Alt-F4.
Από τον κώδικα
Για να δουλέψετε με το παράθυρο διαλόγου Open (ή οποιαδήποτε άλλη) κατά το χρόνο εκτέλεσης χωρίς να τοποθετήσετε ένα στοιχείο OpenDialog στη φόρμα, μπορούμε να χρησιμοποιήσουμε τον ακόλουθο κώδικα:
διαδικασία TForm1.btnFromCodeClick (αποστολέας: TObject); var OpenDlg: TOpenDialog; ξεκινήσει OpenDlg: = TOpenDialog. Δημιουργία (Self); {να ορίσετε τις επιλογές εδώ ...}αν OpenDlg. Εκτέλεση έπειταξεκινήσει {κωδικός για να κάνουμε κάτι εδώ} τέλος; OpenDlg. Ελεύθερος; τέλος;
Σημείωση: Πριν καλέσουμε την Εκτέλεση, μπορούμε (πρέπει) να ορίσουμε οποιαδήποτε από τις ιδιότητες του συστατικού του OpenDialog.
MyNotepad
Τέλος, είναι καιρός να κάνουμε κάποια πραγματική κωδικοποίηση. Η όλη ιδέα πίσω από αυτό το άρθρο (και λίγες άλλες που πρόκειται να έρθουν) είναι να δημιουργήσετε μια απλή εφαρμογή MyNotepad - αυτόνομη εφαρμογή Windows όπως το Notepad.
Σε αυτό το άρθρο παρουσιάζονται τα παράθυρα διαλόγου Άνοιγμα και Αποθήκευση, οπότε ας τα δούμε στη δράση.
Βήματα για τη δημιουργία της διεπαφής χρήστη του MyNotepad:
. Ξεκινήστε τους Delphi και επιλέξτε Αρχείο-Νέα εφαρμογή.
. Τοποθετήστε ένα Memo, OpenDialog, SaveDialog δύο κουμπιά σε μια φόρμα.
. Μετονομάστε το κουμπί1 στο btnOpen, το κουμπί2 στο btnSave.
Κωδικοποίηση
1. Χρησιμοποιήστε τον Έλεγχο αντικειμένων για να εκχωρήσετε τον ακόλουθο κώδικα στο συμβάν FormCreate:
διαδικασία TForm1.FormCreate (αποστολέας: TObject); ξεκινήσειμε OpenDialog1 κάνωξεκινήσει Επιλογές: = Επιλογές + [τουPathMustExist, τουFileMustExist]; InitialDir: = ExtractFilePath (Εφαρμογή. ExeName); Φίλτρο: = 'Αρχεία κειμένου (* .txt) | * .txt'; τέλος; με SaveDialog1 κάνωξεκινήσει InitialDir: = ExtractFilePath (Εφαρμογή. ExeName); Φίλτρο: = 'Αρχεία κειμένου (* .txt) | * .txt'; τέλος; Memo1.ScrollBars: = ssBoth; τέλος;
Αυτός ο κώδικας θέτει μερικές από τις ιδιότητες διαλόγου "Άνοιγμα" όπως αναλύθηκε στην αρχή του άρθρου.
2. Προσθέστε αυτόν τον κωδικό για την εκδήλωση Onclick των κουμπιών btnOpen και btnSave:
διαδικασία TForm1.btnOpenClick (αποστολέας: TObject); ξεκινήσειαν OpenDialog1.Execute έπειταξεκινήσει Form1.Caption: = OpenDialog1.FileName; Memo1.Lines. LoadFromFile. (OpenDialog1.FileName). Memo1.SelStart: = 0; τέλος; τέλος;
διαδικασία TForm1.btnSaveClick (αποστολέας: TObject); ξεκινήσει SaveDialog1.FileName: = Form1.Caption; αν SaveDialog1.Execute έπειταξεκινήσει Memo1.Lines. SaveToFile. (SaveDialog1.FileName + '.txt'). Form1.Caption: = SaveDialog1.FileName; τέλος; τέλος;
Εκτελέστε το έργο σας. Δεν μπορείτε να το πιστέψετε. τα αρχεία ανοίγουν και αποθηκεύονται όπως και με το "πραγματικό" σημειωματάριο.
Τελικές λέξεις
Αυτό είναι. Τώρα έχουμε το δικό μας "μικρό" Σημειωματάριο.