Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.09.2009, 23:32
letair letair вне форума
Прохожий
 
Регистрация: 21.09.2009
Сообщения: 33
Репутация: 10
По умолчанию Добавление фото

Привет всем, я новичок, делаю небольшую картотеку пользователей
Как сделать чтобы на конкретную запись можно было добавить фото и чтобы оно отображалось. Таких фото до 5 штук добавить в БД, а там где оно отображается можно было пролистать их по порядку? База на БДЕ.

И еще вопросик, как сложить к примеру два значения из БД и отобразить в каком нибудь лейбле?
Ответить с цитированием
  #2  
Старый 23.09.2009, 01:44
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Может быть лучше создать простую базу данных из одной таблицы (и без "фото"). Сначала потренироваться на ней. А затем усложнять ее по ходу.
Ответить с цитированием
  #3  
Старый 23.09.2009, 02:31
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
Как сделать чтобы на конкретную запись можно было добавить фото...
Например так:
Код:
Table1.Edit; или Table1.Append;
 TBlobField(Table1.FieldByName('Field3')).LoadFromFile('c:\MyPhoto.bmp');
 Table1.Post;
Цитата:
... и чтобы оно отображалось
Добавьте на форму компонент TDBImage, свяжите его с полем которое фотку хранит.
Цитата:
И еще вопросик, как сложить к примеру два значения из БД и отобразить в каком нибудь лейбле?
Например так:
Код:
Label1.Caption := IntToStr(Table1.FieldValues['Field1']+Table1.FieldValues['Field2']);
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 25.09.2009, 20:39
letair letair вне форума
Прохожий
 
Регистрация: 21.09.2009
Сообщения: 33
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Например так:
Код:
Table1.Edit; или Table1.Append;
 TBlobField(Table1.FieldByName('Field3')).LoadFromFile('c:\MyPhoto.bmp');
 Table1.Post;

Добавьте на форму компонент TDBImage, свяжите его с полем которое фотку хранит.

[/code]
А почему только с c:\MyPhoto.bmp, а если у меня база данных клиентов с фото, там разные файлы изображений
Ответить с цитированием
  #5  
Старый 26.09.2009, 23:33
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ну не писать же за вас всю программу. Это только пример записи картинки в БД, а уж какое имя файла вы в своей программе туда воткнете вам виднее.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 29.09.2009, 22:20
letair letair вне форума
Прохожий
 
Регистрация: 21.09.2009
Сообщения: 33
Репутация: 10
По умолчанию

спасибо, понемножку разбираюсь, по поводу фото пока не разбирался сильно

Я могу складывать строчки из БД, но только лишь после того как они сохрянются туда, то есть надо сохранить введенное число, потом нажать "редактировать" и только тогда оно посчитается и запишется в нужную строчку в БД. Как то можно сделать чтобы эта цифра менялась сразу после того как нужные строчки получат свои значения? Получается как бы на этапе ввода, пока в базу они не попали ...
Ответить с цитированием
  #7  
Старый 30.09.2009, 01:02
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
По умолчанию

Я нуб, но примерно понял что хочешь...
В чём вводишь строки? Если что-то типа edit'ов, то попробуй OnKeyPress, после чего задавай как глобальную переменную... Иначе придумать ничего не могу. И то как это попробовал бы я, а не действительный подход к решению твоей задачи)
Ответить с цитированием
  #8  
Старый 30.09.2009, 11:45
letair letair вне форума
Прохожий
 
Регистрация: 21.09.2009
Сообщения: 33
Репутация: 10
По умолчанию

а в базе какой тип поля должен быть, я сделал тип G , ввожу фотку, она отображается в компоненте DBImage, который связан с полем типа G , но не сохраняется туда , потом исчезает когда нажимаю сохранить
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
 if OpenPictureDialog1.Execute
 then
  begin

dbImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
   
  end;
end;
Admin: Пользуемся тегами!

Последний раз редактировалось Admin, 04.10.2009 в 14:55.
Ответить с цитированием
  #9  
Старый 04.10.2009, 08:39
letair letair вне форума
Прохожий
 
Регистрация: 21.09.2009
Сообщения: 33
Репутация: 10
По умолчанию

никто не подскажет?
Ответить с цитированием
  #10  
Старый 04.10.2009, 09:42
letair letair вне форума
Прохожий
 
Регистрация: 21.09.2009
Сообщения: 33
Репутация: 10
По умолчанию

procedure TForm1.Button4Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute
then
begin
Table1.Edit;
// TBlobField(Table1.FieldByName('Foto1')).LoadFromFi le(OpenPictureDialog1.FileName); // работает, но сохраняет только если загружаю некие мелкие картинки в формате bmp, когда фотку меняю расширение на bmp - выходит ошибка Image invalid, уменьшаю ее в размерах - та же ошибка.

dbImage1.Picture.LoadFromFile(OpenPictureDialog1.F ileName); //то же самое что и выше, сохраняет ту же самую мелкую картинку, остальные подобные картинки почему то выдает ошибку, не понятно какой параметр изображений ему не нравится....Если убираю ниже команду Table1.Post; то загружает и выдает изображение всех фоток подряд, но они исчезают как только нажимаю "Сохранить". А так же они не появляются при загрузке в DBImage если активна команда Table1.Post;

// Table1.Post;
end;
end;

Помогите, в чем тут проблема??? работает на какою то долю процентов
Ответить с цитированием
  #11  
Старый 04.10.2009, 09:47
letair letair вне форума
Прохожий
 
Регистрация: 21.09.2009
Сообщения: 33
Репутация: 10
По умолчанию

и еще ,как сделать чтобы загружаемое фото подгонялось под размер окна DBimage, а то фотка не меняется совсем и окошко показывает какую то ее часть
Ответить с цитированием
  #12  
Старый 04.10.2009, 15:28
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
работает, но сохраняет только если загружаю некие мелкие картинки в формате bmp
Скорее всего связано с тем, что вы подключаетесь через BDE а там в настройках подключения параметр BLOBSIZE имеет смешной размер.
Цитата:
и еще ,как сделать чтобы загружаемое фото подгонялось под размер окна DBimage, а то фотка не меняется совсем и окошко показывает какую то ее часть
Подогнать можно с помощью свойств Stretch,Proportional в DBImage.

ЗЫ: А вот что-бы с Jpeg работать можно было, надо просто подключить модуль JPEG.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 04.10.2009 в 15:31.
Ответить с цитированием
  #13  
Старый 04.10.2009, 15:47
letair letair вне форума
Прохожий
 
Регистрация: 21.09.2009
Сообщения: 33
Репутация: 10
По умолчанию

но он не все картинки маленькие берет, когда я умышленно уменьшаю, все равно ошибка

Где посмотреть параметры BDE?

Я реализовал почти то что хотел но через одно неудобство с помощью этого кода можно сохранить в базу любую картинку любого размера но только из Буфера! то есть из любого граф. редактора, к примеру из Paint
Код:
procedure TForm1.Button4Click(Sender: TObject);
var
  C: TClipboard;
begin
  C := TClipboard.Create;
  try
    if Clipboard.HasFormat(CF_BITMAP) then
  DBImage1.PasteFromClipboard

    else
      ShowMessage('Буфер обмена не содержит изображения!');
  finally
    C.Free;
 Image2.Picture.Bitmap.Assign(Table1.fieldbyname('foto1'));

end;

end;
Admin: Напоминаю про теги, при рецедиве последуют санкции.

Но мне так не нужно, удобнее через форму выбора файла! Но никак не получается.... Пока не научился сделать через форму выбора файла придется добавлять фотки из Paint'a

Последний раз редактировалось Admin, 04.10.2009 в 15:49.
Ответить с цитированием
  #14  
Старый 06.10.2009, 17:47
Slesar Slesar вне форума
Прохожий
 
Регистрация: 05.10.2009
Сообщения: 6
Репутация: 10
По умолчанию

А на ADO, ACCESS эта схема подойдет?
Ответить с цитированием
  #15  
Старый 06.10.2009, 20:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Настроить размер BLOBSIZE можно так:
Идете в панель управления, находите иконку BDE Administrator. Запускаете. Находите в списке алиасов ваш, через который вы к БД подключаетесь. Выбираете его и смотрите на параметр BLOBSIZE который по умолчанию равен 32, измените его скажем на 640. Перегрузите все приложения которые используют BDE, можно просто комп для надежности перегрузить. Теперь у вас будут приниматься без проблем довольно большие фотки.
А через буфер когда вы вставляете, вы другим механизмом пользуетесь, потому и срабатывает без проблем.
И кстати, рекомендуется при работе с буфером обмена, открывать и закрывать его, для этого методы Open/Close есть.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 06.10.2009 в 20:38.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter