|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Кнопка в ячейке DBgrid
Вопрос к профессионалом или тем кто сталкивался с такой проблемой: долго пытался прикрутить кнопку к ячейке стандартного DBGrid-а, но все без толку. После этого установил библиотеку компонентов EhLib. C DbGridEh
вроде все получилась, кнопку присвоил нужной ячейке но при клики на эту кнопку, кнопка самопроизвольно нажимается повторно. Если это Bug, то как его обойти? |
#2
|
||||
|
||||
с DbGridEh не сталкивался, а в DBGrid кнопка (как и любой другой контрол) прикручивается без проблем. в интернете уже очень много лет полно примеров.
добавлено позже oops, на раздел не обратил внимания Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Понятно, тема заезженная. Но действенного примера в нете я так и не нашел, кроме как этого 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
|
||||
|
||||
на самом деле с кнопкой все гораздо проще:
Код:
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
|
|||
|
|||
Dbrid отрисовка кнопок в ячейках
NumLock спасибо за подсказку куда нужно было капать. Разобрался. Все отлично работает. В DBGridEh (EhLib) намного шире возможности чем в стандартном DBGrid. Cоветую пользоваться этой библиотекой.
|
#6
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |
#7
|
||||
|
||||
О да DevExpress с их cxGrid конечно великолепен. Но сразу приготовьтесь к выносу мозга при изучении примеров и демок возможностей компонентов.
Разработчики девок явно курят что-то мощное, но надо сказать результат впечатляющий от этого Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#8
|
|||
|
|||
Num, поддерживаю
DevExpress - это что-то Только вот где его взять для крайних версий - ХЗ. У меня есть версия, которая поддерживает XE3, для более поздних нету (хотя, честно сказать, не сильно и искал, только RuTracker проверял, там нету, бо как есть еще XE7, но я на ней только с ведроидом игрался, а там дефки не пляшут). |