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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.11.2015, 13:50
Арни Арни вне форума
Прохожий
 
Регистрация: 17.11.2015
Сообщения: 3
Версия Delphi: Rad Studio xe4
Репутация: 10
По умолчанию Кнопка в ячейке DBgrid

Вопрос к профессионалом или тем кто сталкивался с такой проблемой: долго пытался прикрутить кнопку к ячейке стандартного DBGrid-а, но все без толку. После этого установил библиотеку компонентов EhLib. C DbGridEh
вроде все получилась, кнопку присвоил нужной ячейке но при клики на эту кнопку, кнопка самопроизвольно нажимается повторно. Если это Bug, то как его обойти?
Ответить с цитированием
  #2  
Старый 17.11.2015, 13:59
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

с DbGridEh не сталкивался, а в DBGrid кнопка (как и любой другой контрол) прикручивается без проблем. в интернете уже очень много лет полно примеров.

добавлено позже

oops, на раздел не обратил внимания
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 17.11.2015, 14:35
Арни Арни вне форума
Прохожий
 
Регистрация: 17.11.2015
Сообщения: 3
Версия Delphi: Rad Studio xe4
Репутация: 10
По умолчанию

Понятно, тема заезженная. Но действенного примера в нете я так и не нашел, кроме как этого http://www.skzimmelman.com/Articles/buttongrid.htm.
Мой код один в один, только с нажатием кнопки trouble
Код:
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
var ARect: TRect;
begin
   //Распологаем кнопку в столбце DbGridEh1 с индексом;
  If (Column.Index = 2) Then
  begin
    //Координаты ячейки DbGridEh1;
    ARect := DBGridEh1.CellRect(Column.Index,DBGridEh1.Row);

   // Присваиваем кнопку DBGridEh1;
   If BitBtn1.Parent <> DBGridEh1 Then
      BitBtn1.Parent := DBGridEh1 ;

   //Устанавливаем позицию равной поцизии ячейки слева;
   if (BitBtn1.Left <>ARect.Left) then
       BitBtn1.Left:=ARect.Left;

   //Устанавливаем позицию равной поцизии ячейки сверху;
   If (BitBtn1.Top <> ARect.Top) Then
      BitBtn1.Top := ARect.Top ;

   // Приравниваем ширину кнопки к ширине ячейки;
   If BitBtn1.Width<> (ARect.Right - ARect.Left) then
      BitBtn1.Width:= (ARect.Right - ARect.Left) ;

   // Приравниваем высоту кнопки к высоте ячейки;
   If (BitBtn1.Height <> (ARect.Bottom-ARect.Top)) Then
      BitBtn1.Height := (ARect.Bottom-ARect.Top);
   end;
end;

//Вызов сообщения;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  ShowMessage('Запись удалена');
end;
Админ: Пользуемся тегами для оформления кода!

Последний раз редактировалось Admin, 17.11.2015 в 19:12.
Ответить с цитированием
  #4  
Старый 17.11.2015, 15:30
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

на самом деле с кнопкой все гораздо проще:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  DBGrid1.Columns[0].ButtonStyle:=cbsEllipsis;
  DBGrid1.Columns[1].ButtonStyle:=cbsEllipsis;
  DBGrid1.OnEditButtonClick:=DBGrid1EditButtonClick;
end;

procedure TForm1.DBGrid1EditButtonClick(Sender: TObject);
begin
  ShowMessage(DBGrid1.SelectedField.FieldName);
end;
а вот с другим контролом нужно чуть побольше кода написать
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 17.11.2015, 17:57
Арни Арни вне форума
Прохожий
 
Регистрация: 17.11.2015
Сообщения: 3
Версия Delphi: Rad Studio xe4
Репутация: 10
По умолчанию Dbrid отрисовка кнопок в ячейках

NumLock спасибо за подсказку куда нужно было капать. Разобрался. Все отлично работает. В DBGridEh (EhLib) намного шире возможности чем в стандартном DBGrid. Cоветую пользоваться этой библиотекой.
Ответить с цитированием
  #6  
Старый 17.11.2015, 18:35
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Радость

Цитата:
Сообщение от Арни
В DBGridEh (EhLib) намного шире возможности чем в стандартном DBGrid. Cоветую пользоваться этой библиотекой.
ты не представляешь на сколько они шире в DevExpress
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 17.11.2015, 19:39
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

О да DevExpress с их cxGrid конечно великолепен. Но сразу приготовьтесь к выносу мозга при изучении примеров и демок возможностей компонентов.
Разработчики девок явно курят что-то мощное, но надо сказать результат впечатляющий от этого
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 17.11.2015, 19:39
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Num, поддерживаю
DevExpress - это что-то
Только вот где его взять для крайних версий - ХЗ. У меня есть версия, которая поддерживает XE3, для более поздних нету (хотя, честно сказать, не сильно и искал, только RuTracker проверял, там нету, бо как есть еще XE7, но я на ней только с ведроидом игрался, а там дефки не пляшут).
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter