Описание программы Программа содержит описание палитры компонент среды 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 - модуль вспомогательной формы.