IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> База вопросов
sheka
сообщение 6.02.2010 20:05
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Мне нужно сделать тест. Базу вопросов хочу хранить как file of record. Проблема заключается в том, что в тесте должны быть картинки. Хотел сделать как поле записи. Но вот проблема: в файл не записывается ни поле :TImage ни :TPicture ни даже :TBitmap.
Как это можно осуществить?

Сообщение отредактировано: sheka - 6.02.2010 20:06
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 7.02.2010 2:58
Сообщение #2


Гость






Цитата
то что я там заметил - меня особо не обрадовало: составление таблиц, сортировки по параметрам итд.. "На готовенькое" не попал.
blink.gif А на что ты рассчитывал попасть? На готовую программу? smile.gif

Чего там делать? Открываешь MS Access, создаешь одну таблицу, содержащую как минимум одно поле типа OLEObject - я назвал его image - (в нем будет храниться изображение. Если тебе надо еще что-то - создавай сразу и все остальное).

Все поля, которые нужны - создал? Сохраняешь БД, и выходишь из Access-а, вся дальнейшая работа - из Дельфи. Сначала надо связать базу с твоей программой. Для этого на форму положим компонент TADOConnection (из раздела DbGo, у меня Д2009, поэтому, извини, все дальнейшие места расположения компонентов я буду приводить именно из этой версии), компонент TADOTable (тоже DbGo), и TDataSource (из Data Access)...

Вот тут лежит Видео, около 2.5 Мб, показывающее, как и в какой последовательности надо подключать базу к проекту на Дельфи (это было давно сделано, почти 2 года назад, просто сейчас оно оказалось нужно smile.gif )

Подключил все, DBGrid показывает пустые ячейки? Прекрасно... Теперь можно их заполнять. Чтоб занести текст - можно прямо использовать DBGrid (т.е., прямо в нем и печатать). Картинки - да пожалуйста:

// 1. Из TImage в текущую запись БД:
procedure TForm1.Button1Click(Sender: TObject);
var memStr: TMemoryStream;
begin
memStr := TMemoryStream.Create;
try
Image1.Picture.Graphic.SaveToStream(memStr);
memStr.Seek(0, soFromBeginning);
DBGrid1.DataSource.DataSet.Edit;
TBlobField(DBGrid1.DataSource.DataSet.FieldByName('image')).LoadFromStream(memStr);
DBGrid1.DataSource.DataSet.Post;
finally
memStr.Free;
end;
end;

// 2. Из текущей записи БД назад в TImage - легко:
procedure TForm1.Button2Click(Sender: TObject);
var
bStream: TADOBlobStream;
bm: TBitmap;
begin
if not DBGrid1.DataSource.DataSet.FieldByName('image').IsNull then
begin
bStream := TADOBlobStream.Create(TBlobField(DBGrid1.DataSource.DataSet.FieldByName('image')), bmRead);
try
bm := TBitmap.Create;
bm.LoadFromStream(bStream);
Image2.Picture.Bitmap.Assign(bm); // Это я для теста гружу в ДРУГОЙ Image
bm.Free;
finally
bStream.Free;
end;
end;
end;


Ну, для начала тебе этого должно хватить... smile.gif

Цитата
Что такое АV?
Это Access Violation - запрет доступа.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
sheka   База вопросов   6.02.2010 20:05
volvo   По разному можно. Например, выбросить из головы же...   6.02.2010 20:18
sheka   Мне это надо в Дельфях... Можете набросать пример...   6.02.2010 22:43
volvo   Чего это? У тебя ж файл, который типизированный, н...   6.02.2010 23:38
sheka   Я с базами данных вообще никогда не работал. Слыш...   7.02.2010 0:19
volvo   :blink: А на что ты рассчитывал попасть? На готов...   7.02.2010 2:58
Archon   sheka, база данных - это правильное решение, с ним...   7.02.2010 6:50
sheka   Ну как минимум на пример :) Archon, именно в так...   7.02.2010 14:03
Client   а можно вопрос? :) как организовать фильтрацию дан...   7.02.2010 20:11
volvo   Фильтруй, кто тебе запрещает? procedure TForm1.Bu...   7.02.2010 21:04
Client   спасибо   7.02.2010 21:15
Client   что-то сразу не заметил QuotedStr(s);Что она делае...   9.02.2010 13:07
VolvoGuest   Ничего особенного. Просто преобразует входную стро...   9.02.2010 13:20
Client   хитро... раньше вставлял апостроф с помощью chr(),...   9.02.2010 13:30
sheka   А как узнать индекс выделенной записи в DBGrid? Е...   10.02.2010 0:10
volvo   А можно глупый вопрос? "А зачем?" Нет т...   10.02.2010 0:45
sheka   Например, удалить выделенную запись из базы. Так...   10.02.2010 1:18
volvo   А для этого ни разу не надо знать номер строки... ...   10.02.2010 2:17
sheka   Опять столкнулся с проблемой. Точнее с -ами))) У ...   10.02.2010 20:33
volvo   :blink: Поле типа Memo (описанное как Memo в Acce...   10.02.2010 20:58
sheka   Я текстовым пользуюсь), чтобы красиво в таблице в...   11.02.2010 1:36
volvo   У меня в Д2009 присутствуют свойства Proportional ...   11.02.2010 2:09
sheka   Надо бы вопросы выбирать из БД рандомно. Как это о...   15.02.2010 20:48
Client   ADOTable1.RecNo и ADOTable1.RecordCount - это теку...   15.02.2010 20:54
sheka   это текущая запись и количество записей. Мне надо...   15.02.2010 21:00
volvo   Прекрасно работает и на Win7 тоже. procedure TFo...   15.02.2010 22:21
sheka   http://www.cyberguru.ru/delphi-sources/db-...olzuy...   15.02.2010 22:37
volvo   Хм... Ну, обойдись без него, просто не клади его н...   16.02.2010 0:15
sheka   Почему при перемещении по DataSource информация в ...   4.03.2010 21:22
Client   проект не компилится, если закомментировать то не ...   4.03.2010 21:39
sheka   проект не компилится, если закомментировать то не...   4.03.2010 21:45
Client   Путь к базе поменял в AdoConnection. procedure Nex...   4.03.2010 22:03
sheka   Забыл видимо))), но проблема не в этом. Комп гл...   4.03.2010 22:09
Client   запустилось... :) хм, если добавить в твой проект ...   4.03.2010 22:21
sheka   запустилось... :) хм, если добавить в твой проект...   4.03.2010 22:22
Client   создал заново проект, добавил твою базу, кинул на ...   4.03.2010 22:30
sheka   Я думал, что проект мог быть "битым". Та...   4.03.2010 23:01
sheka   volvo, Client, большое спасибо! Программу напи...   15.03.2010 22:14


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 9:24
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"