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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.04.2009, 18:08
mpjoke mpjoke вне форума
Прохожий
 
Регистрация: 05.04.2009
Сообщения: 8
Репутация: 10
Вопрос Отображение jpg картинок в программе на delphi

Получил задание и часть его такая:
1. У нас есть база в Aсcess. Она хранит какую то инфу и адрес к папке с картинками(абсолютный или относительный).
2. У нас есть программа на Delphi
При запуске мы подключаем базу через ADO, к примеру.
Начинаем просматривать базу. Видим какую то инфу и картинку соответствующую данной записи в базе. Мы можем заменить картинку и при этом в базу записывается новый адрес новой картинки.


Вопрос - как это можно сделать???

Идей нет.
Жду комментариев и советов... - как делать или где и что читать???
Оч надеюсь на помощь....
Ответить с цитированием
  #2  
Старый 05.04.2009, 19:10
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вот смотрите, маленький вариант:
В примере используется Таблица Sample (id:Autonumber,Context:Text;Picture:Text)
Код:
unit Unit11;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DBCtrls, DB, ADODB, ExtDlgs, StdCtrls, JPEG, Mask;

type
  TForm11 = class(TForm)
    Image1: TImage;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    DBNavigator1: TDBNavigator;
    DBEdit1: TDBEdit;
    DBMemo1: TDBMemo;
    Button1: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    procedure ADOTable1AfterScroll(DataSet: TDataSet);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form11: TForm11;

implementation

{$R *.dfm}

procedure TForm11.ADOTable1AfterScroll(DataSet: TDataSet);
begin
 if not ADOTable1.FieldByName('Picture').IsNull
 then Image1.Picture.LoadFromFile(ADOTable1.FieldValues['Picture']);
end;

procedure TForm11.Button1Click(Sender: TObject);
begin
 OpenPictureDialog1.FileName := VarToStr(DBEdit1.Field.Value);
 if not OpenPictureDialog1.Execute then Exit;
 DBEdit1.Field.Value := OpenPictureDialog1.FileName;
end;

end.
Код:
object Form11: TForm11
  Left = 0
  Top = 0
  Caption = 'Form11'
  ClientHeight = 161
  ClientWidth = 370
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Image1: TImage
    Left = 254
    Top = 8
    Width = 107
    Height = 113
    Center = True
    Proportional = True
    Stretch = True
  end
  object DBNavigator1: TDBNavigator
    Left = 8
    Top = 127
    Width = 240
    Height = 25
    DataSource = DataSource1
    TabOrder = 0
  end
  object DBEdit1: TDBEdit
    Left = 8
    Top = 8
    Width = 212
    Height = 21
    DataField = 'Picture'
    DataSource = DataSource1
    TabOrder = 1
  end
  object DBMemo1: TDBMemo
    Left = 8
    Top = 32
    Width = 240
    Height = 89
    DataField = 'Context'
    DataSource = DataSource1
    TabOrder = 2
  end
  object Button1: TButton
    Left = 223
    Top = 8
    Width = 25
    Height = 21
    Caption = '...'
    TabOrder = 3
    OnClick = Button1Click
  end
  object ADOConnection1: TADOConnection
    ConnectionString = 
      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\'#1061#1086#1079#1103#1080#1085'\Doc' +
      'uments\Demo.mdb;Persist Security Info=False;'
    LoginPrompt = False
    Mode = cmShareDenyNone
    Provider = 'Microsoft.Jet.OLEDB.4.0'
    Left = 96
    Top = 56
  end
  object ADOTable1: TADOTable
    Connection = ADOConnection1
    CursorType = ctStatic
    AfterScroll = ADOTable1AfterScroll
    TableName = 'Sample'
    Left = 128
    Top = 56
  end
  object DataSource1: TDataSource
    DataSet = ADOTable1
    Left = 160
    Top = 56
  end
  object OpenPictureDialog1: TOpenPictureDialog
    Left = 192
    Top = 56
  end
end
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 05.04.2009, 20:13
mpjoke mpjoke вне форума
Прохожий
 
Регистрация: 05.04.2009
Сообщения: 8
Репутация: 10
По умолчанию

Огромное спасибо.
Сейчас буду думать - как запустить.
Так все куда надо скопировал. F9 скомпилировалось.
Базу в Аксесс - набросал.
Нажимаю - открыть файл - сбрасывает с ошибкой.

У меня 7 Делфи, исходный текст на какой???
Ответить с цитированием
  #4  
Старый 05.04.2009, 20:29
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

D2009, но код несложный проблем вроде недолжно быть.
Вы Dfm-файл сделали?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 05.04.2009, 23:29
mpjoke mpjoke вне форума
Прохожий
 
Регистрация: 05.04.2009
Сообщения: 8
Репутация: 10
По умолчанию

Да, dfm и pas файлы....

Открыл новый проект и изменил dfm и pas файлы....
потом сохранил....

Там сначала конфликт имен был, но я это подправил....
Unit11 на Unit1....
Ответить с цитированием
  #6  
Старый 05.04.2009, 23:35
mpjoke mpjoke вне форума
Прохожий
 
Регистрация: 05.04.2009
Сообщения: 8
Репутация: 10
По умолчанию

Да, dfm и pas файлы....

Открыл новый проект и изменил dfm и pas файлы....
потом сохранил....

Там сначала конфликт имен был, но я это подправил....
Unit11 на Unit1....

Ошибка
Access violation at address 004ae9d2 in module Project1.exe. Read of address 00000000
Ответить с цитированием
  #7  
Старый 06.04.2009, 00:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,049
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Не создан какой-то объект, к которому происходит обращение.
Запусти в отладчике и скажи на какой строчке это происходит.
Ответить с цитированием
  #8  
Старый 06.04.2009, 08:47
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вы бы лучше наоборот, сначала сделали unit11, открыли его, а потом уже переименовывали, а сейчас может и вылазят эти конфликты. Я только-что в D7 проверил - все работает. Деле так:
Создал проект, перешед к коду программы, заменил код программы на первую половину из примера.
Переключился в дизайн формы, нажал Ctrl+F12 и заменил код формы на вторую половину из примера.
Преключаемся обратно Ctrl+F12. Все элементе на форме отрисоавываются. Сохраняем юнит под именем Unit11.
Открываем файл проекта, Project\View source и правим имена форм и юнитов.
Все.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 06.04.2009 в 09:30.
Ответить с цитированием
  #9  
Старый 06.04.2009, 08:56
mpjoke mpjoke вне форума
Прохожий
 
Регистрация: 05.04.2009
Сообщения: 8
Репутация: 10
По умолчанию

OpenPictureDialog1.FileName := VarToStr(DBEdit1.Field.Value);
Вот на эту строку ругается в Unit1...
Ответить с цитированием
  #10  
Старый 06.04.2009, 09:34
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Ругается, потому-что вы неактивировали Базу и таблицу в дизайнере. По уму, надо бы конечно это делать при старте программы.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #11  
Старый 06.04.2009, 18:54
mpjoke mpjoke вне форума
Прохожий
 
Регистрация: 05.04.2009
Сообщения: 8
Репутация: 10
По умолчанию

ааа, сейчас посмотрю, попробую....
спасибки....
Ответить с цитированием
  #12  
Старый 06.04.2009, 19:01
mpjoke mpjoke вне форума
Прохожий
 
Регистрация: 05.04.2009
Сообщения: 8
Репутация: 10
По умолчанию

Ага, ВСЁ РАБОТАЕТ!!!!
Урааа!!!

Большое СПАСИБО!!!!

Сча разберусь, как делать...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter