Интернет решения от доктора Боба | страница 24
>if (keys >= 0) then
>begin
2.1.9. Последний вариант конвертора Имея объединенные фреймы и таблицы в нашем конверторе, мы можем переходить от простой BIOLIFE.DB таблицы к более реалистичной таблицы продуктов, например PARTS.DB. Данная таблица имеет больше цифровых и меньше "memo" (или тестовых) данных, и поэтому выглядит лучше когда данные отображаются в табличном виде с простыми заголовками. "Живые" HTML кнопки работают также как и ранее, и мы можем выбирать любую запись из фрейма с индексом. Заметим, что содержимое правого фрейма также содержит текущую позицию (и общее количество записей) в таблице, так как это тоже генерируется на лету. В данный момент мы уже имеем два пути для преобразования таблицы в HTML страницу, или с помощью простого текстового конвертора или с помощью более сложного конвертора фрейм /таблица, Я написал маленькую программу, которая использует оба метода. Это простое консольное приложение, которое нуждается только в имени таблицы как аргумент командной строки (таблица должна находиться в текущем каталоге). По умолчанию используется нормальный метод преобразования, тем не менее, если ввести более одного параметра, то будет использоваться метод преобразования во фреймы с таблицами (сам дополнительный параметр игнорируется). 2.1.10. Линейка прогресса Конвертирование маленьких таблиц в небольшое количество страниц не занимает много времени, не более нескольких секунд. Но конвертирование больших таблиц в сотни или тысячи страниц может занять несколько минут. По этой причине я сделал небольшой прогресс индикатор к конвертору. Простая форма с компонентом TGauge. Мы устанавливаем MinValue и Value в 0, а MaxValue в количество записей в таблице, и после генерации страницы мы увеличиваем значение Value на единицу. Небольшие часики в левом верхнем углу показываю количество пройденного времени:> writeln(g,'
'); > write(g,'
'); ')> writeln(g,RecNr:3,'
>end;
> { print fields }
>writeln(f,'
');
');>for i:=0 to Pred(FieldCount) do if FieldTypes[i] > sf_UnKnown then
>begin
> writeln(f,'
'); ');> write(f,'
',FieldDefs[i].Name,' '); > if FieldTypes[i] = sf_Memo then
> writeMemo(f,Fields[i])
> else writeln(f,Fields[i].AsString);
> writeln(f,'
> if (keys >= i) then
> writeln(g,'
',Fields[i].AsString,' ')>end;
>if (keys >= 0) then writeln(g,'');
>writeln(f,'
> program BDE2HTML;
> {$IFDEF WIN32}
> {$APPTYPE CONSOLE}
> uses
> {$ELSE}
> uses WinCrt,
> {$ENDIF}
> Convert, HTables;
> begin
> case ParamCount of
> 0: writeln('Usage: BDE2HTML tablename');
> 1: Convert.DatabaseHTML('',ParamStr(1));
> else HTables.DatabaseHTML('',ParamStr(1))
> end
> end.