- 1. Описание

advertisement
Описание программы
Программа содержит описание палитры компонент среды Delphi, всего 15
компонент. Для каждой рассмотрено: описание, свойства, методы, события,
приведены примеры.
На рисунке представлено главное окно программы.
На форме расположены следующие основные компоненты: два компонента
TButton, один из которых реализует выход из программы, другой подгружает
дополнительную форму, на которой расположены примеры использования
некоторых компонентов (т.е. их действие). Также на форме реализовано по
15 компонентов TImage, TComboBox и TLlabel. При клике на компонент
TImage компонент TComboBox становиться видимым. Каждый компонент
TComboBox содержит в себе строки: описание, методы, события и свойства,
и в соответствии выбором подгружается определенная форма (динамически
созданная) с интересующим вопросом. При выборе другого компонента
предыдущая (динамическая) форма не закрывается автоматически.
Информация о компонентах содержится в папке \files. Эта папка должна
находиться вместе с исполняемым файлом “demon.exe”, иначе программа
выдаст ошибку.
Листинг программы.
Листинг главной формы.
unit demo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, jpeg,StdCtrls,XPMan, MPlayer,primer;
function nazvanie(f:string):string;
type
Tforma = class(TForm)
fon: TImage;
exit: TButton;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure image_mas_Click(Sender: TObject);
procedure ComboBoxChange(Sender: TObject);
procedure paneli_nazvanie;
procedure exitClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
image: array of TImage;
combo: array of TComboBox;
nomer_file:string;
labeli: array of TLabel;
a:array[0..14] of string;
end;
var
forma: Tforma;
implementation
{$R *.dfm}
var formik: TForm;
{При создании формы реализуем динамическое создание компонентов
Timage(image[i]),
TcomboBox(combo[i]), Tlabel(labei[i]), описав до этого как массив компонентов}
procedure Tforma.FormCreate(Sender: TObject);
var i:integer;
begin
Setlength(image,15);
SetLength(combo,15);
SetLength(labeli,15);
for i:=0 to 14 do
begin
paneli_nazvanie; //Процедура реализующая названия
image[i]:=TImage.Create(forma);
image[i].Parent:=forma;
image[i].Picture.LoadFromFile('files\ico.jpg');
image[i].AutoSize:=true;
image[i].Left:=10;
image[i].top:=(image[i].Height+2)*i;
image[i].OnClick:=image_mas_Click;
image[i].Tag:=i+1;
combo[i]:=TComboBox.Create(forma);
combo[i].Parent:=forma;
combo[i].Left:=50;
combo[i].Top:=(image[i].Height+2)*i;
combo[i].Items.Append('Описание');
combo[i].Items.Append('Методы');
combo[i].Items.Append('Cвойства');
combo[i].Items.Append('События');
combo[i].Visible:=false;
combo[i].OnChange:=ComboBoxChange;
labeli[i]:=TLabel.Create(forma);
labeli[i].Parent:=forma;
labeli[i].Left:=52;
labeli[i].Top:=(image[i].Height+2)*i;
labeli[i].Caption:=a[i];
labeli[i].Height:=32;
labeli[i].AutoSize:=true;
labeli[i].Font.Name:='Monotype Corsiva';
labeli[i].Font.Size:=12;
labeli[i].Font.Style:=[fsBold];
end;
end;
//Процедура реализующая названия
procedure Tforma.paneli_nazvanie;
begin
a[0]:='TLabel';
a[1]:='TEdit';
a[2]:='TMemo';
a[3]:='TCheckBox';
a[4]:='TRadioButton';
a[5]:='TListBox';
a[6]:='TComboBox';
a[7]:='TGroupBox';
a[8]:='TRadioGroup';
a[9]:='TPanel';
a[10]:='TImage';
a[11]:='TShape';
a[12]:='TBevel';
a[13]:='TMaskEdit';
a[14]:='TMediaPlayer';
end;
//Процедура следящая за имением формы, изменяя при этом параметры
Timage(fon)
procedure Tforma.FormResize(Sender: TObject);
begin
fon.Height:=forma.Height;
fon.Width:=forma.Width;
end;
// Процедура реализующая клик на компоненте Timage, созданном динамически
procedure Tforma.image_mas_Click(Sender: TObject);
var s:string;
i:integer;
begin
for i:=0 to 14 do
begin
combo[i].Visible:=false;
end;
combo[(Sender as TImage).Tag-1].Visible:=true;
nomer_file:=IntToStr((Sender as TImage).tag);
end;
{Процедура реализующая выбор из компонента TcomboBox, при которой
динамически создается новая форма, в которую загружается выбранная
информация, на которой динамически создается компонент TMemo}
procedure Tforma.ComboBoxChange(Sender: TObject);
var formik: TForm;
memo: Tmemo;
s:string;
begin
if formik.Enabled=true then formik.Hide;
s:=(Sender as TComboBox).Items[(Sender as TComboBox).ItemIndex];
formik:=TForm.Create(forma);
formik.Width:=500;
formik.Height:=250;
formik.BorderStyle:=bsSizeable;
formik.Position:=poDesktopCenter;
formik.Show;
formik.Caption:=nazvanie(nomer_file)+' - '+s;
memo:=Tmemo.Create(formik);
memo.Parent:=formik;
memo.Align:=alClient;
memo.ReadOnly:=true;
memo.ScrollBars:=ssVertical;
memo.Lines.LoadFromFile('files\'+s+'\'+nomer_file+'.dat');
end;
{Процедура генерирующая названия. Служит для вывода на Caption
динамической формы }
function nazvanie(f:string):string;
var s:string;
k:integer;
begin
k:=StrToInt(f);
case k of
1: s:='Компонент TLabel';
2: s:='Компонент TEdit';
3: s:='Компонент TMemo';
4: s:='Компонент TCheckBox';
5: s:='Компонент TRadioButton';
6: s:='Компонент TListBox';
7: s:='Компонент TComboBox';
8: s:='Компонент TGroupBox';
9: s:='Компонент TRadioGroup';
10: s:='Компонент TPanel';
11: s:='Компонент TImage';
12: s:='Компонент TShape';
13: s:='Компонент TBevel';
14: s:='Компонент TMaskEdit';
15: s:='Компонент TMediaPlayer';
end;
result:=s;
end;
procedure Tforma.exitClick(Sender: TObject);
begin
forma.Close;
end;
procedure Tforma.Button1Click(Sender: TObject);
begin
primeri.Show;
end;
end.
Листинг дополнительной формы.
unit primer;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg, MPlayer;
type
Tprimeri = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Panel2: TPanel;
Edit1: TEdit;
Label2: TLabel;
Panel3: TPanel;
Memo1: TMemo;
Panel4: TPanel;
CheckBox1: TCheckBox;
Image1: TImage;
Label3: TLabel;
Panel5: TPanel;
Button1: TButton;
Label4: TLabel;
Button2: TButton;
Panel6: TPanel;
ListBox1: TListBox;
ListBox2: TListBox;
Label5: TLabel;
Panel7: TPanel;
Memo2: TMemo;
RadioGroup1: TRadioGroup;
Label6: TLabel;
Panel8: TPanel;
Label7: TLabel;
MediaPlayer1: TMediaPlayer;
OpenDialog1: TOpenDialog;
procedure Label1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Memo1Change(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ListBox2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure ListBox2DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
primeri: Tprimeri;
chetchik:integer;
implementation
{$R *.dfm}
//Процедура клика для имения компонента TLabel
procedure Tprimeri.Label1Click(Sender: TObject);
begin
label1.Font.Name:='Monotype Corsiva';
label1.Font.Size:=12;
label1.Caption:=primeri.Caption;
end;
//Процедура, реализующая ввод только цифр в компонент TEdit
procedure Tprimeri.Edit1KeyPress(Sender: TObject; var Key: Char);
var mn:set of char;
begin
mn:=['0'..'9'];
if Key in mn then Edit1.Text:=Edit1.Text+key;
end;
//Процедура, реагирующая на ввод, выдающая сообщение
procedure Tprimeri.Memo1Change(Sender: TObject);
begin
Memo1.ReadOnly:=true;
Memo1.Color:=clred;
showmessage('Ошибка');
end;
{Процедура, реализующая сво-во Strech компонента Timage и показывающая свово Checked компонента T CheckBox}
procedure Tprimeri.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then
begin
image1.Stretch:=true;
CheckBox1.Caption:='Картинка влезает'
end
else
begin
image1.Stretch:=false;
CheckBox1.Caption:='Картинка не влезет';
end;
end;
//Процедура, реализующая диалог MediaPlayer и OpenDialog. Берем имя файла.
procedure Tprimeri.Button1Click(Sender: TObject);
begin
if openDialog1.Execute then
begin
MediaPlayer1.FileName:=OpenDialog1.FileName;
end;
end;
// Процедура, реализующая воспроизведение файла(mp3)
procedure Tprimeri.Button2Click(Sender: TObject);
begin
if MediaPlayer1.FileName<>'' then
begin
inc(chetchik);
if odd(chetchik) then
begin
MediaPlayer1.Open;
MediaPlayer1.Play;
end
else Mediaplayer1.Pause;
if chetchik=2 then chetchik:=0;
end
else
begin
showmessage('Выберете файл для поигрывания');
end;
end;
procedure Tprimeri.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MediaPlayer1.Close;
end;
// Процедура, разрешающая перетаскивание в ListBox2
procedure Tprimeri.ListBox2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept:=true;
end;
// Процедура, реализующая само перетаскивание
procedure Tprimeri.ListBox2DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
ListBox2.Items.Append(ListBox1.Items[ListBox1.ItemIndex]);
end;
//На создании заполняем ListBox1
procedure Tprimeri.FormCreate(Sender: TObject);
var i:char;
begin
for i:='а' to 'я' do
ListBox1.Items.Append(i);
end;
{Процедура, реализующая выбор размера шрифта в компоненте Tmemo с
помощью TradioGroup}
procedure Tprimeri.RadioGroup1Click(Sender: TObject);
begin
{берем строку по её номеру}
memo2.Font.Size:=StrToInt(RadioGroup1.Items[RadioGroup1.ItemIndex]);
end;
end.
Как видим, проект состоит из двух модулей: demo – модуль главной формы и
primeri - модуль вспомогательной формы.
Download