|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Buttons в StringGrid?
Здравствуйте! Есть такая проблема: требуется вставить в ячейки Stringgridа кнопки, так как на картинке
Собсна вставить кнопки не проблема - сейчас это делается таким кодом: Код:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); var NewButton: TButton; Rect: TRect; begin NewButton := TButton.Create(Self); NewButton.Caption:='+'; NewButton.Parent := Self; Form1.StringGrid1.Objects[ACol,ARow] := NewButton; Rect := Form1.StringGrid1.CellRect(ACol,ARow); NewButton.Left := Form1.StringGrid1.Left + Rect.Left+2; NewButton.Top := Form1.StringGrid1.Top + Rect.Top+2; NewButton.Width := Rect.Right - Rect.Left; NewButton.Height := Rect.Bottom - Rect.Top; NewButton.Visible := True; end; Проблема в том, как получить доступ к событиям onClick этих кнопок в дальнейшем? Заранее спасибо! |
#2
|
|||
|
|||
Цитата:
Присваивать событие в момент создания. И устанавливать свойство Tag. В Tag пишешь номер, уникально идентифицирующий кнопку. Событие присваиваешь всем кнопкам одно и то же, а внутри события по значению свойства Tag разбираешься что за кнопка. |
#3
|
|||
|
|||
Цитата:
Ага, с Tag всё ясно теперь, а каким образом присвоить событие в момент создания? |
#4
|
|||
|
|||
создай процку, соотаетсвующую формату обработчика события (внутри класса) и просто присвой свойство OnClick ее.
Код:
type TForm1 = class(TForm) ... procedure MyOnClick(Sender : TObject); ... implementation ... NewButton.OnClick := MyOnClick; |
#5
|
|||
|
|||
Ok! Теперь всё ясно, спасибо за оперативность!
|
#6
|
|||
|
|||
А вот у меня почему-то не срабатывает обработчик события OnClick для кнопок в StringGrid'е
Пробовал даже кидать на форму кнопку, ей прописывать обработчик и уже этот обработчик прописывал для своих кнопок, и все равно не прокатывает. P.S. Может и не важно, но у меня Delphi CodeGear 2009 P.P.S. Попробовал создать в run-time кнопку, которая принадлежит форме, прописал все то же самое как и кнопкам в StringGrid'е - обработчик работает... А вот с кнопками в самом StringGrid - нет... Последний раз редактировалось Veresk, 19.03.2009 в 13:31. |
#7
|
|||
|
|||
Вот ведь... оказалось я тупанул...
Я при создании кнопки родителем указал сам StringGrid. Но! StringGrid не имеет оконной функции (это не окно), поэтому все сообщения для кнопки уходят в пустоту. Все будет работать только в том случае, если разбор сообщений будет вести окно с функцией - обработчиком сообщений. Соответственно, указав родителем кнопки саму форму - все работает. |