Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2011, 13:31   #1
Sasha_S
Пользователь
 
Регистрация: 28.04.2011
Сообщений: 16
По умолчанию Изображение и кнопки для каждой строки таблицы БД

Всем привет.
Помогите, пожалуйста, реализовать в Delphi 2007 следующую конструкцию. В базе данных хранятся изображения. Нужно для каждой строки таблицы отображать изображение, сведения о нем и набор кнопок, запускающих его обработку. То есть, стандартный набор кнопок для каждой строки.
Из имеющихся компонентов ближе всего к тому, что хотелось бы получить, DBCtrlGrid. Но на DBCtrlGrid нельзя добавлять кнопки: "Control cannot be used in DBCtrlGrid". Начала разбираться с DBGridEh из EhLib, но пока не уверена, что это именно то, что нужно.
Подскажите, пожалуйста, как решить такую проблему. Допускаю, что думаю совсем не в том направлении
Sasha_S вне форума Ответить с цитированием
Старый 28.04.2011, 20:46   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

DBGridEh. Может многое. В колонку можно запихать сколько влезет кнопок (отображаются и действуют когда фокус ввода в ячейке колонки). Картинки в ячейках тоже можно отображать. Работает только с Dataset'ами (понятно, что через Datasource).
Прик вне форума Ответить с цитированием
Старый 03.05.2011, 09:33   #3
Sasha_S
Пользователь
 
Регистрация: 28.04.2011
Сообщений: 16
По умолчанию

Прик, спасибо за ответ. Кнопки в DBGridEh мне нравятся больше, чем то, что у меня в итоге получилось с DBCtrlGrid, но не устраивает то, что они
Цитата:
Сообщение от Прик Посмотреть сообщение
отображаются и действуют когда фокус ввода в ячейке колонки
Кнопки появляются, только когда запускается редактирование текущей ячейки - но мне не нужно, чтобы пользователь имел доступ к редактированию ячеек, к тому же для таблицы установлен dgRowSelect. Как я понимаю, это ограничение DBGridEh по-простому не обойти - или нет?

Кроме EhLib, нашлось еще два способа решения проблемы, именно по отрисовке кнопок на DBCtrlGrid (источник):

1. Чтобы разместить кнопку на DBCtrlGrid, нужно установить для ее свойства ControlStyle значение csReplicatable. Т.е. создается компонент-потомок TButton, единственное отличие которого - в значении этого свойства:
Код:
constructor TMyButton.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle + [csReplicatable];
end;
Этот первый способ я и использовала.

2. На DBCtrlGrid успешно размещаются панели, поэтому можно смоделировать кнопку с помощью TPanel, назначив обработчик по клику и настроив отрисовку нажатия-отжатия мыши:
Код:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   (Sender as TPanel).BevelOuter := bvLowered;
end;

procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   (Sender as TPanel).BevelOuter := bvRaised;
end;
При этом, возможно, придется потратить время на отладку поведения панели при незапланированных перемещениях мыши.

Последний раз редактировалось Sasha_S; 03.05.2011 в 09:58.
Sasha_S вне форума Ответить с цитированием
Старый 03.05.2011, 11:57   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Как я понимаю, это ограничение DBGridEh по-простому не обойти - или нет?
Не обойти. dgRowSelect отключает возможность редактирования.
Прик вне форума Ответить с цитированием
Старый 03.05.2011, 18:13   #5
Sasha_S
Пользователь
 
Регистрация: 28.04.2011
Сообщений: 16
По умолчанию

Жаль. Тогда оставлю как есть, а EhLib буду иметь в виду. Спасибо! Тема закрыта.
Sasha_S вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Начало каждой строки таблицы с новой страницы kcgmizin Microsoft Office Word 5 25.06.2010 18:02
Отчет для каждой записи таблицы lilu1559 Microsoft Office Access 2 19.05.2010 18:16
Вычислить среднеарифметическое значение элементов для каждой строки матрицы в Delphi Any13 Помощь студентам 3 09.03.2010 18:29
Удаление отступов в последней ячейке каждой строки в каждой таблице Busine2009 Microsoft Office Word 7 06.06.2009 12:27
всплывающие подсказки для каждой строки CListBox! mahsus Общие вопросы .NET 0 01.04.2008 08:41