Πώς οι Δελφοί χρησιμοποιούν αρχεία πόρων

Από bitmaps σε εικονίδια σε δρομείς σε πίνακες συμβολοσειρών, κάθε πρόγραμμα των Windows χρησιμοποιεί πόρους. Πόροι είναι τα στοιχεία ενός προγράμματος που υποστηρίζουν το πρόγραμμα αλλά δεν είναι εκτελέσιμος κώδικας. Σε αυτό το άρθρο, θα περπατήσουμε μερικά παραδείγματα της χρήσης των bitmap, των εικονιδίων και των δρομέων από τους πόρους.

Θέση των πόρων

Η τοποθέτηση πόρων στο αρχείο .exe έχει δύο κύριες πλεονεκτήματα:

  • Οι πόροι μπορούν να προσεγγιστούν πιο γρήγορα επειδή χρειάζεται λιγότερο χρόνο για να εντοπίσετε έναν πόρο στο εκτελέσιμο αρχείο από ό, τι κάνει για να το φορτώσει από ένα αρχείο δίσκου.
  • Το αρχείο του προγράμματος και οι πόροι μπορούν να περιέχονται σε μια ενιαία μονάδα (το αρχείο .exe) χωρίς την ανάγκη για πολλά υποστηρικτικά αρχεία.

Ο επεξεργαστής εικόνων

Πρώτα απ 'όλα, πρέπει να δημιουργήσουμε ένα αρχείο πόρων. Η προεπιλεγμένη επέκταση για αρχεία πόρων είναι.RES. Τα αρχεία πόρων μπορούν να δημιουργηθούν με τον επεξεργαστή εικόνων του Delphi.

Μπορείτε να ονομάσετε το αρχείο πόρων οτιδήποτε θέλετε, αρκεί να έχει την επέκταση ".RES" και το όνομα αρχείου χωρίς την επέκταση δεν είναι ίδια με οποιαδήποτε μονάδα ή όνομα αρχείου έργου. Αυτό είναι σημαντικό, γιατί, από προεπιλογή, το καθένα

instagram viewer
Έργο Delphi που μεταγλωττίζεται σε μια εφαρμογή έχει ένα αρχείο πόρων με το ίδιο όνομα με το αρχείο έργου, αλλά με την επέκταση ".RES". Είναι καλύτερο να αποθηκεύσετε το αρχείο στον ίδιο κατάλογο με το αρχείο έργου σας.

Συμπεριλαμβανομένων των πόρων στις αιτήσεις

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

{$ R * .DFM} 
{$ R DPABOUT.RES}

Μην σβήσετε τυχαία το τμήμα {$ R * .DFM}, καθώς αυτή είναι η γραμμή κώδικα που λέει στους Δελφούς να συνδεθούν στο οπτικό μέρος της φόρμας. Όταν επιλέγετε bitmaps για κουμπιά ταχύτητας, εξαρτήματα εικόνας ή εξαρτήματα κουμπιών, ο Delphi περιλαμβάνει το αρχείο bitmap που επιλέξατε ως μέρος του πόρου της φόρμας. Ο Delphi απομονώνει τα στοιχεία διεπαφής χρήστη στο αρχείο .DFM.

Για να χρησιμοποιήσετε πραγματικά τον πόρο, θα πρέπει να κάνετε μερικές API των Windows κλήσεις. Οι Bitmaps, οι δρομείς και τα εικονίδια που είναι αποθηκευμένα σε αρχεία RES μπορούν να ανακτηθούν χρησιμοποιώντας τις λειτουργίες API LoadBitmap, LoadCursor, και LoadIcon αντίστοιχα.

Εικόνες σε πόρους

Το πρώτο παράδειγμα δείχνει πώς να φορτώσετε ένα bitmap αποθηκευμένο ως πόρο και να το εμφανίσετε σε a TImage συστατικό.

διαδικασία TfrMain.btnCanvasPic (αποστολέας: TObject);
var bBitmap: TBitmap;
ξεκινήσει
bBitmap: = TBitmap. Δημιουργώ;
δοκιμάστε
bBitmap. Χειριστείτε: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap. Πλάτος;
Image1.Height: = bBitmap. Υψος;
Image1.Canvas. Σχεδίαση (0,0, bBitmap).
τελικά
bBitmap. Ελεύθερος;
τέλος;
τέλος;

Σημείωση: Εάν το bitmap που πρόκειται να φορτωθεί δεν είναι στο αρχείο πόρων, το πρόγραμμα θα συνεχίσει να λειτουργεί, απλά δεν θα εμφανίσει το bitmap. Αυτή η κατάσταση μπορεί να αποφευχθεί με δοκιμές για να διαπιστωθεί εάν bBitmap. Λαβή είναι μηδέν μετά από μια κλήση προς LoadBitmap () και λαμβάνοντας τα κατάλληλα βήματα. ο δοκιμάστε / τελικά μέρος στον προηγούμενο κώδικα δεν λύσει αυτό το πρόβλημα, είναι ακριβώς εδώ για να βεβαιωθείτε ότι το bBitmap καταστρέφεται και η σχετική μνήμη του ελευθερώνεται.

Ένας άλλος τρόπος που μπορούμε να χρησιμοποιήσουμε για την εμφάνιση ενός bitmap από έναν πόρο είναι ο εξής:

διαδικασία TfrMain.btnLoadPicClick (αποστολέας: TObject);
ξεκινήσει
Image1.Παραρ. Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
τέλος;

Δρομείς στις πηγές

Οθόνη. Δρομείς [] είναι ένα πίνακας των δρομέων που παρέχονται από τους Δελφούς. Χρησιμοποιώντας αρχεία πόρων, μπορούμε να προσθέσουμε προσαρμοσμένους δρομείς στην ιδιότητα Δρομείς. Εάν δεν επιθυμούμε να αντικαταστήσουμε οποιαδήποτε από τις προεπιλογές, η καλύτερη στρατηγική είναι να χρησιμοποιήσετε αριθμούς δρομέα ξεκινώντας από το 1.

διαδικασία TfrMain.btnUseCursorClick (αποστολέας: TObject);
const NewCursor = 1;
ξεκινήσει
Οθόνη. Δρομείς [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
τέλος;

Εικονίδια στους πόρους

Αν κοιτάξουμε τους Δελφούς Επιλογές έργου-Εφαρμογή τις ρυθμίσεις, μπορούμε να διαπιστώσουμε ότι οι Δελφοί προμηθεύουν το προεπιλεγμένο εικονίδιο για ένα έργο. Αυτό το εικονίδιο αντιπροσωπεύει την εφαρμογή στην Εξερεύνηση των Windows και όταν ελαχιστοποιείται η εφαρμογή. Μπορούμε εύκολα να το αλλάξουμε κάνοντας κλικ στο κουμπί 'Load Icon'.

Εάν θέλουμε, για παράδειγμα, να ζωντανέψουμε το εικονίδιο του προγράμματος όταν ελαχιστοποιηθεί το πρόγραμμα, τότε ο επόμενος κώδικας θα κάνει τη δουλειά.

Για το κινούμενο σχέδιο, χρειαζόμαστε ένα TTimer σε μια φόρμα. Ο κώδικας φορτώνει δύο εικονίδια από το αρχείο πόρων σε μια σειρά από TIcon αντικείμενα. αυτός ο πίνακας πρέπει να δηλωθεί στο δημόσιο τμήμα της κύριας φόρμας. Θα χρειαστεί επίσης NrIco, δηλαδή ένας τύπος ακέραιος μεταβλητός, που δηλώθηκε στο δημόσιο μέρος. ο NrIco χρησιμοποιείται για την παρακολούθηση του επόμενου εικονιδίου για εμφάνιση.

δημόσιο
nrIco: Ακέραιος αριθμός;
MinIcon: πίνακας [0..1] του TIcon.
...
διαδικασία TfrMain. FormCreate (αποστολέας: TObject);
ξεκινήσει
MinIcon [0]: = TIcon. Δημιουργώ;
MinIcon [1]: = TIcon. Δημιουργώ;
MinIcon [0]. Χειρολαβή: = LoadIcon (hInstance, 'ICOOK');
MinIcon [1] .Χειρότυπο: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Timer1.Interval: = 200;
τέλος;
...
διαδικασία TfrMain. Timer1Timer (αποστολέας: TObject);
αρχικά IsIconic (Εφαρμογή. Λαβή) έπειταξεκινήσει
NrIco: = (NrIco + 1) mod 2;
Εφαρμογή. Εικονίδιο: = MinIcon [NrIco];
τέλος;
τέλος;
...
διαδικασία TfrMain. FormDestroy (αποστολέας: TObject);
ξεκινήσει
MinIcon [0].
MinIcon [1].
τέλος;

Στο Timer1.OnTimer χειριστής συμβάντων, IsMinimized λειτουργία χρησιμοποιείται για να δούμε αν πρέπει να ζωντανέψει το κύριο εικονίδιο μας ή όχι. Ένας καλύτερος τρόπος για να επιτευχθεί αυτό θα ήταν να συλλάβει τα πλήκτρα μεγιστοποίησης / ελαχιστοποίησης και παρά να ενεργεί.

Τελικές λέξεις

Μπορούμε να τοποθετήσουμε οτιδήποτε (καλά, όχι όλα) σε αρχεία πόρων. Αυτό το άρθρο σας έδειξε πώς να χρησιμοποιήσετε τους πόρους για τη χρήση / εμφάνιση bitmap, δρομέα ή ενός εικονιδίου στην εφαρμογή Delphi.

Σημείωση: Όταν αποθηκεύουμε ένα έργο Delphi στο δίσκο, οι Delphi δημιουργούν αυτόματα ένα αρχείο .RES που έχει το ίδιο όνομα με το έργο (αν δεν υπάρχει τίποτε άλλο, το κύριο εικονίδιο του έργου βρίσκεται μέσα). Αν και μπορούμε να αλλάξουμε αυτό το αρχείο πόρων, αυτό δεν είναι ενδεδειγμένο.

instagram story viewer