Интернет решения от доктора Боба | страница 21



writeln(f,'

');

>       { strip multiple spaces (are ignored anyway) }

>       if not ((Buffer[i] = ' ') and (Buffer[i+1] = ' ')) then write(f,Buffer[i]);

>       { start new sentence on a new line (but only in HTML doc itself }

>       if (Buffer[i] = '.') and (Buffer[i+1] = ' ') then writeln(f)

>     end;

>     writeln(f,Buffer[Pred(Stream.Size)])

>   end

>   else writeln(f,' ') { empty memo }

end{WriteStream};

procedure WriteMemo(var f: Text; Field: TField);

var Stream: TMemoryStream;

begin

>   Stream := TMemoryStream.Create;

>  (Field AS TMemoField).SaveToStream(Stream);

>   WriteStream(f,Stream);

>   Stream.Free

end {WriteMemo};

2.1.5. Страницы

Теперь у нас есть метод преобразования записей в HTML страницы, нам также нужен путь уникальной идентификации каждой записи. Допустим, что база данных не не содержит более 100,000 записей (Если таблица содержит свыше 100,000 записей, то конвертирование их в HTML страницы наверно не очень хорошая идея), Я думаю что подойдет схема где каждая запись помещается в файл с именем "pag#####.htm", где ##### номер записи в базе данных. Для уменьшения конфликта имен, каждая таблица должна размещаться в своем собственном каталоге (например, BIOLIFE.HTM каталог для BIOLIFE.DB таблиц, так что мы будем иметь BIOLIFE.HTM/PAG00001.HTM для первой записи из BIOLIFE.DB таблицы).

const

>   FirstPage = 'pag00001.htm';

>   LastPage: TPageName = 'pag%.5d.htm'; { format }


>   function PageNr(Nr: Word): TPageName;

>   begin

>     Result := Format('pag%.5d.htm',[Nr])

>   end{PageNr};

Кроме первой страницы PAG00001.HTM, нам также необходимо знать имя последней страницы, и функцию, которая нам даст номер текущей страницы для номера записи.

2.1.6. HTML "Живые" клавиши

Неплохо также иметь путь для навигации по записям таблицы, для этого я использую IMAGE MAP, встроенный в HTML-страницу и работающий даже если браузер загружает локальный файл. HTML-синтаксис для отображения картинки следующий:

>

где image.gif это файл типа .GIF или .JPEG. Мы можем вставить опцию USEMAP в тег, для указания имени карты образа, например:

>

Внутри страницы мы можем ссылаться на "#map", а в действительности на картинку. Image map ничего более чем список координат и ссылок. Переход на ссылку произойдет, мы щелкнем мышкой в указанных координатах. HTML-синтаксис карты образа, the image map выглядит как навигационная панель размером 25x125 пикселей:

>