www.mamboteam.com
Project1.pl Advertisement
Start arrow Artykuły arrow Praktyczne wykorzystanie Delphi arrow MDI - wielookienkowy edytor tekstu
czwartek, 09 wrzesień 2010
 
 
Menu główne
Start
Artykuły
FAQ
Download
Kontakt
Ciekawe linki
Mapa serwisu
Logowanie





Zapomniałeś hasła?
Nie masz konta? Załóż sobie
MDI - wielookienkowy edytor tekstu Drukuj E-mail
Oceny: / 4
KiepskiBardzo dobry 
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.
Komentarze

Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie.
Tylko zarejestrowani użytkownicy mogą pisać komentarze.

 
wstecz
LINKUJ PRO
Gościmy
Odwiedza nas 13 gości
Licznik odwiedzin
117620
 
Góra Góra