Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεPiero Kalfas Τροποποιήθηκε πριν 10 χρόνια
1
Οπτικός Προγραμματισμός Ενσωμάτωση αντικειμένου τύπου TMainMenu από την μπάρα εργαλείων Standard. Δεν καθορίζουμε το μέγεθος και τη θέση. Με διπλό κλίκ ενεργοποιείται ο Σχεδιαστής Μενού (Menu Designer) ο οποίος δουλέυει σε συνεργασία με τον Object Inspector. Εισάγουμε τα Caption των επιλογών οριζόντια και κάθετα. Αν βάλουμε το & μπροστά από ένα γράμμα αυτό υπογραμμίζεται και μπορεί να επιλεγεί με Alt+γράμμα (Accelerator keys). Αν βάλουμε μία παύλα τότε εμφανίζεται διαχωριστκή γραμμή. Μπορούμε να καθορίσουμε και μία συντόμευση πλήκτρων για ενεργοποίηση επιλογής από το μενού, καθορίζοντας το Shortcut για κάθε item (π.χ. Ctrl + X). Καθορίζουμε αν η επιλογή είναι διαθέσιμη με την ιδιότητα Enabled.
2
Οπτικός Προγραμματισμός Bitmap : Εικόνα που θα εμφανίζεται δίπλα στην επιλογή. Break : για χωρισμό μεγάλου μενού σε στήλες. Caption : ο τίτλος της επιλογής. Checked : Αν θα εμφανίζεται το check mark Default : καθορίζει την αρχική επιλογή. Enabled : αν μπορεί να επιλεγεί ή όχι. RadioItem : κάνει την επιλογή radio button. ShortCut : καθορίζει συντόμευση πλήκτρων για την επιλογή (π.χ. Ctrl + X) Visible : καθορίζει αν η επιλογή θα φαίνεται ή όχι. Με δεξί κλικ σε μία επιλογή έχουμε : Insert : Εισάγει μία επιλογή πάνω από την τρέχουσα Delete : Διαγράφει την επιλογή Create Submenu : Δημιουργεί επιπλέον υπομενού.
3
Οπτικός Προγραμματισμός Κατά την δημιουργία του το κεντρικό μενού εμφανίζεται και στη φόρμα και είναι πλήρως λειτουργικό. Για να προσδώσουμε λειτουργικότητα στις επιλογές θα πρέπει για κάθε επιλογή να πάμε στα Events (Object Inspector) και στο OnClick event να κάνουμε διπλό κλικ για να δημιουργηθεί ο event handler (συνάρτηση) μέσα στην οποία γράφουμε τον κώδικα. Εναλλακτικά, αν υπάρχει ήδη η συνάρτηση (π.χ. για κάποιο κουμπί) τότε απλά την επιλέγουμε στο OnClick event. Για υλοποίηση Popup μενού εισάγουμε στη φόρμα ένα αντικείμενο τύπου TPopupMenu από την μπάρα εργαλείων Standard και επαναλαμβάνουμε την διαδικασία κατασκευής του μενού. Μπορούμε να έχουμε πολλά PopupMenu σε μία φόρμα. Για να συνδέσουμε ένα PopupMenu με ένα αντικείμενο (π.χ. Edit) αρκεί να θέσουμε το κατάλληλο Popup μενού στην ιδιότητα “Popup Menu” του συγκεκριμένου αντικειμένου.
4
Οπτικός Προγραμματισμός Εισάγουμε τα αντικείμενα. Το τρίτο Label και το τρίτο Edit καθώς και τα κουμπιά τα θέτουμε μη-εμφανίσιμα. Το File menu έχει επιλογές Load, Save, Exit. Το Edit μενού έχει επιλογές Cut, Copy, Paste. Το Help έχει μόνο About. Εισάγουμε δύο global μεταβλητές bool FileLoad=false; bool FileSave = false; Γράφουμε συναρτήσεις για το File->Load, File->Save, File->Exit, και τα κουμπιά Go και Cancel.
5
Οπτικός Προγραμματισμός void __fastcall TForm1:: Load1Click(TObject *Sender) {Label1->Enabled=false; Edit1->Enabled=false; Label2->Enabled=false; Edit2->Enabled=false; Label3->Visible=true; Edit4->Visible=true; Button1->Visible=true; Button2->Visible=true; FileLoad=true;} void __fastcall TForm1:: Save1Click(TObject *Sender) {Label1->Enabled=false; Edit1->Enabled=false; Label2->Enabled=false; Edit2->Enabled=false; Label3->Visible=true; Edit4->Visible=true; Button1->Visible=true; Button2->Visible=true; FileSave=true;} void __fastcall TForm1::Button2Click(TObject *Sender) {Label1->Enabled=true; Edit1->Enabled=true; Label2->Enabled=true; Edit2->Enabled=true; Label3->Visible=false; Edit4->Visible=false; Button1->Visible=false; Button2->Visible=false; FileLoad=false; FileSave=false;} void __fastcall TForm1::Exit1Click(TObject *Sender) { Form1->Close(); }
6
Οπτικός Προγραμματισμός void __fastcall TForm1::Button1Click(TObject *Sender) { char filename[500],string[500];FILE *fp; if (FileLoad) {strcpy(filename,Edit4->Text.c_str()); fp=fopen(filename,"r"); if (fp==NULL) { MessageBox(NULL,"No FIle","",MB_ICONERROR); Button2Click(this); return; } fgets(string,500,fp);fclose(fp); Edit1->Text=string;} else if (FileSave) {strcpy(filename,Edit4->Text.c_str()); MessageBox(NULL,filename,"",MB_OK); fp=fopen(filename,"w"); if (fp==NULL) { MessageBox(NULL,"Cannot create FIle","",MB_ICONERROR); Button2Click(this); return; } strcpy(string,Edit1->Text.c_str());fputs(string,fp); fclose(fp); } Button2Click(this); }
7
Οπτικός Προγραμματισμός void __fastcall TForm1::Copy1Click(TObject *Sender) { Edit1->CopyToClipboard(); } void __fastcall TForm1::paste1Click(TObject *Sender) { Edit2->PasteFromClipboard(); } void __fastcall TForm1::Cut1Click(TObject *Sender) { Edit1->CutToClipboard(); } void __fastcall TForm1::About1Click(TObject *Sender) { AboutForm->ShowModal(); }
8
Οπτικός Προγραμματισμός Εισάγουμε ένα StaticText, ένα Button, ένα PopupMenu και ένα Panel που είναι Aligned=Top, Autosize=true, DockSite=true και με ελάχιστο μέγεθος. Το Popup Menu έχει επιλογές : Floating, Anchored και Original, που κάνουν τα controls να μετακινούνται, να σταθεροποιούνται και να επανέρχονται στην αρχική θέση. Ακόμα μπορούν να κάνουν Dock στο Panel. Εισάγουμε 4 global μεταβλητές : int OrigStaticText1Left, OrigStaticText1Top, ΟrigButton1Left, OrigButton1Top;
9
Οπτικός Προγραμματισμός void_fastcall TForm1::FormCreate (TObject *Sender) { OrigStaticText1Left=StaticText1->Left; OrigStaticText1Top=StaticText1->Top; OrigButton1Left=Button1->Left; OrigButton1Top=Button1->Top; } void __fastcall TForm1::Anchored1Click (TObject *Sender) { if (StaticText1->Focused()) StaticText1 - > DragKind=dkDrag; else Button1->DragKind=dkDrag; } void __fastcall TForm1::Floating1Click (TObject *Sender) { if (StaticText1->Focused()) {StaticText1->DragMode=dmAutomatic; StaticText1->DragKind = dkDock;} else {Button1->DragMode=dmAutomatic; Button1->DragKind = dkDock;} } void __fastcall TForm1::Original1Click (TObject *Sender) {if (StaticText1->Focused()) {StaticText1->Parent=Form1; StaticText1->HostDockSite=Form1; StaticText1->Left=OrigStaticText1Left; StaticText1->Top=OrigStaticText1Top; StaticText1->DragMode=dmManual; } else {Button1->Parent=Form1; Button1->HostDockSite=Form1; Button1->Left=OrigButton1Left; Button1->Top=OrigButton1Top; Button1->DragMode=dmManual;}
10
Οπτικός Προγραμματισμός Το Memo χρησιμοποιείται για εισαγωγή κειμένου πολλαπλών γραμμών. Η διαχείριση του κειμένου γίνεται αυτόματα. Το Memo μπορεί να εμφανιστεί με μπάρες ολίσθησης, να έχει αναδίπλωση λέξεων και απόλυτο όριο χαρακτήρων. Το κείμενο του Memo βρίσκεται στην ιδιότητα Text που είναι τύπου AnsiString. Μπορούμε να εισάγουμε σταθερό κείμενο πολλαπλών γραμμών χωρίζοντάς τες με \r\n Π.χ. Memo1->Text=“first\r\nsecond”; Επίσης μπορούμε να χειριστούμε το κείμενο του Memo μέσω της ιδιότητας Lines που είναι τύπου TStrings. Ο τύπος TStrings αντιπροσωπεύει ένα σύνολο strings (γραμμές) και παρέχει ιδιότητες και μεθόδους για διαχείριση του κειμένου γραμμή- γραμμή (εισαγωγή, διαγραφή, κ.λ.π.).
11
Οπτικός Προγραμματισμός Κληρονομείται από την κλάση TMemo. Published Properties (Object inspector) Alignment : (taCenter, taLeftJustify, taRightJustify) καθορίζει την στοίχιση του κειμένου μέσα στο Memo component. BorderStyle : (bsSingle, bsNone) καθορίζει αν θα εμφανίζεται ή όχι περίγραμμα γύρω από το Memo Constraints (MaxHeight, MaxWidth, MinHeight, MinWidth) : μπορούν να καθορίσουν άνω και κάτω όρια για το μέγεθος του component. Font (Charset, Color, Height, Name, Pitch, Size, Style (fsBold, fsItalic, fsUnderline, fsStrikeOut)) : καθορίζει παραμέτρους του font των γραμμάτων μέσα στο Memo. Hide Selection : κρύβει το επιλεγμένο κείμενο όταν το Memo δεν έχει το focus.
12
Οπτικός Προγραμματισμός Published Properties (Object inspector) - συνέχεια Lines : αντικείμενο τύπου TStrings μέσω του οποίου μπορούμε να διαχειριστούμε το κείμενο γραμμή-γραμμή. MaxLength : το μέγιστο πλήθος χαρακτήρων που μπορούμε να εισάγουμε. 0 σημαίνει απεριόριστο πλήθος. ScrollBars : (ssBoth, ssHorizontal, ssVertical, ssNone) καθορίζει αν θα εμφανιστούν μπάρες ολίσθησης και ποιές. WantReturns : (true, false) Αν θέσουμε true τότε μπορούμε να πατάμε Enter για να αλλάζουμε γραμμή. Αλλιώς (false) με Ctrl-Enter. WantTabs : (true, false) Αν θέσουμε true τότε μπορούμε να πατάμε tab μέσα στο κείμενο αλλιώς (false) το tab αλλάζει control. WordWrap : (true, false) αν θέσουμε true τότε όταν γεμίζει μία γραμμή συνεχίζεται στην επόμενη (χωρίς Enter). Αλλιώς (false) η γραμμή συνεχίζει ευθεία και το παράθυρο κάνει scroll. CaretPos : (TCustomMemo) τύπου TPoint, επιστρέφει την θέση του κέρσορα (x,y) ως στήλες και γραμμές
13
Οπτικός Προγραμματισμός Properties (συνέχεια) CanUndo (TCustomEdit) : (bool) επιστρέφει true εάν έχουν γίνει αλλαγές που μπορούν να «ξεγίνουν» με την μέθοδο Undo. Modified (TCustomEdit) : (bool) επιστρέφει true εάν έχουν γίνει αλλαγές στο κείμενο του Memo. SelLentgh (TCustomEdit) : (int) επιστρέφει το μήκος του επιλεγμένου κειμένου. SelStart (TCustomEdit) : (int) επιστρέφει την θέση αρχής του επιλεγμένου κειμένου. SelText (TCustomEdit) : (AnsiString) επιστρέφει ολόκληρο το επιλεγμένο κείμενο ως AnsiString. Μέθοδοι (methods) : Clear() : καθαρίζει το κείμενο μέσα στο Memo. ClearSelection() : καθαρίζει το επιλεγμένο κείμενο. CutToClipboard(), CopyToClipboard(), PasteFromClipboard() : όλες οι ενέργειες γίνονται με το επιλεγμένο κείμενο.
14
Οπτικός Προγραμματισμός Methods (συνέχεια) GetSelTextBuffer() : επιστρέφει το επιλεγμένο κείμενο SelectAll() : μαρκάρει όλο το κείμενο ως επιλεγμένο ClearUndo() : καθαρίζει τον buffer του Undo Undo() :επαναφέρει τις αλλαγές που έγιναν από το τελευταίο ClearUndo Events (Συμβάντα) : OnChange, OnClick, OnContextPopup, OnDblClick, OnDragDrop, OnDragOver, OnEndDock, OnEndDrag, OnEnter, OnExit, OnKeyDown, OnKeyPress, OnKeyUp, OnMouseDown, OnMouseMove, OnMouseUp, OnStartDock, OnStartDrag. TStrings Properties : Capacity, Count, CommaText, Strings[i], Text TStrings Methods : Add, Delete(i), IndexOf(s), Insert(i,s), LoadFromFile(filename), Move(old_i,new_i), SaveToFile(filename), Παράδειγμα : Memo1->Lines->CommaText=“first,second” s=“New Line”; Memo1->Lines->Insert(2,s); Memo1->Lines->SaveToFile(“Text1.txt”);
15
Οπτικός Προγραμματισμός Εισάγουμε ένα Memo με Scrollbars, 4 Buttons, 2 Edit και 2 Labels. Τα Edit μας δίνουν τη θέση του κέρσορα. Αυτό γίνεται παγιδεύοντας το OnKeyDown και το OnMouseDown. Τη θέση την παίρνουμε από το Memo1->Lines->CaretPos. Το κουμπί ShowText μας δείχνει το περιεχόμενο κείμενο σε MessageBox. Το InsertLine εισάγει μία γραμμή στη θέση του κέρσορα. To Delete Line σβήνει τη γραμμή στη θέση του κέρσορα. Το Undo επαναφέρει την προηγούμενη ενέργεια με κλήση της Undo();
16
Οπτικός Προγραμματισμός void __fastcall TForm1::Memo1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) {int x = Memo1->CaretPos.x; int y = Memo1->CaretPos.y; Edit1->Text=x; Edit2->Text=y;} void __fastcall TForm1::void __fastcall TForm1::Memo1KeyUp (TObject *Sender, WORD &Key, TShiftState Shift) { Memo1MouseDown (Sender,mbLeft,Shift,0,0); } void __fastcall TForm1::Button1Click(TObject *Sender) { MessageBox(NULL, Memo1-> Text.c_str(), "",MB_OK);} void __fastcall TForm1::Button2Click(TObject *Sender) { int curline=Edit2->Text.ToInt(); Memo1->Lines->Insert(curline,"");} void __fastcall TForm1::Button3Click(TObject *Sender) { int curline=Edit2->Text.ToInt(); Memo1->Lines->Delete(curline);} void __fastcall TForm1::Button4Click(TObject *Sender) {Memo1->Undo();}
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.