StringGrid Delphi
Свойство PopupMenu
Свойство PopupMenu StringGrid Delphi определяет будет ли и какое контекстное меню появляться при щелчке правой кнопкой мышки. Свойство PopupMenu содержит имя компонента PopupMenu, который будет работать при вызове контекстного мено таблицы.
В Инспекторе Объектов свойство PopupMenu это раскрывающийся список, содержащий все компоненты PopupMenu, находящиеся на Форме. Можно выбрать один из них, или оставить поле PopupMenu в Инспекторе Объектов пустым. В этом случае в качестве контекстного меню будет использовано стандартное текстовое контекстное меню Windows:

Даже если на этапе разработки свойство PopupMenu не было настроено, то в этом случае можно настроить свойство PopupMenu программно, например, по событию OnCreate Формы:
StringGrid1.PopupMenu:=PopupMenu1;
Программное управление также применяется для придания таблице различных контекстных меню, каждое из которых используется в том или ином случае. Например, если содержимое ячейки пусто, должен использоваться компонент PopupMenu1, если содержит текст, то PopupMenu2.
В этом случае код изменения свойства PopupMenu таблицы должен выполняться при нажатии кнопки мыши и нахождении её в нижнем положении, то есть по событию OnMouseDown, так как контекстное меню вызывается при переходе правой кнопки мыши из нижнего положения в верхнее, а к этому моменту свойство PopupMenu уже должно быть изменено:
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
var ACol, ARow: Integer;
begin
with StringGrid1 do
begin
MouseToCell(X, Y, ACol, ARow);
Col:=ACol; Row:=ARow;
if Cells[ACol, ARow]=''
then PopupMenu:=PopupMenu1
else PopupMenu:=PopupMenu2;
end;
end;
Тот же код нужно использовать, если контекстного меню у таблицы StringGrid вообще не должно быть, только вместо одного из компонентов PopupMenu должно использоваться ключевое слово nil:
StringGrid1.PopupMenu:=nil;
При спользовании ключевого слова nil у таблицы не будет вообще никакого контекстного меню, даже стандартного текстового контекстного меню Windows.
Читайте также:
- Свойство ShowHint StringGrid Delphi