Материал: Мансуров. Основы программирования в среде Lazarus. 2010

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

procedure ComboBox1Select(Sender: TObject); procedure FormCreate(Sender: TObject);

private

{private declarations } public

{public declarations } end;

var

Form1: TForm1; implementation

procedure TForm1.ComboBox1Select(Sender: TObject); begin

with ComboBox1 do case ItemIndex of

0:ShowMessage('Это отличник');

1:ShowMessage('Это двоечник');

2:ShowMessage('А этот середняк');

else

ShowMessage('Никто не выбран'); end;

end;

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: char);

begin

if Key = #13 then ComboBox1Select(Sender); end;

procedure TForm1.FormCreate(Sender: TObject); begin

ComboBox1.ItemIndex:= 0;

631

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

end;

initialization

{$I unit1.lrs}

end.

Сделаем более полезную программу. Предположим, в некоторых тексто-

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

ленности групп будет три. Необходимо, в зависимости от выбора пользователя,

выводить список студентов выбранной группы. Список группы будем выводить в TListBox. В новом проекте сформируйте вид окна вашего приложения, рис.

6.65.

Рис. 6.65. Форма приложения

В свойстве Items введите любые три названия групп, например, как на рисунке 6.66.

Рис. 6.66. Диалог ввода строк в компонент

632

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

Создайте три текстовых файла с именами List1.txt, List2.txt и List3.txt с фамилиями студентов. Заполнять TListBox содержимым файла мы уже умеем, для простоты предположим, что файлы находятся в той же пап-

ке, что и наше приложение. Код программы:

unit Unit1;

{$mode objfpc}{$H+} interface

uses

Classes, SysUtils, FileUtil, LResources, Forms,

Controls, Graphics, Dialogs, StdCtrls, LCLType;

type

{ TForm1 }

TForm1 = class(TForm)

ComboBox1: TComboBox;

Label1: TLabel;

Label2: TLabel;

ListBox1: TListBox;

procedure ComboBox1KeyPress(Sender: TObject; var Key: char);

procedure ComboBox1Select(Sender: TObject); procedure FormCreate(Sender: TObject); procedure LoadListGroup(namefile: string);

private

{private declarations } public

{public declarations } end;

var

633

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

Form1: TForm1; implementation { TForm1 }

procedure TForm1.LoadListGroup(namefile: string); var

tfile: TStringList; str: string;

begin

tfile:= TStringList.Create; tfile.LoadFromFile(namefile); str:= tfile.Text;

{$IFDEF WINDOWS}

str:= SysToUTF8(str); // преобразование в кодировку UTF-8

{$ENDIF}

with ListBox1 do begin

Items.Text:= str; end;

tfile.Free; ListBox1.Sorted:= true;

end;

procedure TForm1.ComboBox1Select(Sender: TObject); begin

with ComboBox1 do begin

Label2.Caption:='Список группы ' + Text; case ItemIndex of

0: LoadListGroup('List1.txt');

634

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

1:LoadListGroup('List2.txt');

2:LoadListGroup('List3.txt'); else

ShowMessage('Группа не выбрана'); end;

end;

end;

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: char);

begin

if Key = #13 then begin

ComboBox1Select(Sender);

Key:=#0;

end;

end;

procedure TForm1.FormCreate(Sender: TObject); begin

ComboBox1.ItemIndex:= 0;

ComboBox1.Style:= csDropDownList;

end; initialization

{$I unit1.lrs} end.

Загрузку в TListBox содержимого текстового файла мы оформили в виде процедуры, в которую в качестве параметра передается имя файла, соответст-

вующее выбранной группе.

В заключение рассмотрим пример, как в TComboBox реализуются коррек-

635

Смотрите также:

11 Горм +
113
14
1433
1511
1632
199
204
2N4264RE
3773