Οπτικός Προγραμματισμός Οι ιδιότητες των αντικειμένων μπορεί να είναι δύο ειδών : 1.Published properties : είναι αυτές που εμφανίζονται στον Object Inspector και μπορούν να αλλαχθούν κατά την σχεδίαση 2.Run-time properties : αλλάζουν μόνο κατά την εκτέλεση του προγράμματος (run time). Οι ιδιότητες μπορεί να είναι : Απλές μεταβλητές, π.χ. int, double, char, κ.λ.π. Πίνακες μεταβλητών (Arrays) Απαριθμητοί τύποι (enumerations) που αποτελούνται από συγκεκριμένες τιμές Σύνολα (sets) δηλαδή μία ομάδα από επιλεγμένες τιμές απλού ή απαριθμητού τύπου (π.χ. Font->Style= fsBold, fsItalic) Άλλα αντικείμενα της βιβλιοθήκης VCL όπως η ιδιότητα Font Κατά την εκτέλεση οι ιδιότητες ενός αντικειμένου προσπελάζονται πάντα έμμεσα ως :Pointer Αντικειμένου -> Ιδιότητα Button1->Left=200; Edit1->Visible=true; Label1->Cursor=crHelp;
Οπτικός Προγραμματισμός Οι μέθοδοι των αντικειμένων είναι συναρτήσεις μέσω των οποίων χειριζόμαστε τα δεδομένα και τις ιδιότητες των αντικειμένων. Είναι δηλαδή συναρτήσεις-μέλη των κλάσεων των αντικειμένων και είναι τριών ειδών : 1. Δημόσιες (public) : είναι αυτές που είναι διαθέσιμες σε αυτόν που χρησιμοποιεί το αντικείμενο. 2. Private (ιδιωτικές) : είναι συναρτήσεις που χρησιμοποιεί το ίδιο το αντικείμενο για εσωτερικές του λειτουργίες και δεν είναι διαθέσιμες στο χρήστη, ούτε και σε αντικείμενα παραγόμενων κλάσεων 3. Protected (προστατευμένες) : είναι το ίδιο με τις ιδιωτικές αλλά είναι ορατές σε αντικείμενα παραγόμενων κλάσεων (κληρονομικότητα) Οι μέθοδοι μπορεί να παίρνουν ή να μην παίρνουν παραμέτρους που καθορίζουν την λειτουργία τους και μπορεί να επιστρέφουν ή να μην επιστρέφουν κάποιο αποτέλεσμα Παραδείγματα : AboutForm->ShowModal(), MyCanvas->LineTo(x,y) HasFocus = Edit1->Focused()
Οπτικός Προγραμματισμός Τα συμβάντα είναι ενέργειες που μπορεί να κάνει ο χρήστης με το συγκεκριμένο αντικείμενο (π.χ. διπλό κλικ, πάτημα κουμπιού, αλλαγή κειμένου, επιλογή από μενού, αλλαγή μεγέθους, drag&drop κ.λ.π.) Τα Windows ειδοποιούν την εφαρμογή για ένα event στέλνοντας σε αυτήν ένα μήνυμα (windows message). Υπάρχουν περίπου 175 διαφορετικά μηνύματα. Η ρουτίνα διαχείρισης του event δημιουργείται πατώντας διπλό κλικ στο event από τον Object Inspector και στη συνέχεια γράφουμε τον κώδικα. Παράδειγμα: void -- fastcall TForm1::Button1Click(TObject * Sender) { Form1->Close(); }
Οπτικός Προγραμματισμός Οι Event handlers έχουν τουλάχιστον μία παράμετρο (TObject * Sender) που είναι ένας δείκτης (pointer) στο αντικείμενο που παρήγαγε το μήνυμα. Μπορεί δύο αντικείμενα να μοιράζονται τον ίδιο Event Handler. Παράδειγμα : Αν έχουμε σε μία φόρμα δύο κουμπιά με ονόματα Show και Hide μπορεί να έχουν την ίδια ρουτίνα για το OnClick event τους με όνομα ButtonClick που να είναι ως εξής : void -- fastcall TForm1::ButtonClick(TObject * Sender) { if (Sender==Hide) Label1->Hide(); else Label1->Show(); } Τα ονόματα των event handlers μπορούν να αλλαχτούν από τον χρήστη.
Οπτικός Προγραμματισμός int -- fastcall MessageBox(void * hWnd, const char * Text, const char * Caption, int Flags); Είναι μέθοδος της κλάσης TApplication από την οποία παράγονται οι εφαρμογές, και είναι διαθέσιμη σε κάθε εφαρμογή. Εμφανίζει ένα μήνυμα στην οθόνη σε δικό του παράθυρο. Έχει τρεις παραμέτρους 1. hWnd : pointer σε παράθυρο που μπορεί να είναι NULL 2. Text : το κείμενο του μηνύματος 3. Caption : ο τίτλος του παραθύρου 4. Flags : καθορίζει πόσα και τί κουμπιά θα εμφανιστούν MB_ABORTRETRYIGNORE, MB_OK, MB_OKCANCEL, MB_RETRYCANCEL, MB_YESNO, MB_YESNOCANCEL MB_ICONEXCLAMATION, MB_ICONWARNING, MB_ICONINFORMATION, MB_ICONASTERISK, MB_ICONQUESTION, MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND Επιστρέφει τις τιμές : 0 άν δεν μπορέσει να δημιουργηθεί λόγω μνήμης ή IDOK=1, IDCANCEL=2, IDABORT=3, IDRETRY=4, IDIGNORE=5, IDYES=6, IDNO=7
Οπτικός Προγραμματισμός BOOL IsNumber(AnsiString s) { int i; BOOL itis=true; for (i=1 ; i<=s.Length() ; i++) if (!isdigit(s[i]) && s[i]!=',' && s[i]!='-') itis=false; return itis; } void __fastcall TForm1::Button1Click(TObject *Sender) {if (IsNumber(Edit1->Text) && IsNumber(Edit2->Text)) Edit3->Text=Edit1->Text.ToDouble()+ Edit2->Text.ToDouble(); else MessageBox(NULL,"Not a number", "ΑΣΚΗΣΗ 1-3",MB_OK|MB_ICONSTOP);}
Οπτικός Προγραμματισμός Undelete/Undo : Επαναφορά διεγραμμένου αντικειμένου ή ματαίωση προηγ. ενέργειας. Redo : Επανεκτέλεση προηγούμενου Undo. Cut/Copy/Paste : Αποκοπή/Αντιγρ./Επικόλληση. Delete : Διαγραφή χωρίς clipboard. Select All : Επιλογή όλων. Align to Grid : Στοίχιση στο πλέγμα. Bring to Front : Τοποθέτηση μπροστά. Send to Back : Τοποθέτηση πίσω. Align :
Οπτικός Προγραμματισμός Size : Scale : Αλλαγή κλίμακας (%) Tab Order : Σειρά εναλλαγής με πάτημα Tab Creation Order : Σειρά δημιουργίας μη-οπτικών αντικειμένων (Dialogs, Timers κ.λ.π.) Flip Children : Καθρεφτισμός αντικειμένων στη φόρμα (οριζόντιος) Lock Controls : Κλείδωμα/ξεκλείδωμα θέσης και μεγέθους αντικειμένων στη φόρμα (αλλάζουν μόνο από τον Object Inspector)
Οπτικός Προγραμματισμός Find : Αναζήτηση κειμένου στο τρέχον αρχείο Find in Files : Αναζήτηση κειμένου σε πολλά πηγαία αρχεία
Οπτικός Προγραμματισμός Replace : Αντικατάσταση κειμένου Search Again : Συνέχιση αναζήτησης Incremental Search : Αναζήτηση καθώς πληκτρολογούμε Go to Line Number : Μεταφορά σε αριθμό γραμμής. Go To Address : Μεταφορά σε διεύθυνση ρουτίνας (Debugging)
Οπτικός Προγραμματισμός Project Manager : Εμφανίζει πληροφορίες για την κατάσταση και το περιεχόμενο των αρχείων του Project. Translation Manager : Επιτρέπει την δημιουργία εφαρμογών σε πολλαπλές γλώσσες. Object Inspector : Εμφανίζει τον Επιθεωρητή Αντικειμένων. To-Do List : Λίστα ενεργειών που πρέπει να γίνουν.
Οπτικός Προγραμματισμός Alignment Palette : Εμφανίζει toolbar ευθυγ- ράμμισης αντικειμένων. Class Explorer : Αριστερό παράθυρο του Editor με πληροφορίες για τις κλάσεις αντικειμένων. Component List : Εμφανίζει λίστα με όλα τα διαθέσιμα visual components ανεξαρτήτως κατηγορίας. Window List : Λίστα με τα ανοικτά παράθυρα.
Οπτικός Προγραμματισμός Debug Windows : Εμφανίζει παράθυρα σχετικά με την εκσφαλμάτωση (Breakpoints, Call Stack, Watches, Local Variables, Threads κ.λ.π.) Desktops : Επιλογές σχετικές με τις επιφάνειες εργασίας (Save, Delete, Set Debug Desktop). Toggle Form/Unit : Εναλλαγή μεταξύ φόρμας και πηγαίου κώδικα. Units : Εμφανίζει λίστα με όλα τα αρχεία πηγαίου κώδικα της εφαρμογής. Forms : Εμφανίζει λίστα με όλες τις φόρμες της εφαρμογής. Type Library : Βιβλιοθήκη τύπων για αντικείμενα ActiveX ή COM. New Edit Window : Ανοίγει δεύτερο παράθυρο επεξεργασίας πηγαίου κώδικα. Toolbars : Καθορίζει ποιές μπάρες εργαλείων θα είναι ορατές στην επιφάνεια εργασίας.
Οπτικός Προγραμματισμός.bprprojectΑρχεία πληροφοριών του project.cppunitΑρχεία πηγαίου κώδικα.hheaderΑρχεία επικεφαλίδων.dfmformΑρχεία περιγραφής φόρμας (σχεδίαση).dofoptionsΑρχεία με ρυθμίσεις του project.resresourceΑρχεία με τους πόρους του project.exeexecutableΤο εκτελέσιμο αρχείο της εφαρμογής.objobject codeΑρχεία γλώσσας μηχανής από μεταγλώττιση του πηγαίου κώδικα.tdssymbol tableΠίνακας συμβόλων του debugger Pr.cppunitΠηγαίο αρχείο project (WinMain).~bpbackupΑντίγραφα ασφαλείας των αρχείων
Οπτικός Προγραμματισμός Πρότυπα κοινά χρησι- μοποιούμενων δομών στην C++. Εμφάνιση λίστας επιλογής με Ctrl+J. Διευκολύνει την ανάπτυξη του κώδικα. Ο χρήστης μπορεί να ορίσει και δικά του source code templates με την επιλογή : Tools -> Editor Options -> Code Insight
Οπτικός Προγραμματισμός #include : ενσωματώνει αρχείο επικεφαλίδων (με δηλώσεις κλάσεων, συναρτήσεων, μεταβλητών κ.λ.π., στο πηγαίο αρχείο κατά την μεταγλώττιση (#include ). #define : καθορίζει τιμή σταθεράς που μακρο-αντικαθίσταται πριν την μεταγλώττιση (#define N 100) #ifdef, #ifndef, #else, #endif : δομές για υπό συνθήκη μεταγλώττιση κώδικα. (#ifdef WINDOWS #include #else #include #endif) #pragma hdrstop : τερματίζει την λίστα αρχείων επικεφαλίδας που θα προ-μεταγλωτιστούν (π.χ. #include #pragma hdrstop #include ) #pragma package (smart init) : Βεβαιώνει ότι τα πηγαία αρχεία αρχικοποιούνται με την σειρά εξάρτησής τους. #pragma resource “*.dfm” : Μαρκάρει το πηγαίο αρχείο ως αρχείο φόρμας και αναζητά το αντίστοιχο αρχείο.dfm