Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 083

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Здравствуйте, уважаемые эксперты!
Подскажите , пожалуйста!работаю с Delphi 7+ADO+Access как сделать чтобы когда Я нажимал на кнопку на форме в Delphi у меня появлялась окно , где я указываю путь к картинке , а после этого она добавляла в БД - таблицу, в поле у меня оно наз. фото(обычное текстовое)добавился путь к файлу...

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1. if (OpenPictureDialog1.Execute) then
  2. Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  3.  


stasz13 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: stasz13 (статус: Посетитель)
Вопрос отправлен: 12 марта 2011, 23:26
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 9; последнее сообщение — 14 марта 2011, 05:26; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 12 марта 2011, 23:49 [#1]:

Ты хочешь работать с базами данных, не зная самых азов. Это очень печально. Больше и сказать-то нечего...
Ещё 1 человек, который думает, что Delphi - это тыканье мышой по форме. Вдвойне печально. :(((
Хранить картинки отдельно от базы в файлах - это не есть комильфо. И это говорю я - чел, который не работает с базами.
Книжку бы тебе хорошую. Могу посоветоавть, кстати.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
stasz13

stasz13 (статус: Посетитель), 12 марта 2011, 23:58 [#2]:

давай посоветуй! ты имеешь в виду в BLOB , ну я так не знаю как домозговать, поэтому прошу совета можешь , подскажи!
min@y™

min@y™ (статус: Доктор наук), 13 марта 2011, 10:00 [#3]:

Цитата (stasz13):

ты имеешь в виду в BLOB

Ну да. Даже вместе с delphi идёт исходник демо-проги с блобами. А книжек тут у нас полно. А во всём интернете - гораздо больше.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
stasz13

stasz13 (статус: Посетитель), 13 марта 2011, 17:27 [#4]:

Если кто знает помогите, в свойствах компонента DBGrid --> OnDrowColumnCell --> пишу код

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
Image1.Picture.LoadFromFile(ADOTable1['фотография']);
Image1.Stretch:=true;
end;

end.

У меня две формы, выдат ошибку когда я пытаюсь на первой форме нажать Button
ошибка в неправильности ТИПОВ данных, я не знаю где ставится перевод может кто-нибудь подсказать, ну если я правильно понял конечно о типе...
ВОТ ошибка
'Could not convert variant of type (Null) into type (String)'. Process stoped. Use step of Run of to continue.
Егор

Егор (статус: 10-ый класс), 13 марта 2011, 20:52 [#5]:

ошибка потому что в базе в поле "фотография" нет информации о пути - поле пустое (NULL). если бы путь там был, картинка бы открылась. может быть :)
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Егор

Егор (статус: 10-ый класс), 13 марта 2011, 20:56 [#6]:

а если так:
Image1.Picture.LoadFromFile(ADOTable1['фотография'].AsString);
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
stasz13

stasz13 (статус: Посетитель), 13 марта 2011, 23:23 [#7]:

картинка открывается , просто после того как я нажимаю на кнопку с переходом на Form2 она выдает ошибку,
Image1.Picture.LoadFromFile(ADOTable1['фотография'].AsString);
тоже выдает ошибку... .AsString ---так нельзя написать видимо!
Егор

Егор (статус: 10-ый класс), 14 марта 2011, 05:07 [#8]:

А, ну так и правильно ошибка вылазит - событие-то DBGrid1DrawColumnCell. Оно возникает каждый раз, когда надо отрисовать ячейку. А ячеек в таблице (DBGrid) сколько? И открыта ли база в момент начала отрисовки? И где находится курсор, на какой записи? Судя по ошибке, курсор в этот момент находится на записи, которая пуста.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Егор

Егор (статус: 10-ый класс), 14 марта 2011, 05:26 [#9]:

Можно сделать проверку - если в поле нет данных, то картинку не загружать
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
                   DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if not ADOTable1['фотография'].IsNull then // или IsEmpty - не помню
  begin
    Image1.Picture.LoadFromFile(ADOTable1['фотография']);
    Image1.Stretch:=true;
  end
end;

Но мне сам код не нравится - загружать картинку из файла, а путь в базе. Путей-то много может быть, а компонент Image - один. Если картинку удалим, то опять же ошибка.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.04 сек.