Alqoritm, xassələri və təsvir üsulları


Menyu sətirlərindən ibarət mətn redaktorunun yaradılması



Yüklə 2,19 Mb.
səhifə121/125
tarix07.01.2024
ölçüsü2,19 Mb.
#205155
növüYazı
1   ...   117   118   119   120   121   122   123   124   125
aminlazım

Menyu sətirlərindən ibarət mətn redaktorunun yaradılması


Dialoqlar bölməsində yaratdığımız, düymələrlə idarə olunan mətn redaktorunu yenidən yaradaq. Bu dəfə düymələrin icra etdiyi əmrləri menyular vasitəsilə icra edək.
Eyni zamanda menyu bəndlərini proqram yolu ilə deyil, Menyu konstruktoru ilə yaradaq.
Bu redaktorda menyulan belə qruplaşdıraq:
File menyusu:

  • Open - fayl açmaq;

  • Save - yadda saxlamaq;

  • Save as...- faylı necə yadda saxlamaq;

  • Exit -çıxmaq.

Edit menyusu:

  • Undo -ləğv etmək;

  • SelectAll - bütün mətni seçmək;

  • Reset -bərpa etmək

Font and color menyusu:

  • Font - şrift seçmək;

  • Color - rəng seçmək.

Beləliklə, yaradacağımız redaktorun menyu sətri üç menyudan ibarət olacaqdır.
Kontekst menyunu isə aşağıdakı bəndlərdən ibarət tərtib edək:

  • Exit - çıxmaq;

  • Reset – bərpa etmək;

  • Color- rəng seçmək;

  • Font-şrift seçmək..

Bu dəfə redaktorda heç bir düymə istifadə etməyəcəyik.
Yeni layihə üçün forma üzərinə Memo, MainMenu, PopupMBUh, OpenDialog, SaveDialog, FontDialog və CoicrZıalof komponentləri yerləşdirin. MainMenu komponentini seçərək, onun mausun sağ düyməsini basıb, kontekst menyudan Menu Designer.... konstruktorunu çağırın. Bu konstruktorda bir seçilmiş boş menyu görünəçəkdir. Obyektlər inspektoruna keçərək Caption xassəsi qarşısında File yazıb Enter klavişini basın. Beləliklə, ilk File menyusu yaradılacaqdır və Delphi ilə menyuya avtomatik olaraq Nl adı verəcəkdir. Bu menyudan sağ tərəfdə, boş yerdə, mausun düyməsini basıb analoji qayda ilə Edit menyusunu və eyni qayda ilə Font and color menyusunu yaradın. Yenidən File menyusu üzərində mausun düyməsini basın. Bu menyuda yeni bir seçiləcəkdir. Obyektlər inspektorunda Caption xassəsinə Open mətni daxil edin. Gələcəkdə hansı prosedurun hansı menyu bəndini icra etdiyini başa düşmək üçün menyu bəndlərinə adlar verək (Name xassəsi). Bu menyuların bir neçəsini klavişlər kombinasiyası ilə icra etmək üçün Exit bəndinin ShortCut xassəsinə Ctrl+E, Undo bəndinə Ctrl+U, SelectAll bəndinə Ctrl+A qiymətləri seçin (öz arzunuzla istənilən menyu bəndi üçün klavişlər kombinasiyası təyin edə bilərsiniz). File menyusunda Exit bəndini digər bəndlərdən ayıraq. Bunun üçün Save as. . . menyu bəndini yaratdıqdan sonra, növbəti təklif olunan bəndin Caption xassəsinə ad deyil, Enter klavişini basın.
Kontekst menyunu yaratmaq üçün, PopupMenu komponentini seçərək, analoji əməliyyatları icra edin. Kontekst menyunun bəndlərini isə belə adlandırın (Name xassəsi): mkExit, mkReset, mkColor, mkFont.
Menyu konstruktorunu bağlayın. Mətn redaktorunda menyu sətri yaradılmış olacaqdır.
İndi Memol komponentini seçin. Redaktorun müştəri oblastının bütün pəncərəni əhatə etməsi üçün onun Align xassəsinə alClient qiyməti verin. Redaktor bütün pəncərə boyu açılacaqdır. Redaktorda fırlatma zolaqlarının olması üçün onun ScrollBars xassəsinə ssBoth (hər iki zolaq var) qiyməti verin. Redaktorun sərlövhəsini (Memol) pozun. Bunun üçün Lines xassəsi qarşısındakı üç nöqtə təsvirli düyməni iki dəfə basaraq açılan pəncərədən Hemol sözünü pozun.
OpenDialogl komponentini seçib Filter xassəsi qarşısında mausun düyməsini basaraq Filter Editor redaktorunu çağırın. Bu redaktorun birinci sütununun birinci sətrinə Mətn faylları *.txt, *.doc, ikinci sütununun həmin sətrində *.txt, *.doc yazın. İkinci sətrin birinci sütununda Bütün fayllar *.*, ikinci sütununda isə *.* yazıb Ok düyməsini basın.
Obyektlər inspektorunda CefaultExt xassəsinə 'txt' qiyməti daxil edin. Bütün bu əməliyyatları SaveDialogl komponenti üçün təkrar edin.
Layihə modulunda bütün prosedurlar menyu bəndləri üzərində, OnActivate (forma aktivləşdikdə) proseduru isə forma üzərində mausun düyməsini bir dəfə basmaqla yaradılacaqdır. Əslində modulun bütün prosedurlan (kontekst menyudan başqa) əvvəlki redaktorda düymələr üçün yaradılmış prosedurlardır. Kontekst menyular üçün prosedurlarda isə yeni kodlar yazılmayacaq, sadəcə olaraq əsas menyu bəndlərini imitasiya kodu yazılacaqdır.
Beləliklə, menyularla idarə olunan məm redaktorunun modulunun tam mətni belə olacaqdır:
unit Unitl; interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controis, Forms, Dialogs, Menus, StdCtrls; type
Tforml = class(TForm)
Memo1: TMemo;
MainMenul: TMainMenu;
Nl: TMenuItem;
Yl: TMenuItem; N2: TMenuItem; mnuOpen: TMenuItem; mnuSave: TMenuItem; mnuSaveAs: Tmenu İtem; N6: TMenuItem; mnuExit: TMenuItem; mnuUndo: TMenuItem; mnuSelectAll: TMenuItem; mnuReset: TMenuItem; mnuFont: TMenuItem; mnuColor: TMenuItem; PopupMenul: TPopupMenu; mkExit: TMenuItem; mkReset: TMenuItem; mkColor: TMenuItem; mkFont: TMenuItem; OpenDialogl: TOpenDialog;
SaveDialogl: TSaveDialog;
FontDialogl: TFontDialog; ColorDialogl: TColorDialog; procedure FormActivate(Sender: TObject); procedure mnuOpenClick(Sender: TObject); procedure mnuSaveClick(Sender: TObject); procedure mnuSaveAsClick(Sender: TObject); procedure mnuExitClick(Sender: TObject); procedure mnuUndoClick(Sender: TObject); procedure mnuSelectAHClick (Sender:TObject); procedure mnuResetClick (Sender: TObject); procedure mnuFontClick(Sender:TObject); procedure mnuColorClick(Sender: TObject); procedure FormClose(Sender:TObject; var Action:TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Forml: TForml;
FormColorYad, MemoColorYad: Longİnt;
FAYL: String; implementation {SR *.DEM}
procedure TForml.FormActivate(Sender: TObject); begin
OpenDialogl.Title:= ' Mətn faylları ';
OpenDialogl.Filter:=Mətn faylları[*.TXT,*.DOC]
|*.TXT;*.DOC|Bütün fayllarf*.*]I*.**;
OpenDialogl.DefaultExt:= 'TXT';
SaveDialog1.Title:= ' Mətn faylları ';
SaveDialog1.Filter:= ' Mətn faylları*.TXT;*.DOC] *.TXT;*.DOC|Bütün fayllar*.* I *.*';
SaveDialog1.DefaultExt:='TXT';
FormColorYad:= Form1.Color;
MemoColorYad:= Memo1.Color;
Memo1.Lines.Clear;
Memo1.PopupMenu:= PopupMenu1;
end;
procedure TForml.mnuOpenClick(Sender: TObject);
begin
Memol.Lines.Clear; if OpenDialogl.Execute then begin
FAYL:= OpenDialog1.FileName;
Form1.Memol.Lines.LoadFromFile(FAYL);
Form1.Caption:= FAYL; end; end;
proscedure TForml.mnuSaveClick(Sender: TObject); begin
Memol.Lines.SaveToFile(FAYL); end;
procedure TForml.mnuSaveAsClick(Sender: TObject);
begin
if SaveDialog1.Execute then begin
SaveDialog1.FilterIndex:=2;
Memol.Lines.SaveToFile(SaveDialogl.FileName); end;
if Memol.Modified then Memol.Modified:=False; end;
procedure TForml.mnuExitClick(Sender: TObject);
Var
Rez:TModalResult; begin if Memo1.Modified then begin
Rez:=MessageDlg (' Dəyişiklik yadda saxlanmayıb) '
+#13#10+' Yadda saxlayaq? ', mtConfirmation,[mbOK,mbNo],0); if Rez= mrNo then Close; if Rez= mrOK then begin
Memol.Lines.SaveToFile(FAYL); Close; end; end else Close; end; procedure TForml.mnuündoClick(Sender: TObject); begin
SendMessage(Memol.Handle,EM_UNDO,0,0); end;
procedure TForml .mnuSelectAHClick (Sender: TObject) ; begin
MEmol.HideSelection:=False; Memol.SelectAll; end; procedure TForml.mnuResetClick (Sender: TObject); begin
Memol.Color:= MemoColorYad; Forml.Color:= FormColorYad; end; procedure TForml.mnuColorClick(Sender: TObject); begin
if ColorDialogl.Execute then Memol.Color:= ColorDialogl.Color; end;
procedure TForml.FormClose(Sender:TObject;
var Action:TCloseAction); begin if Memol.Modified then
if MessageDlgC (Fayl dəyişmişdir! '+#13#10+
' Çıxırsımzmı? ,mtConfirmation,
[mbYes, mbNo], 0) = mrYes then Begin if Memol.Modified then begin
Memol.Lines.SaveToFile (FAYL); Action: = caFree; end; end else Action:=caNone; end;

Yüklə 2,19 Mb.

Dostları ilə paylaş:
1   ...   117   118   119   120   121   122   123   124   125




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin