Властивість popupmenu stringgrid delphi

властивість PopupMenu


Властивість PopupMenu StringGrid Delphi визначає чи буде і яке контекстне меню з'являтися при натисканні правою кнопкою мишки. Властивість PopupMenu містить ім'я компонента PopupMenu, який буде працювати при виклику контекстного мено таблиці.

В інспектор об'єктів властивість PopupMenu це список, що розкривається, який містить всі компоненти PopupMenu, що знаходяться на Формі. Можна вибрати один з них, або залишити поле PopupMenu в інспектор об'єктів порожнім. У цьому випадку в якості контекстного меню буде використано стандартне текстове контекстне меню Windows:

Властивість popupmenu stringgrid delphi

Навіть якщо на етапі розробки властивість PopupMenu не було налаштоване, то в цьому випадку можна налаштувати властивість PopupMenu програмно, наприклад, за подією OnCreate Форми:

Програмне управління також застосовується для додання таблиці різних контекстних меню, кожне з яких використовується в тому чи іншому випадку. Наприклад, якщо вміст комірки порожньо, повинен використовуватися компонент 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:

При Використання ключового слова nil у таблиці не буде взагалі ніякого контекстного меню, навіть стандартного текстового контекстного меню Windows.

Схожі статті