Вход/Регистрация
S. D. F.
вернуться

Cat W

Шрифт:

– В строках 100-130 формируется запрос, в стр. 140 он выполняется, а затем цикл в строках 150-200 сохраняет имена полей таблицы в пунктах CheckListBox1, по команде стр. 190 переход на следующую запись… вот вкратце.

* Да, объяснения ты печешь как горячие пирожки.

– Подумаешь, пироги! Я еще вышивать умею и на машинке шить. А ты думал, что мы только мясо умеем воровать из кастрюль и на крышах кричать.

* Вызывает интерес, и еще такой разрез. Где ты взял эту информацию?

– Пилите, Шура хелпы, пилите, они золотые.

* А почему мы используем CheckListBox зачем нам эти галочки.

– Вот тут мы подходим к следующей задаче. У нас на файсе есть еще кнопка “Show Data”.

– Подробности о содержимое таблицы будем показывать в зависимости от установленных галочек в этом самом CheckListBox.

– Но, давай по очереди.

Show Structure

– Когда я планировал ББД, и дошел до этого пункта, перебрал несколько вариантов: можно выдавать результат в отдельный файл, можно в Memo, можно StringGrid или подобное, но это все не то. Т.е. хочется, чтобы была видна табличная форма таблицы ( возгласы с мест «* Невнятная тавтология»). А потом сообразил – Браузер, конечно же Браузер. Именно HTML дает широкие и гибкие возможности отображения информации.

– Итак на закладке Result ставим компонент Web типа TwebBrowser.

– А для кнопки “Show Structure” обработчик нажатия.

010 procedure TFMain.Button3Click(Sender: TObject);

020 var

030 i : integer;

040 LHTML : TStringList;

050 begin // кнопка Show Structure

060 if ListBox1.Items.Count = 0 then exit;

070 LHTML := TStringList.Create;

080 HTMLHead(LHTML);

090 with ListBox1 do

100 for i := 0 to Items.Count - 1 do

110 PrintFields(Items[i], LHTML);

120 LHTML.SaveToFile(Path+’~.htm’);

130 Web.Navigate(Path+’~.htm’);

140 PageControl1.ActivePage := TabSheet2;

150 LHTML.Free;

160 end;

– Стр. 70 создаем листочек HTML

– Стр. 80 записываем заголовочную часть HTML

– 100-110 циклически заносим в HTML нужную информацию

– Стр. 120 Вот тут можно было пойти разными путями, я пошел простейшим сохраняю HTML файл в рабочей папке.

– Стр. 130 Отображаю готовый файл в навигаторе.

* Хорошо, копаем глубже…

– Пожалуйста:

010 procedure PrintFields(table:string; LHTML : TStringList);

020 var

030 S : string;

040 begin

050 LHTML.Add('<h2>'+table+'</h2>');

060 with DataM.IBSQL1 do

070 begin

080 Close;

090 SQL.Clear;

100 SQL.Add('select R.RDB$FIELD_POSITION, R.RDB$FIELD_NAME, '+

110 'F.RDB$FIELD_LENGTH, F.RDB$FIELD_TYPE '+

120 'from RDB$FIELDS F, RDB$RELATION_FIELDS R '+

130 'where F.RDB$FIELD_NAME = R.RDB$FIELD_SOURCE and R.RDB$SYSTEM_FLAG = 0 '+

140 'and RDB$RELATION_NAME = ''' + table +''' '+

150 'order by R.RDB$RELATION_NAME, R.RDB$FIELD_POSITION');

160 ExecQuery;

170 LHTML.Add('<center><table><tr>');

180 LHTML.Add('<th>Position</th>');

190 LHTML.Add('<th>Name</th>');

200 LHTML.Add('<th>Length</th>');

210 LHTML.Add('<th>Type</th>');

220 LHTML.Add('</tr>');

230 while not EOF do

240 begin

250 S := '<tr><td>' +Fields[0].AsString + '</td>'+

260 '<td>'+ trim(Fields[1].AsString)+'</td>'+

270 '<td>'+ trim(Fields[2].AsString) +'</td>'+

280 '<td>'+ FieadType(Fields[3].AsInteger)+'</td></tr>';

290 LHTML.Add(s);

300 Next;

310 end;

320 LHTML.Add('</table></center>');

330 end;

340 end;

* А я стал привыкать к этим крокозябрам.

– Тем более, что текст во многом повторяется.

– Как видишь, на экран выдается название таблицы, а затем таблица с описанием полей.

* Погоди! А что это в 280 строке?

– О, кота то я, и не заметил.

function FieadType(n:integer):string;

begin

 case n of

  • Читать дальше
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: