Kylix. Работа с компонентами

Xakep, номер #033, стр. 033-062-1

Horrific (smiandr@mail.ru) www.x-c-r.com

Многие говорят, что в Linux нет хорошего файл менеджера типа Windows Commander под Windows. Это не так. Менеджеры есть, может они не совсем удобны и не на столько функциональны, но они есть. А если ты все же хочешь получить супер файл-менеджер, то все в твоих руках. Попробуй написать его сам. Для этого нужно не так уж и много сил, особенно с Kylix.

Предыстория

В этой статье я хочу тебе показать, как самому написать подобие файлового менеджера. Хотя он будет пустой, некрасивый и не очень функционален, но все же он будет. Нам главное - понять основы работы с файлами. Со временем ты сможешь улучшить и приукрасить свое творение. А я буду тебе помогать.

Итак. Даю установку. Наша задача написать прогу, с помощью которой можно будет прогуливаться по каталогам. Установка дана. Вперед!!!

На старт

Запускай Kylix, мы начинаем с чистого листа. Брось на форму два компонента: ListView с палитры компонентов Common Controls и ControlBar с палитры Additional. У тебя получится два компонента с именами ListView1 и ControlBar1. У ControlBar1 свойство Align нужно установить в alTop, а у ControlBar1 в alTop.

Теперь на ControlBar1 брось Combobox с палитры Standard. После этого у ControlBar1 измени свойство AutoSize в true. Все. Больше никаких компонентов нам не понадобится. Графический интерфейс нашего файлового менеджера пока готов. Надеюсь, что у тебя получилось нечто похожее на рисунок 1. Если получилось лучше, то это твои проблемы.

Теперь нам нужно выловить событие OnShow (когда показывается форма) главной формы. По этому событию мы всегда будем производить инициализацию различных примочек. Итак, выдели форму. Как это сделать, если на нашей форме нет чистого места? Везде сплошные компоненты. Для этого вверху окна объектного инспектора есть выпадающий список. В этом списке перечислены все компоненты на форме. Найди в этом списке имя формы (по умолчанию это Form1, если ты не менял). Так ты сможешь выделить форму.

Теперь перейди на закладку Events и создай обработчик для события OnShow. Там нужно написать содержимое листинга 1. Тут всего лишь один вызов процедуры ListDir. Эта процедура читает содержимое директории, указанной в качестве единственного параметра. Но такой процедуры в Kylix нет, я ее выдумал :), поэтому нам придется написать ее самим.

Найди раздел private в объявлении формы. Где искать, я писал пару номеров назад. Если ты пролетал в облаках, то просто ищи слово private и после него пиши следующее:

private

{ Private declarations }

Path:String;

procedure ListDir(dir:String);

Path - это переменная, в которой всегда будет храниться текущий путь на диске. ListDir - это наша процедура. Теперь нажми Ctrl+Alt+C, и Kylix сам создаст необходимую заготовку для новой процедуры. В нее напиши все что написано в листинге 2. Комментарии помогут тебе разобраться с происходящим, а я рассмотрю самые интересные моменты.

Во-первых, это очень интересная конструкция if ... then. Она читается как "Если Какое-то Условие верно, то выполнить действие". Если после этого стоят begin и end, то выполняются все действия между ними, иначе только одно следующее действие. В нашем случае запускается поиск с помощью функции FindFirst. Если она вернула какое-то значение, то выполнится все, что идет после, между begin и end. Между begin и end выполняется цикл:

Содержание  Вперед на стр. 033-062-2

ttfb: 3.0419826507568 ms