![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Вопрос к профессионалом или тем кто сталкивался с такой проблемой: долго пытался прикрутить кнопку к ячейке стандартного 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
|
|||
|
|||
|
NumLock спасибо за подсказку куда нужно было капать. Разобрался. Все отлично работает. В DBGridEh (EhLib) намного шире возможности чем в стандартном DBGrid. Cоветую пользоваться этой библиотекой.
|
|
#6
|
||||
|
||||
|
Цитата:
![]() |