|
#1
|
|||
|
|||
Добавление фото
Привет всем, я новичок, делаю небольшую картотеку пользователей
Как сделать чтобы на конкретную запись можно было добавить фото и чтобы оно отображалось. Таких фото до 5 штук добавить в БД, а там где оно отображается можно было пролистать их по порядку? База на БДЕ. И еще вопросик, как сложить к примеру два значения из БД и отобразить в каком нибудь лейбле? |
#2
|
|||
|
|||
Может быть лучше создать простую базу данных из одной таблицы (и без "фото"). Сначала потренироваться на ней. А затем усложнять ее по ходу.
|
#3
|
||||
|
||||
Цитата:
Код:
Table1.Edit; или Table1.Append; TBlobField(Table1.FieldByName('Field3')).LoadFromFile('c:\MyPhoto.bmp'); Table1.Post; Цитата:
Цитата:
Код:
Label1.Caption := IntToStr(Table1.FieldValues['Field1']+Table1.FieldValues['Field2']); Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
|||
|
|||
Цитата:
|
#5
|
||||
|
||||
Ну не писать же за вас всю программу. Это только пример записи картинки в БД, а уж какое имя файла вы в своей программе туда воткнете вам виднее.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
спасибо, понемножку разбираюсь, по поводу фото пока не разбирался сильно
Я могу складывать строчки из БД, но только лишь после того как они сохрянются туда, то есть надо сохранить введенное число, потом нажать "редактировать" и только тогда оно посчитается и запишется в нужную строчку в БД. Как то можно сделать чтобы эта цифра менялась сразу после того как нужные строчки получат свои значения? Получается как бы на этапе ввода, пока в базу они не попали ... |
#7
|
||||
|
||||
Я нуб, но примерно понял что хочешь...
В чём вводишь строки? Если что-то типа edit'ов, то попробуй OnKeyPress, после чего задавай как глобальную переменную... Иначе придумать ничего не могу. И то как это попробовал бы я, а не действительный подход к решению твоей задачи) |
#8
|
|||
|
|||
а в базе какой тип поля должен быть, я сделал тип G , ввожу фотку, она отображается в компоненте DBImage, который связан с полем типа G , но не сохраняется туда , потом исчезает когда нажимаю сохранить
Код:
procedure TForm1.Button4Click(Sender: TObject); begin if OpenPictureDialog1.Execute then begin dbImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName); end; end; Последний раз редактировалось Admin, 04.10.2009 в 14:55. |
#9
|
|||
|
|||
никто не подскажет?
|
#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
|
|||
|
|||
и еще ,как сделать чтобы загружаемое фото подгонялось под размер окна DBimage, а то фотка не меняется совсем и окошко показывает какую то ее часть
|
#12
|
||||
|
||||
Цитата:
Цитата:
ЗЫ: А вот что-бы с Jpeg работать можно было, надо просто подключить модуль JPEG. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 04.10.2009 в 15:31. |
#13
|
|||
|
|||
но он не все картинки маленькие берет, когда я умышленно уменьшаю, все равно ошибка
Где посмотреть параметры 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; Но мне так не нужно, удобнее через форму выбора файла! Но никак не получается.... Пока не научился сделать через форму выбора файла придется добавлять фотки из Paint'a Последний раз редактировалось Admin, 04.10.2009 в 15:49. |
#14
|
|||
|
|||
А на ADO, ACCESS эта схема подойдет?
|
#15
|
||||
|
||||
Настроить размер BLOBSIZE можно так:
Идете в панель управления, находите иконку BDE Administrator. Запускаете. Находите в списке алиасов ваш, через который вы к БД подключаетесь. Выбираете его и смотрите на параметр BLOBSIZE который по умолчанию равен 32, измените его скажем на 640. Перегрузите все приложения которые используют BDE, можно просто комп для надежности перегрузить. Теперь у вас будут приниматься без проблем довольно большие фотки. А через буфер когда вы вставляете, вы другим механизмом пользуетесь, потому и срабатывает без проблем. И кстати, рекомендуется при работе с буфером обмена, открывать и закрывать его, для этого методы Open/Close есть. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 06.10.2009 в 20:38. |