Οπτικός Προγραμματισμός Frames : Μοιάζουν με τις φόρμες και μπορούν να ενσωματώσουν άλλα components, αλλά δεν αποτελούν παράθυρα. Είναι σετ από components με καθορισμένες θέσεις και μέγεθος. Ενσωματώνονται στις φόρμες. MainMenu : Ενσωματώνει ένα κεντρικό μενού επιλογών στην εφαρμογή που καθορίζεται μέσω του Menu Designer Pop-up Menu : Ενσωματώνει ένα μενού που θα εμφανίζεται με δεξί κλίκ πάνε σε οποιοδήποτε αντικείμενο της φόρμας. Label : Ετικέτα σταθερού κειμένου με καθοριζόμενο μέγεθος, χρώμα και font. Edit : Αντικείμενο που επιτρέπει την εισαγωγή κειμένου. Memo : Επιτρέπει την εισαγωγή κειμένου πολλών γραμμών. Button : Κουμπί με καθοριζόμενο κείμενο και λειτουργία.
Οπτικός Προγραμματισμός CheckBox : Κουτί που τσεκάρεται ή όχι με καθοριζόμενο κείμενο στα δεξιά του. RadioButton : πολλαπλά κουμπιά με καθοριζόμενο κείμενο στα δεξιά τους από τα οποία ένα μόνο μπορεί να είναι τσεκαρισμένο. ListBox : Κουτί με λίστα λέξεων καθοριζόμενη από τον προγραμματιστή και ScrollBar όταν χρειάζεται. ComboBox : Κουτί επιλογής κειμένου από drop-down λίστα. ScrollBar : Μπάρα ολίσθησης του παραθύρου οριζόντια ή κάθετη. GroupBox : Πλαίσιο για ομαδοποίηση αντικειμένων RadioGroup : Πλαίσιο για ομαδοποίηση RadioButtons Panel : Πλαίσιο για ομαδοποίηση αντικειμένων με περισσότερα χαρακτηριστικά. ActionList : Για κεντρική διαχείριση ενεργειών χρήστη
Οπτικός Προγραμματισμός Κληρονομείται από την κλάση TLabel. Εμφανίζει στατικό κείμενο με καθοριζόμενο μέγεθος, χρώμα και font Published Properties (Object inspector) Caption : το κείμενο του Label Color : το χρώμα του κειμένου Font : το font των γραμμάτων Name : το όνομα του pointer που θα παραχθεί στο πηγαίο αρχείο. Visible : καθορίζει αν το αντικείμενο εμφανίζεται ή όχι Methods GetTextBuf : επιστρέφει το κείμενο του Label. SetTextBuf : καθορίζει το κείμενο του Label. Hide, Show : Εξαφανίζει / εμφανίζει το Label. Repaint, SendToBack, BringToFront, SetBounds Events OnClick, OnDblClick, OnMouseDown, OnMouseMove, OnMouseUp
Οπτικός Προγραμματισμός Κληρονομείται από την κλάση TEdit. Εμφανίζει κείμενο και επιτρέπει την επεξεργασία του Published Properties (Object inspector) CharCase : κεφαλαία μικρά ή και τα δύο. Color : το χρώμα του κειμένου Font : το font των γραμμάτων Name : το όνομα του pointer που θα παραχθεί στο πηγαίο αρχείο. MaxLength : μέγιστο μήκος string ReadOnly : αν μπορούμε να το αλλάξουμε ή όχι Text : το αρχικό περιεχόμενο κείμενο TabStop : αν με Tab πηγαίνουμε ή όχι σε αυτό Methods Clear : σβήνει το κείμενο. ClearSelection : σβήνει το κείμενο που επιλέχθηκε. CopyToClipboard, CutToClipboard, PasteFromClipboard. GetSelTextBuf, SetSelTextBuf Events OnChange, OnEnter, OnExit, OnKeyDown, OnkKeyPress, OnKeyUp
Οπτικός Προγραμματισμός Κληρονομείται από την κλάση TButton. Εμφανίζει ένα κουμπί με καθοριζόμενη ετικέτα και προγραμματιζόμενη λειτουργία. Published Properties (Object inspector) Cancel : όταν είναι true πατιέται με το ESCape. Caption : το κείμενο πάνω στο κουμπί Cursor : το σχήμα του κέρσορα όταν είναι πάνω στο κουμπί Font : το font των γραμμάτων Enabled : αν το κουμπί είναι ενεργό ή όχι. ModalResult : αποτέλεσμα πατήματος (mrOK,mrCancel,mrAbort…) TabStop : αν με Tab πηγαίνουμε ή όχι σε αυτό Methods Click : πατάει το κουμπί. SetFocus : μεταφέρει την εστίαση στο κουμπί. Repaint : ξανασχεδιάζει το κουμπί Events OnClick, OnEnter, OnExit, OnKeyDown, OnkKeyPress, OnKeyUp, OnMouseDown, OnMouseMove, OnMouseUp, …
Οπτικός Προγραμματισμός Με File->NewForm δημιουργούμε νέα φόρμα (Name=AboutForm). Ενσωματώνουμε ένα Label, ένα Image component και ένα BitBtn. Βάζουμε στο Label ένα τίτλο. Στο property “Picture” του Image με Load επιλέγουμε μία οποιαδήποτε εικόνα. Στο BitBtn βάζουμε στο property “kind” την τιμή bkOK. Στο Unit1.cpp κάνουμε include το Unit2.h. Εισάγουμε ένα κουμπί στη φόρμα (AboutButton) και στο OnClick event βάζουμε την εντολή : AboutForm->ShowModal();
Οπτικός Προγραμματισμός Σε νέο Project εισάγουμε στη φόρμα ένα Label και 5 buttons. Αλλάζουμε τα captions. Στις OnClick ρουτίνες των buttons βάζουμε κώδικα της μορφής : Label1->Left=10; Label1->Top=10;
Οπτικός Προγραμματισμός Σε νέο Project εισάγουμε στη φόρμα ένα Label ένα EditBox, ένα Memo και ένα button. Τα εικονίδια δεν πρέπει να επικαλύπτονται με resize της φόρμας. To Memo πρέπει να προσαρμόζει το μέγεθός του. void __fastcall TForm1::FormCanResize(TObject *Sender, int & NewWidth, int &NewHeight, bool &Resize) { Resize=true; if (Button1->Left Left+Edit1->Width && NewWidth Width) Resize=false; if (Button1->Top Top+Edit1->Height && NewHeight Height) Resize=false;}
Οπτικός Προγραμματισμός Visual Component Library (VCL). Περιέχει δηλωμένες κλάσεις οπτικών και μη οπτικών αντικειμένων. Είναι γραμμένη σε Object Pascal. Κάθε κλάση οπτικού αντικειμένου ακολουθεί το πρότυπο Properties – Methods – Events (PME). Κάθε κλάση μη οπτικού αντικειμένου παρέχει public properties, operators και methods για χειρισμό του αντικειμένου. Οι κλάσεις ακολουθούν μία ιεραρχική δομή πολλαπλής κληρονομικότητας. TObject TPersistent TComponentVisual Components Non-Visual Components TTimer, etc TControl TGraphicControl TSpeedButton TWinControl TPanel
Οπτικός Προγραμματισμός Όλες οι κλάσεις οπτικών αντικειμένων κληρονομούνται από την κλάση TControl. Οι ιδιότητές του χωρίζονται σε 7 κατηγορίες : 1.Ιδιότητες θέσης, μεγέθους και στοίχισης (position, size and alignment) : Ιδιότητα Height : Το ύψος του αντικειμένου σε pixels Ιδιότητα Width : Το πλάτος του αντικειμένου σε pixels Ιδιότητα Top : Η θέση της πάνω ακμής σχετικά με τον γονέα (pixel). Ιδιότητα Left : Η θέση της αριστερής ακμής ως προς το γονέα (pixel). Ιδιότητα AutoSize : (true/false) καθορίζει αν το αντικείμενο θα προσαρμόζει αυτόματα το μέγεθός του ανάλογα με το περιεχόμενό του Ιδιότητα Align : (alBottom, alClient, alLeft, alNone, alRight, alTop) καθορίζει αυτόματα την θέση και το μέγεθος σε σχέση με το γονέα. Ιδιότητα Anchor : (akBottom, akLeft, akRight akTop) αγκιστρώνει το αντικείμενο στον γονέα. Ιδιότητα ClientHeight : Το ύψος της ενεργού περιοχής του αντικειμένου σε pixels (client area). Ιδιότητα ClientWidth : Το πλάτος της ενεργού περιοχής του αντικειμένου σε pixels (client area).
Οπτικός Προγραμματισμός 2.Ιδιότητες εμφάνισης (display properties) : Ιδιότητα Color : (clBlack, clRed, …) το χρώμα του background Ιδιότητα Font : (Tfont) το font των γραμμάτων Ιδιότητα Cursor : (crArrow, crHelp, …) το σχήμα του δείκτη όταν θα περνάει πάνω από το αντικείμενο. 3.Ιδιότητες γονέων (parent properties) : Ιδιότητα ParentColor : (true/false) καθορίζει αν το αντικείμενο θα χρησιμοποιεί το χρώμα του γονέα (true) ή το δικό του. Ιδιότητα ParentFont : (true/false) καθορίζει αν το αντικείμενο θα χρησιμοποιεί το font του γονέα (true) ή το δικό του. Ιδιότητα ParentShowHint : (true/false) καθορίζει αν το αντικείμενο θα χρησιμοποιεί την ρύθμιση εμφάνισης μικρής βοήθειας του γονέα. 4.Ιδιότητα πλοήγησης (navigation property) : Ιδιότητα Caption : ο τίτλος του αντικειμένου. Αν βάλουμε το & πρίν από ένα γράμμα, εμφανίζεται υπογραμμισμένο και επιλέγεται με Alt.
Οπτικός Προγραμματισμός 5.Ιδιότητες σύρε-και-άσε (drag & drop properties) : Ιδιότητα DragMode : (dmManual, dmAutomatic) όταν είναι dmManual τότε πρέπει η εφαρμογή να καλέσει την μέθοδο BeginDrag για να αρχίσει η μετατόπιση, ενώ όταν είναι dmAutomatic η μετατόπιση αρχίζει όταν πατηθεί το κλίκ του ποντικιού. Ιδιότητα DragCursor : καθορίζει το σχήμα του κέρσορα κατά την μετατόπιση. 6.Ιδιότητες σύρε-και-δέσε (drag & dock properties) : Ιδιότητα Floating : (true/false) καθορίζει αν το αντικείμενο «επιπλέει» μέσα στη φόρμα ή είναι δεμένο σε συγκεκριμένο σημείο. Ιδιότητα DragKind : (dkDrag, dkDock) καθορίζει αν το αντικείμενο σύρεται για δέσιμο (dock) ή όχι (drag). Ιδιότητα DockOrientation : καθορίζει αν το δέσιμο γίνεται οριζόντια ή κάθετα.
Οπτικός Προγραμματισμός 7.Άλλες κοινές ιδιότητες αντικειμένων : Ιδιότητα Name : (AnsiString TControl::Name) καθορίζει το όνομα του αντικειμένου καθώς και το όνομα του pointer που δημιουργείται γι’ αυτό μέσα στην εφαρμογή. Ιδιότητα Hint : (AnsiString TControl::Hint) καθορίζει μία λεζάντα βοήθειας για να εμφανίζεται όταν πηγαίνει ο κέρσορας πάνω από το ανιτκείμενο και στη γραμμή κατάστασης όταν επιλέγεται π.χ. “Name|Enter name in the Edit Box”. Ιδιότητα Visible : (bool TControl::Visible) καθορίζει αν το αντικείμενο φαίνεται ή όχι. Ιδιότητα Enabled : (bool TControl::Enabled) καθορίζει αν το αντικείμενο είναι ενεργό ή όχι (accept focus). Ιδιότητα Text : (AnsiString TControl::Text) αντιπροσωπεύει το κείμενο που περιέχεται μέσα σε ένα αντικείμενο. Ενώ όλες οι παραπάνω ιδιότητες κληρονομούνται στις παράγωγες κλάσεις, μόνο αυτές που έχουν νόημα γίνονται published και φαίνονται στον Object Inspector.
Οπτικός Προγραμματισμός Μέθοδοι ClientToScreen, ScreenToClient : Μετατρέπουν συντεταγ- μένες του client παραθύρου σε συντεταγμένες οθόνης και αντίστροφα. Μέθοδος Hide : Κάνει το αντικείμενο μή εμφανίσιμο (non-visible). Μέθοδος Show : Εμφανίζει το αντικείμενο. Μέθοδος Invalidate : καθιστά το αντικείμενο άκυρο με αποτέλεσμα να επανασχεδιαστεί το ταχύτερο δυνατό. Μέθοδος Update : ενημερώνει το αντικείμενο επανασχεδιάζοντάς το. Μέθοδος Repaint : επανασχεδιάζει το αντικείμενο. Μέθοδος SetBounds : θέτει τα Top, Left, Width και Height μαζί. Μέθοδος SetFocus : καθιστά το αντικείμενο ενεργό. Μέθοδος BringToFront : φέρνει το αντικείμενο μπροστά. Μέθοδος SendToBack : στέλνει το αντικείμενο πίσω. Μέθοδος BeginDrag : ξεκινά μετατόπιση του αντικειμένου. Μέθοδος EndDrag : τερματίζει την μετατόπιση του αντικειμένου.
Οπτικός Προγραμματισμός OnClick : συμβαίνει όταν πατάμε το κλικ του ποντικιού. OnDblClick : συμβαίνει όταν πατάμε διπλό κλίκ στο αντικείμενο. OnMouseDown : συμβαίνει όταν πατάμε το κλικ του ποντικιού. OnMouseUp : συμβαίνει όταν αφήνουμε το κλικ. OnContextPopup : συμβαίνει όταν πατάμε δεξί κλικ στο αντικείμενο ή ενεργοποιούμε το Popup μενού. OnCanResize : συμβαίνει όταν προσπαθούμε να αλλάξουμε το μέγεθος. OnResize : συμβαίνει όταν ολοκληρωθεί η αλλαγή μεγέθους. OnStartDrag : συμβαίνει όταν ξεκινά η μετατόπιση του αντικειμένου. OnEndDrag : συμβαίνει όταν ολοκληρώνεται η μετατόπιση. OnMouseMove : συμβαίνει όταν μετακινούμε το ποντίκι πάνω στο αντικείμενο. OnEnter : συμβαίνει όταν το αντικείμενο καθίσταται ενεργό. OnExit : συμβαίνει όταν καθίσταται ανενεργό. OnKeyDown, OnKeyUp, OnKeyPress : όταν πατιέται πλήκτρο.