Компонент Delphi StringGrid









                                           ГЛАВНАЯ           СВОЙСТВА           СОБЫТИЯ           ПРИЁМЫ  ПРОГРАММИРОВАНИЯ




Свойства StringGrid
11. Align
12. Anchors
13. BiDiMode
15. ColCount
16. RowCount
17. Color
19. Ctl3D
10. Cursor
15. DragKind
16. DragMode
17. Enabled
19. FixedCols
20. FixedRows
21. Font
23. Height
26. HelpType
27. Hint
28. Left
29. Name
30. Options
31. PopupMenu
33. ShowHint
34. TabOrder
35. TabStop
36. Tag
37. Top
38. Visible
39. Width




StringGrid Delphi

Свойство PopupMenu




   Свойство PopupMenu StringGrid Delphi определяет будет ли и какое контекстное меню появляться при щелчке правой кнопкой мышки. Свойство PopupMenu содержит имя компонента PopupMenu, который будет работать при вызове контекстного мено таблицы.

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

Стандартное 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

    Сайт из коллекции Компоненты Delphi    

    Карта сайта