| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Cоздание списка файлов.
Не так уж и часто, но бывает надо в программе получить список файлов или поддиректорий в каталоге. Для тех, кто использует KOL и MCK открываются аж 3 способа решения этой проблемы. Правда нормальный, по моему мнению, все-таки только один :) Рассмотрим все. 1-й способ. " Традиционный ." Традиционно пользуются 3-мя API функциями: FindFirstFile (ищет первый файл из списка файлов), FindNextFile (ищет следующий файл) , FindClose (прекращение поиска). Обычно первые 2-е функции заменются их VCL-суррогатами FindFirst, FindNext. Для нас, они не совсем приемлемы, так как для того чтобы воспользоваться этими функциями, надо подключить библиотеку Sysutils. А это как известно добавляет лишний жирок в наши атлетически сложенные программы :-). Пример на чистом API с примесью KOL. program Primer12;
uses
windows,
messages,
kol;
{$R *.RES}
var
form:Pcontrol;
// ----- элементы интерфейса -----
List:PControl;
// -----------------------------
FindHandle : THandle;
FindData : TWin32FindData;
b:boolean;
s:string;
begin
Applet:=NewApplet('Список файлов');
form:=NewForm(Applet,'Список файлов').SetSize(300,400);
form.CenterOnParent ;
List := NewListBox(form,[]).SetAlign(caClient);
// устанавливаем атрибуты файла
FindData.dwFileAttributes := FILE_ATTRIBUTE_NORMAL;
// ищем первый файл в каталоге C:
FindHandle := FindFirstFile('C:*.*',FindData);
// если все Ok, тогда продолжаем
if FindHandle <> INVALID_HANDLE_VALUE then
begin
b:=true;
while b do
begin
s:=FindData.cFileName;
// всякие точки и двоеточия нам не нужны
if (s<>'..') and (s<>'.') then
List.Add(s);
b:=FindNextFile(FindHandle,FindData);
end;
end;
FindClose(FindHandle);
run(Applet);
end.
Пояснения на счет атрибутов для искомых файлов:
2-й способ. "В лоб." Несмотря на простоту представленного кода эту операцию можно сделать еще проще т.к. ListBox сам может показать файлы в определенной директории. Для этого надо обратится к свойству AddDirList. Пример еще меньше. program Primer12_2;
uses
windows,
messages,
kol;
{$R *.RES}
var
form:Pcontrol;
// ----- элементы интерфейса -----
List:PControl;
// ------------------------------
begin
Applet:=NewApplet('Список файлов');
form:=NewForm(Applet,'Список файлов').SetSize(300,400);
form.CenterOnParent ;
List := NewListbox(form,[]).SetAlign(caClient);
List.AddDirList('C:*.*',FILE_ATTRIBUTE_NORMAL);
run(Applet);
end.
Это конечно интересный способ получать список файлов, но не функциональный :) Не создавать ведь на окне каждый раз ListBox или СomboBox (он тоже имеет это же свойство), чтобы получить список файлов. Да и почему-то выводимый список файлов в виде " коротких имен " (т.е. как будто в DOS). Скорее всего Владимир Кладов добавил это свойство как интересную фичу и не более. 3-й способ. " Как положено " Ну и самое интересное :) В KOL есть объект предназначенный для создания списка фалов. Это PDirList. Вот его конструктор:
DirPath - сканируемая директория Список методов и свойств для работы с этим обьектом:
Пример. Наверху в окне находится список дисков. Ниже находится список файлов и подкаталогов, находящихся в центральных каталогах этих дисков. program Primer12_3;
uses
windows,
messages,
kol;
{$R *.RES}
var
form:Pcontrol;
// ----- элементы интерфейса -----
ListFile,
ListDrv:PControl;
// ------------------------------
FileL:pDirList;
i,j:integer;
DriveBits: set of 0..25;
DriveNum:integer;
DriveChar:char;
///////////////////////////////////////////////////////////////////////////
Procedure SelDrv ( Dummy : Pointer; Sender : PControl );
var
s:string;
begin
s:= ListDrv.Text ;
if FileL=nil then
FileL := NewDirList(s,'*.*',FILE_ATTRIBUTE_NORMAL)
else
begin
FileL.Clear ;
FileL.ScanDirectory(s,'*.*',FILE_ATTRIBUTE_NORMAL);
end;
FileL.Sort([sdrByName]);
ListFile.Clear;
if FileL.Count > 0 then
for i:=0 to FileL.Count-1 do
ListFile.add(FileL.Names[i]);
end;
///////////////////////////////////////////////////////////////////////////
begin
Applet:=NewApplet('Список файлов');
form:=NewForm(Applet,'Список файлов').SetSize(250,300);
form.CenterOnParent ;
Form.Font.FontName := 'MS Sans Serif';
Form.Font.FontHeight := 9;
//----------- "рисуем" интерфейс -----------------------
ListDrv := NewComboBox(form,[]).SetAlign(caTop);
ListFile := NewListbox(form,[]).SetAlign(caClient);
//------------------------------------------------------
Integer(DriveBits) := GetLogicalDrives; // получаем номера дисков
i:=0;
j:=0;
// узнаем список дисков
for DriveNum := 0 to 25 do
if DriveNum in DriveBits then
begin
DriveChar := Char(DriveNum + Ord('a'));
DriveChar := UpCase(DriveChar);
ListDrv.Add(DriveChar+':');
if DriveChar='C' then j:=ListDrv.Count-1; // узнаем каким в очереди идет диск С:
end;
ListDrv.CurIndex := j;
ListDrv.OnChange := TOnEvent( MakeMethod( nil, @SelDrv ) );
SelDrv(nil,nil); // показываем файлы на текущем диске
run(Applet);
end.
Размер кода 1,8 Кб. Размер программы 34,5 Кб (без сжатия и замены модулей). Источник: http://bonanzas.rinet.ru , http://kol.mastak.ru Рубрика: Kol и MCK
HTML 5: пять вещей вызывающих особый интер....
HTML 5 — это грядущее обновление гипертекстового языка разметки, основного способа создания контента для размещения его во всемирной паутине. Разработка HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое изменилось так, что текущие спецификации HTML перестали соответствовать сегодняшним требованиям. HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и соответствовать растущим требованиям разнообразного и смешанного web-контента. HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье мы взглянем на 5 новых интересных вещей в HTML 5.
Подробнее... |
Рубрика: Html
| Добавлено: 22.12.2008
asp.net: ListView с разных сторон.
Элемент управления ListView был представлен в .Net Framework 3.5 как замена устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его предшественник, но в тоже время лишен некоторых внутренних механизмов, что впрочем целиком следствие из расширенной универсальности ListView. Среди отличий ListView и GridView можно назвать и гибкую настройку разметки, что позволяет выводить данные не только в табличном виде, но и вообще в любом каком пожелает программист. Благодаря шаблонам ItemTemplate, EditItemTemplate, InsertItemTeplate можно настроить внешний вид при любом из состояний ListView: редактировании или выборе элемента.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Создание кросс-таб отчета в Stimulsoft Rep....
Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net. Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы, но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в сфере программных продуктов для Business Intelligence.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|