| MDI - wielookienkowy edytor tekstu |
|
|
| Napisał: Berl | ||
| poniedziałek, 05 wrzesień 2005 | ||
|
W artykule tym zajmiemy się pisanie wielookienkowego, prostego edytora tekstu.
Na początku, przed rozpoczęciem pisania programu trzeba sobie skądś zdobyć, albo samemu narysować ikony, które później będą na przyciskach Nowy, Otwórz, Zapisz, Kopiuj, Wklej, Wytnij, Cofnij, Ustaw okna kaskadowo, Ustaw okna nad sobą, Ustaw okna obok siebie. 1. Najpierw wybieramy File|New Application. 2. Zmieniamy właściwości formy : a. Caption : Edytor tekstu b. Color : clAppWorkSpace c. FormStyle : fsMDIForm 3. Dodajemy na formę komponent ImageList z zakładki Win32. 4. Klikamy na komponencie ImageList lewym klawiszem myszy, otwierając tym samym menu podręczne, z którego wybieramy ImageList Editor. 5. Klikamy przycisk Add, i dodajemy wszystkie przygotowane wcześniej obrazki. 6. Dodajemy na formularz komponent ToolBar z zakładki Win32. 7. Zmieniamy jego właściwości : a. BorderWidth : 1 b. Color : clBtnFace c. Height : 30 d. Images : ImageList1 8. Klikając prawym przyciskiem myszy na komponencie ToolBar otwieramy menu podręczne, z którego wybieramy : a. New Button b. New Button c. New Button d. New Separator e. New Button f. New Button g. New Button h. New Button i. New Separator j. New Button k. New Button l. New Button Ikony na przyciskach powinny się pojawić we właściwej kolejności, czyli Nowy, Otwórz, Zapisz, Kopiuj, Wklej, Wytnij, Cofnij, Ustaw okna kaskadowo, Ustaw okna nad sobą, Ustaw okna obok siebie. Jest ot w tej chwili nieważne, ustawimy to i tak później. W ten sposób udało się nam uzyskać belkę narzędziową. 9. Dodajemy na formularz komponent ActionList z zakładki Standard. 10. Klikamy na komponencie ActionList prawym przyciskiem myszy, z menu podręcznego wybieramy Action List Editor. 11. Klikając trójkąt skierowany w dół, obok żółtego prostokąta, dodajemy akcję standardową (New Standard Action). 12. Dodajemy następujące akcje : TEditCopy, TEditCut, TEditPaste, TEditUndo, TWindowCascade, TWindowTileHorizontal, TWindowTileVertical, i zamykamy Action List Editora. 13. Zmieniamy właściwości ToolButtonów: a. ToolButton5 Action : EditCopy1 b. ToolButton6 Action : EditPaste1 c. ToolButton7 Action : EditCut1 d. ToolButton8 Action : EditUndo1 e. ToolButton10 Action : WindowCascade1 f. ToolButton11 Action : WindowTileHorizontal1 g. ToolButton12 Action : WindowTileVertical1 14. W razie potrzeby zmieniamy ikony na przyciskach, zmieniając właściwość ImageIndex przycisku. 15. Dodajemy na formularz komponent MainMenu z zakładki Standard 16. Ustawiamy właściwości komponentu MainMenu : a. Images : ImageList1 17. Klikając na komponencie MainMenu prawym przyciskiem myszy, otwieramy menu podręczne, z którego wybieramy Menu Designer. 18. Tworzymy menu Plik, w którym będą pozycje : Nowy, Otwórz, Zapisz, -, Zakończ; Następnie menu Edycja, w której będą : Kopiuj, Wklej, Wytnij, Cofnij; Następnie menu Okno, w którym będą : Ustaw okna kaskadowo, Ustaw okna nad sobą, Ustaw okna obok siebie. Nie zamykamy jeszcze Menu Designera. 19. Ustawiamy właściwość ImageIndex każdej pozycji z menu na odpowiednią wartość. W ten sposób uzyskujemy ikony obok każdej pozycji z menu. Nie zamykamy jeszcze Menu Designera. 20. Zmieniamy właściwości Action pozycji z menu, tak samo jak zmienialiśmy na przyciskach w punkcie 13. W czasie zmieniania tejże właściwości, zmienią się także właściwości Caption pozycji z menu na ich angielskie odpowiedniki. Trzeba to oczywiście skorygować. Skróty klawiaturowe zostawimy. Teraz już można zamknąć Menu Designera. 21. Teraz trzeba stworzyć okno, które będzie się pojawiać w oknie, które właśnie stworzyliśmy, przy każdym kliknięciu przycisku Nowy. W tym celu wybieramy File|New Form. 22. Zmieniamy jego właściwości : a. FormStyle : fsMDIChild 23. Dodajemy na formularz MDIChild komponent Memo z zakładki Standard. 24. Zmieniamy właściwości komponentu Memo : a. Align : alClient b. Lines : (kasujemy wszystkie linie) 25. Piszemy obsługę do zamykania okienka podrzędnego : procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; 26. Wracamy do formularza MDIForm. 27. W celu ułatwienia dalszych działań napiszemy sobie procedurkę, która tworzy nowe okno na podstawie formularza MDIChild. Najpierw w sekcji private dopisujemy linijkę : procedure stworz_okno(tytul : string); potem w sekcji uses dopisujemy na końcu MDIChild, a następnie po słowie implementation piszemy całą procedurę : procedure TForm1.stworz_okno(tytul : string); var Child : TForm2; begin Child := TForm2.Create(Application); Child.Caption := tytul; if FileExists(tytul) then Child.memo1.Lines.LoadFromFile(tytul); end; 28. Wybieramy z menu Plik tego formularza pozycję Nowy i piszemy dla niego obsługę : procedure TForm1.Nowy1Click(Sender: TObject); begin stworz_okno('bez_nazwy'+inttostr(MDIChildCount + 1)); end; 29. Dodajemy na formularz MDIForm komponent OpenDialog i SaveDialog z zakładki Dialogs. 30. Wybieramy z menu formularza MDIForm Plik|Otwórz i piszemy dla niego obsługę : procedure TForm1.Otwrz1Click(Sender: TObject); begin if opendialog1.execute then begin stworz_okno(opendialog1.filename); end; end; 31. Wybieramy z menu formularza MDIForm Plik|Zapisz i piszemy dla niego obsługę : procedure TForm1.Zapisz1Click(Sender: TObject); begin if assigned(ActiveMDIChild) then begin savedialog1.FileName := (ActiveMDIChild as TForm2).caption; if savedialog1.execute then begin (ActiveMDIChild as TForm2).memo1.Lines.SaveToFile(savedialog1.filename); end; end; end; 32. Wybieramy z menu formularza MDIForm Plik|Zakończ i piszemy dla niego obsługę : procedure TForm1.Zakocz1Click(Sender: TObject); begin Application.Terminate; end; 33. Teraz do każdego z trzech pierwszych ToolButtonów dla zdarzenia OnClick przypisujemy odpowiednie procedury : a. ToolButton1 : Nowy1Click b. ToolButton2 : Otwrz1Click c. ToolButton3 : Zapisz1Click W ten sposób uzyskaliśmy najbardziej podstawową z podstawowych aplikacji MDI. Nie ma ona żadnych bajerów w stylu blokady zamykania okna, kiedy jest ono niezapisane itp, ale nie powinniście mieć problemów z zakodowaniem tego.
Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie. |
||
| wstecz |
|---|




