Чтение онлайн

на главную

Жанры

Cat W

Шрифт:

– Итак на закладке 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

7 : result := 'smallint';

8 : result := 'integer';

9 : result := 'quad';

10 : result := 'float';

11 : result := 'd_float';

12 : result := 'date';

13 : result := 'time';

14 : result := 'char';

27 : result := 'double';

35 : result := 'date';

37 : result := 'varchar';

 261 : result := 'blob';

 else result := IntToStr(n)+' ?';

 end; // case

end;

В результате отобразится, нечто такое:

– * -

– Ну, и чего так долго, конечно, пива много не бывает, но…

* В общем-то, получилось, но никак не могу скопировать получившееся.

– Да, есть такая задача. Вставь в самом конце (перед end.) в файле Unit1:

initialization

OleInitialize(nil);

finalization

OleUninitialize;

А в самом начале этого файла вставь ActiveX в разделе uses.

* Так, просто! Да что же это такое. Просто хочется рвать и метать!!

– Это Windows.

* Ну, что теперь отображаем данные?

– Нет, не к спеху, да и отображать еще нечего, давай отдохни, а я подготовлюсь к последнему рывку.

«Продолжение следует»

Последний? Рывок к ББД

– Предлагаю вернуться к выполнению SQL запроса.

– Бывают запросы SELECT и все остальные. Результат выполнения SELECT – будем выдавать в закладку result, а остальные просто выполнять.

– Переделываем Button1Click:

010 procedure TFMain.Button1Click(Sender: TObject);

020 begin // кнопка run SQL

030 RunSQL(MakeSQL); // выполение команды SQL

040 end;

– Пойдем дальше.

– Теперь можно заняться кнопочкой «Show Data»

010 procedure TFMain.Button5Click(Sender: TObject);

020 var

030 i : integer;

040 S : string;

050 begin // Show Data

060 with CheckListBox1 do

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

Страж. Тетралогия

Пехов Алексей Юрьевич
Страж
Фантастика:
фэнтези
9.11
рейтинг книги
Страж. Тетралогия

Ваше Сиятельство 2

Моури Эрли
2. Ваше Сиятельство
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Ваше Сиятельство 2

Шериф

Астахов Евгений Евгеньевич
2. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
6.25
рейтинг книги
Шериф

Сильнейший ученик. Том 1

Ткачев Андрей Юрьевич
1. Пробуждение крови
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Сильнейший ученик. Том 1

Небо для Беса

Рам Янка
3. Самбисты
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Небо для Беса

Авиатор: назад в СССР 10

Дорин Михаил
10. Покоряя небо
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Авиатор: назад в СССР 10

Сердце Дракона. Том 9

Клеванский Кирилл Сергеевич
9. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.69
рейтинг книги
Сердце Дракона. Том 9

Кодекс Охотника. Книга XIV

Винокуров Юрий
14. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XIV

Найди меня Шерхан

Тоцка Тала
3. Ямпольские-Демидовы
Любовные романы:
современные любовные романы
короткие любовные романы
7.70
рейтинг книги
Найди меня Шерхан

Неестественный отбор.Трилогия

Грант Эдгар
Неестественный отбор
Детективы:
триллеры
6.40
рейтинг книги
Неестественный отбор.Трилогия

Покоритель Звездных врат

Карелин Сергей Витальевич
1. Повелитель звездных врат
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Покоритель Звездных врат

Законы Рода. Том 4

Flow Ascold
4. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 4

Столичный доктор. Том III

Вязовский Алексей
3. Столичный доктор
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Столичный доктор. Том III

Энфис 4

Кронос Александр
4. Эрра
Фантастика:
городское фэнтези
рпг
аниме
5.00
рейтинг книги
Энфис 4