Полный текст модуля Unit1.pas

 

unit Unit1;

interface

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

Button1: TButton;

Button2: TButton;

Button3: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

 

procedure TForm1.Button1Click(Sender: TObject);

var i:Integer;

begin

for i:= 0 to 3 do

begin

StringGrid2.Cells[i,0]:= StringGrid1.Cells[i,3];

StringGrid2.Cells[i,3]:= StringGrid1.Cells[i,0];

StringGrid2.Cells[i,1]:= StringGrid1.Cells[i,1];

StringGrid2.Cells[i,2]:= StringGrid1.Cells[i,2];

end

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

StringGrid2.Rows[0]:= StringGrid1.Rows[3];

StringGrid2.Rows[1]:= StringGrid1.Rows[1];

StringGrid2.Rows[2]:= StringGrid1.Rows[2];

StringGrid2.Rows[3]:= StringGrid1.Rows[0];

end;

 

procedure TForm1.Button3Click(Sender: TObject);

var i, j: Integer;

begin

for i:= 0 to 3 do for j:= 0 to 3 do

StringGrid2.Cells[j, i]:=‘‘

end;

end.

 

Создание меню. Компоненты MainMenu и PopupMenu

 

Создать главное меню, имеющее упрощенную структуру меню Windows: File, Edit, Run. В качестве реакции на выбор пункта меню выдавать сообщения о выборе соответ­ствующего пункта.

Решение

1. Создадим новую папку, например D:\MyProject\MAINMENU.

2. Откроем новый проект.

3. Из страницы Standard поместим на Form1 компонент MainMenu1.

4. В Инспекторе Объектов выберем свойство Items компонента MainMenu1, а затем щелкнем по кнопке с тремя точками. После этого на экране появится окно конст­руктора меню.

5. С помощью конструктора меню наберем элементы меню, указанные в условии
примера.

Напомним, что подчеркнутая буква в имени пункта означает клавишу быстрого пе­рехода. С помощью этой клавиши можно осуществить быстрый переход на дан­ный элемент меню. Задать клавишу быстрого перехода можно с помощью симво­ла &, помещаемого перед соответствующим символом текста. Например: &File, Cu&t.

Обратите внимание, что, вводя название элемента меню, вы задаете значение свойства Caption для этого элемента меню. Для того чтобы ввести код клавиши быстрого управления, например Ctrl+S для пункта Save, необ­ходимо для соответствующего элемента меню выбрать свойство ShortCut в Инс­пекторе Объектов и в выпадающем списке выбрать нужное значение. Для того чтобы элемент меню представлял собой разделительную линию, следует его свой­ству Caption задать значение ‘-‘. Для создания подменю, например для пункта Reopen, следует выбрать нужный элемент меню и щелкнуть правой кнопкой мыши. В появившемся контекстном меню конструктора выберите пункт Create Submenu. Далее введите пункты подменю.

6. Если вы ввели все пункты меню, то закройте окно конструктора меню. На форме Form1 осталось созданное меню. Для определения реакции на выбор пунктов меню следует по очереди выбирать все пункты меню и щелкать по ним мышкой. В ре­зультате появится окно Редактора Кода, в котором нужно ввести программный код для обработчика события OnClick. Например, для элемента меню New обработчик события OnClick будет иметь вид:

 

procedure TForm1.New1Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт New’);

end;

 

Здесь ShowMessage - это стандартная функция, выводящая на экран окно с задан­ным сообщением.

7. Сохраните проект и запустите его на выполнение.

Приведем полный текст сформированного модуля.

Текст модуля Unit1.pas

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus;

 

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

File1: TMenuItem;

New1: TMenuItem;

Open1: TMenuItem;

Save1: TMenuItem;

Close1: TMenuItem;

N1: TMenuItem;

Reopen1: TMenuItem;

Project11: TMenuItem;

Project21: TMenuItem;

Project31: TMenuItem;

Edit1: TMenuItem;

Cut1: TMenuItem;

Copy1: TMenuItem;

Past1: TMenuItem;

Delete1: TMenuItem;

Run1: TMenuItem;

Run2: TMenuItem;

N2: TMenuItem;

StepOver1: TMenuItem;

TraceInto1: TMenuItem;

procedure New1Click(Sender: TObject);

procedure Open1Click(Sender: TObject);

procedure Save1Click(Sender: TObject);

procedure Close1Click(Sender: TObject);

procedure Project11Click(Sender: TObject);

procedure Project21Click(Sender: TObject);

procedure Project31Click(Sender: TObject);

procedure Cut1Click(Sender: TObject);

procedure Copy1Click(Sender: TObject);

procedure Past1Click(Sender: TObject);

procedure Delete1Click(Sender: TObject);

procedure Run2Click(Sender: TObject);

procedure StepOver1Click(Sender: TObject);

procedure TraceInto1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

procedure TForm1.New1Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт New’);

end;

 

procedure TForm1.Open1Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Open’);

end;

 

procedure TForm1.Save1Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Save’);

end;

 

procedure TForm1.Close1Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Close’);

end;

 

procedure TForm1.Project11Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Project1’);

end;

 

procedure TForm1.Project21Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Project2’);

end;

 

procedure TForm1.Project31Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Project3’);

end;

 

procedure TForm1.Cut1Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Cut’);

end;

 

procedure TForm1.Copy1Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Copy’);

end;

 

procedure TForm1.Past1Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Past’);

end;

 

procedure TForm1.Delete1Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Delete’);

end;

 

procedure TForm1.Run2Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Run’);

end;

 

procedure TForm1.StepOver1Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Step Over’);

end;

 

procedure TForm1.TraceInto1Click(Sender: TObject);

begin

ShowMessage(‘Выбран пункт Trace Into’);

end;

 

end.

 

Пример 6.2

Создадим контекстное меню PopupMenu для проекта из примера 6.1.

Решение

1. Скопируем содержимое папки D:\MyProject\StringGrid в папку
D:\MyProject\PopupMenu.

2. При помощи команды главного меню File|Open откроем Project1 из папки
D:\MyProject\PopupMenu.

3. Со страницы Standard поместим на Form1 компонент PopupMenu1.

4. Войдем в свойство Items компонента PopupMenu1 и зададим элементы контекстного меню.

5. Не выходя из конструктора меню, двойным щелчком по каждому элементу будем
вызывать Редактор Кода. Так, для элемента меню Решение 1 обработчик собы­тия OnClick будет иметь вид:

procedure TForm1.N11Click(Sender: TObject);

Begin

Button1Click(Button1);

end;

где Button1Click - процедура, созданная ранее (см. пример 2.9). В качестве пара­метра процедуры можно использовать указатель на любой объект, например ком­понент Button1.

Аналогично из элементов меню Решение 2 и Очистить вызовем процедуры Buton2Click и Button3Click соответственно.

6. Для того чтобы локальное меню было доступным в любой точке формы Form1, установим ее свойство PopupMenu равным PopupMenu1.

7. Сохраним проект и запустим его на выполнение. Щелчок правой кнопкой мыши активизирует локальное меню.

Приведем текст модифицированного модуля Unitl.pas

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, Menus;

 

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

Button1: TButton;

Button2: TButton;

Button3: TButton;

PopupMenu1: TPopupMenu;

N11: TMenuItem;

N21: TMenuItem;

N1: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N21Click(Sender: TObject);

procedure N1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

procedure TForm1.Button1Click(Sender: TObject);

var i:Integer;

begin

for i:= 0 to 3 do

begin

StringGrid2.Cells[i,0]:= StringGrid1.Cells[i,3];

StringGrid2.Cells[i,3]:= StringGrid1.Cells[i,0];

StringGrid2.Cells[i,1]:= StringGrid1.Cells[i,1];

StringGrid2.Cells[i,2]:= StringGrid1.Cells[i,2];

end

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

StringGrid2.Rows[0]:= StringGrid1.Rows[3];

StringGrid2.Rows[1]:= StringGrid1.Rows[1];

StringGrid2.Rows[2]:= StringGrid1.Rows[2];

StringGrid2.Rows[3]:= StringGrid1.Rows[0];

end;

 

procedure TForm1.Button3Click(Sender: TObject);

var i, j: Integer;

begin

for i:= 0 to 3 do

for j:= 0 to 3 do

StringGrid2.Cells[j, i]:= ‘ ‘

end;

 

procedure TForm1.N11Click(Sender: TObject);

begin

Button1Click(Button1);

end;

 

procedure TForm1.N21Click(Sender: TObject);

begin

Button2Click(Button2);

end;

 

procedure TForm1.N1Click(Sender: TObject);

begin

Button3Click(Button3);

end;

end.

 

Диалоговые окна.

Создадим простой текстовый редактор, который позволил бы с помощью диалого­вых окон сохранять и открывать текстовые файлы, а также изменять характеристики шрифта.

Решение

1. Создадим новую папку: D:\MyProject\DIALOG.

2. Откроем новый проект с помощью команды главного меню File| New | Application.

3. Разместим на Form1 следующие компоненты: компоненты OpenDialog1, SaveDialog1 и FontDialog1 выберем из страницы Dialogs, a Memo1, Button1, Button2, и ButtonЗ - из страницы Standard Палитры Компонентов.

4. Выберем свойство Lines компонента Memo1 и щелкнем по появившейся кнопке с тремя точками. В появившемся окне удалим текст ‘Memo1’. Нажмем ОК. Мы добились того, что при запуске программы окно редактора будет пустым.

5. Выберем свойство Filter компонента OpenDialog1 и щелкнем по появившейся кнопке с тремя точками. Появится диалоговое окно Filter Editor, с помощью ко­торого можно задать тексты фильтров и сами фильтры.

В первой строке в окне Filter Name введем:

Текстовые файлы (*.txt,*.doc)

а в окне Filter:

*.txt; *.doc

Во второй строке в окне Filter Name введем:

Все файлы (*. *)

а в окне Filter:

*.*

Нажмем кнопку ОК.

6. Для компонента SaveDialog1 значение свойства DefaultExt установим равным txt.
Т.е., если при сохранении файла расширение не будет указано, то по умолчанию до­бавится расширение txt.

7. Кнопкам Button1, Button2, и Button3 установим свойство Caption равным ‘Открыть’, ‘Сохранить’ и ‘Шрифт’ соответственно.

8. В обработчик события OnClick для кнопки Button1 вставим следующие операторы:

with OpenDialog1 do

begin

if not Execute then Exit;

Memo1.Lines.LoadFromFile(FileName)

end;

9. В обработчик события OnClick для кнопки Button2 вставим следующие операторы:

with SaveDialog1 do

begin

if not Execute then Exit;

Memo1.Lines.SaveToFile(FileName)

end;

10. В обработчик события OnClick для кнопки Button3 вставим

with FontDialog1 do

begin

if not Execute then Exit;

Memo1.Font:= Font

end;

11. Сохраните проект и запустите его на выполнение. Наберите произвольный текст в окне редактора. Сохраните его в папке D:\MyProject\DIALOG.

Очистите с помощью локального меню окно редактора. Для появления локаль­ного меню следует щелкнуть правой клавишей мыши, когда ее указатель нахо­дится в пределах окна редактора. Откройте ранее созданный файл. Измените его шрифт.

Приведем полный код сформированного модуля. Unit1.pas:

 

unit Unit1;

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

FontDialog1: TFontDialog;

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

Button3: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

procedure TForm1.Button1Click(Sender: TObject);

begin

with OpenDialog1 do

begin

if not Execute then Exit;

Memo1.Lines.LoadFromFile(FileName)

end

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

with SaveDialog1 do

begin

if not Execute then Exit;

Memo1.Lines.SaveToFile(FileName)

end

end;

 

procedure TForm1.Button3Click(Sender: TObject);

begin

with FontDialog1 do

begin

if not Execute then Exit;

Memo1.Font:= Font

end

end;

End.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: