Οπτικός Προγραμματισμός Παράγεται από την κλάση TStatusBar. Περιέχει έναν αριθμό από Panels που μπορούν να περιέχουν πληροφορίες για την κατάσταση του προγ/τος. Iδιότητες (Properties) : AutoHint (bool) : καθορίζει αν στο StatusBar θα εμφανίζεται αυτόματα το περιεχόμενο της ιδιότητας «Hint» του κάθε component όταν περνάει από πάνω τους το ποντίκι. Panels (TStatusPanel *) : Πίνακας που περιέχει τα ανεξάρτητα Panels στα οποία μπορεί να χωρίζεται ένα StatusBar. SimplePanel (bool) : όταν είναι true εμφανίζει ένα ενιαίο Panel για όλο το StatusBar. Όταν εί- ναι false εμφανίζει πολλαπλά Panels. SimpleText (AnsiString) : string που εμφανίζεται στο ενι- αίο Panel του StatusΒar όταν επιλέξουμε το SimplePanel.
Οπτικός Προγραμματισμός SizeGrip (bool) : καθορίζει αν θα εμφανίζεται στην κάτω δεξιά γωνία το τριγωνικό σχημα για αλλαγή μεγέθους του παραθύρου. UseSystemFont (bool) : καθορίζει αν το StatusBar χρησιμοποιεί το System Font. Canvas (TCanvas) : περιοχή σχεδίασης στο client area του StatusBar. Panel Editor
Οπτικός Προγραμματισμός Πρώτα ενσωματώνουμε στη φόρμα μας ένα StatusBar component από την μπάρα εργαλείων Win32. To StatusBar αυτόματα αγκιστρώνεται στο κάτω μέρος του παραθύρου και πιάνει όλο το πλάτος του. Στη συνέχεια με κλικ πάνω στις 3 τελείες (...) της ιδιότητας ‘Panels’ του StatusBar ανοίγουμε τον Panel Editor, όπου καθορίζουμε πόσα Panels θα έχει το Statusbar και τί πλάτος θα έχει το καθένα. Για να καθορίσω τί κείμενο θα εμφανίζεται σε κάθε Panel, αρκεί να βάζω το κείμενο που θέλω στην ιδιότητα ‘Text’ του κάθε Panel. StatusBar1->Panels->Items[2]->Text = “Overwrite”; Εναλλακτικά για απλό StatusBar μπορώ να θέσω το SimplePanel=true, να καθορίζω το κείμενο που θα εμφανίζεται στο SimpleText και να βάλω την ιδιότητα AutoHint=true, για να εμφανίζονται αυτόματα τα Hints.
Οπτικός Προγραμματισμός Η διαδικασία είναι παρόμοια όπως και στα ToolBars : Η σχεδίαση και εδώ πρέπει να γίνεται κάθε φορά και όχι μία φορά μόνο στην αρχή. Για το λόγο αυτό πρέπει να παγιδεύσουμε ένα “OnPaint” event του StatusBar. Το μοναδικό τέτοιο event του StatusBar είναι το OnDrawPanel που παράγεται κάθε φορά που επανασχεδιάζεται κάθε Panel του StatusBar. Για να παραχθεί όμως το event αυτό θα πρέπει η ιδιότητα Style του κάθε Panel να γίνει “psOwnerDraw”.
Οπτικός Προγραμματισμός TPicture * SkinImage;.... void __fastcall TForm1::FormCreate(TObject *Sender) { SkinImage = new TPicture; SkinImage->LoadFromFile("clouds.bmp"); } void __fastcall TForm1::StatusBar1DrawPanel(TStatusBar *StatusBar, TStatusPanel *Panel, const TRect &Rect) { StatusBar->Canvas->StretchDraw(Rect, SkinImage->Graphic); }
Οπτικός Προγραμματισμός Περιέχει επιλογές για την δημιουργία εγκατάσταση και διαχείριση των components που είναι διαθέσιμα στον προγραμματιστή μέσω των component palettes. New Component : Επιτρέπει την δημιουργία ενός νέου component από τον χρήστη. Εμφανίζει ένα διάλογο βασικών επιλογών : Ancestor Type : όνομα της κλάσης στην οποία βασίζεται το component. Class Name : το όνομα της νέας κλάσης του component.
Οπτικός Προγραμματισμός Palette Page : σε ποια παλέτα με components θα τοποθετηθεί το νέο component. Unit File Name : το μονοπάτι και το όνομα του.cpp αρχείου που θα περιέχει τον κώδικα για το νέο component. Search Path : μπορούμε να αλλάξουμε το σύνολο των καταλόγων που ο C-Builder ψάχνει για αναζήτηση αρχείων. Μόλις πατήσουμε το OK δημιουργούνται αυτόματα ένα αρχείο.cpp με προετοιμασμένο κώδικα, ένα αρχείο.h επίσης με έτοιμο κώδικα για την ανάπτυξη του νέου κώδικα του component. Κάθε component πρέπει να βασίζεται σε μία υπάρχουσα κλάση. Το νέο component πρέπει να γίνει compile ώστε να μπορεί να συμπεριληφθεί στην καθορισμένη παλέτα. Όλα τα σχετικά αρχεία του component (.cpp,.h,.res, κ.λ.π.) τοποθετούνται μέσα σε ένα ειδικό αρχείο project που έχει την επέκταση.bpk και ονομάζεται “package file”.
Οπτικός Προγραμματισμός #include #pragma hdrstop #include "MyEdit.h" #pragma package(smart_init) // static inline void ValidCtrCheck(TMyEdit *) // no pure virtual exist { new TMyEdit(NULL); } // fastcall TMyEdit::TMyEdit(TComponent* Owner) : TEdit(Owner) { } // namespace Myedit { void __fastcall PACKAGE Register() { TComponentClass classes[1] = {__classid(TMyEdit)}; RegisterComponents("Samples", classes, 0); } }
Οπτικός Προγραμματισμός #ifndef MyEditH #define MyEditH // #include // class PACKAGE TMyEdit : public TEdit { private: protected: public: __fastcall TMyEdit(TComponent* Owner); __published: }; #endif
Οπτικός Προγραμματισμός Για να μεταγλωττίσουμε ένα component επιλέγουμε από το Component Menu την επιλογή “Install Component”. Εδώ καθορίζουμε το όνομα του cpp που περιέχει τον κώδικα του component, το όνομα του Project (package) και την περιγραφή του component. Μπορούμε να συμπεριλάβουμε πολλά components στο ίδιο package
Οπτικός Προγραμματισμός Με την μεταγλώττιση παράγεται και το Project File (.bpk) που πρέπει να σώσουμε με την επιλογή File Save Project As, ώστε να μπορούμε να το ξανα-ανοίξουμε για να μεταβάλλουμε το component. Κατά την μεταγλώττιση παράγονται : BPI (Import Library) περιέχει την μεταγλωττισμένη κλάση του νέου component ώστε να μπορεί να συμπεριληφθεί στην παλέτα. OBJ (object file) περιέχει όλο τον κώδικα σε γλώσσα μηχανής. BPL (runtime library) είναι στην ουσία ένα dll που συνδέεται δυναμικά με το exe της εφαρμογής και περιέχει τον κώδικα του component. LIB (static library) βιβλιοθήκη που μπορεί να συνδεθεί με το exe κατά το linking ώστε να ενσωματώσει το component στο exe.
Οπτικός Προγραμματισμός Δημιουργία ενός Edit Box με μαύρο background και λευκά γράμματα: Από το μενού Component επιλέγουμε “New Component”. Καθορίζουμε ως “Ancestor Type” την κλάση TEdit. Δηλώνουμε ως “Class Name” το όνομα TMyEdit. Καθορίζουμε το “Unit File Name” π.χ. ως “C:\MyComponents\MyEdit\MyEdit.cpp” Πατάμε OK οπότε δημιουργούνται τα αρχεία MyEdit.cpp και MyEdit.h με έτοιμο κώδικα. Επεμβαίνουμε στον κώδικα για να αλλάξουμε τα χρώματα του component __fastcall TMyEdit::TMyEdit(TComponent* Owner) : TEdit(Owner) { Color=clBlack; Font->Color=clWhite;}
Οπτικός Προγραμματισμός Μεταγλωττίζουμε και εγκαθιστούμε το component με την επιλογή Component Install Component Στον Διάλογο που εμφανίζεται επιλέγουμε την σελίδα “Into New Package”. Επιλέγουμε ως “Unit File Name” το αρχείο cpp του component. Καθορίζουμε ως “Package File Name” π.χ. το C:\MyComponents\MyEdit\MyEdit.bpk Καθορίζουμε το “Package Description” π.χ. ως “My Edit Component” Πατώντας το OK εμφανίζεται το μήνυμα : “Package MyEdit.bpl will be built then installed. Continue? Yes/No” Mόλις ολοκληρωθεί η διαδικασία το component έχει ήδη εγκατασταθεί στην παλέτα που επιλέξαμε (π.χ. Samples). Φροντίζουμε να σώσουμε το project file (.bpk) με την επιλογή “File Save Project As…” ώστε να μπορούμε να το ανοίξουμε ξανά.
Οπτικός Προγραμματισμός Import ActiveX Control : επιτρέπει την ενσωμάτωση στην τρέχουσα εφαρμογή ενός ActiveX control που είναι registered στα Windows. Τα ActiveX Controls είναι αυτόνομα αντικείμενα (.ocx,.dll) που περιέχουν components.
Οπτικός Προγραμματισμός Create Component Template : επιτρέπει την δημιουργία πρότυπων component templates που αποθηκεύονται σε αρχεία.DCT Τα Component Templates αποτελούνται από ομάδες component που τοποθετούνται πάνω σε μία φόρμα και έχουν συγκεκριμένες τιμές ιδιοτήτων. Διαδικασία δημιουργίας : Τοποθετούμε τα components πάνω σε μία φόρμα. Καθορίζουμε τις τιμές των ιδιοτήτων τους. Επιλέγουμε όλα τα components. Επιλέγουμε “Create Component Template” και καθορίζουμε το όνομα την παλέτα και το εικονίδιο για το template.
Οπτικός Προγραμματισμός Install Packages : επιτρέπει την εγκατάσταση και απεγκατάσταση compo- nents που βρίσκονται μέσα σε μεταγλωττισμένα «πακέτα» (packages). Τα μεταγλωττισμένα πακέτα βρίσκονται σε αρχεία με επέκταση.BPL.
Οπτικός Προγραμματισμός Configure Palette : επιτρέπει την διαχείριση των παλετών από components και την προσθήκη, διαγραφή και μετονομασία components μέσα στις παλέτες.