Добавить комментарий

Delphi

Меню видимости столбиков в cxGrid.

В PopupMenu создаём пункт, который будем наполнять столбиками. Для примера, назовем его ColumnItems.

Создаём метод заполнения этого пункта:

procedure TMain.FillCPM;
var
  I: Integer;
  tmi: TMenuItem;
begin
  ColumnItems.Clear; 
  // MainTV - это TableView, столбиками которого мы будем управлять.
  for I := 0 to MainTV.ColumnCount - 1 do
  begin
    // Создаём пункт меню
    tmi := TMenuItem.Create(MainPopup);
    tmi.Caption := MainTV.Columns[i].Caption; // Название из столбика.
    tmi.Checked := MainTV.Columns[i].Visible; // Видимость из столбика переносим 
                                              // в чекбокс пункта меню.
    tmi.OnClick := tmiClick; // Присваиваем обработчик клика по пункту.
    // и вставляем его.
    ColumnItems.Insert(i,tmi);
  end;
end;

 

Создаём обработчик кликов:

procedure TMain.tmiClick(Sender: TObject);
var
    i: integer;
begin
  // Переключаем чекбокс на пункте меню.
  (Sender as TMenuItem).Checked := not((Sender as TMenuItem).Checked);
  // Ищем нужный столбик.
  // MainTV - это TableView, столбиками котороны мы хотим управлять.
  for i := 0 to MainTV.ColumnCount-1 do
  begin
    // Если название столбика и пункта меню совпало
    if MainTV.Columns[i].Caption = (Sender as TMenuItem).Caption then
    begin
      // Устанавиваем видимость и уходим.
      MainTV.Columns[i].Visible := (Sender as TMenuItem).Checked;
      Exit;
    end;
  end;
end;

  Hint:
У PopupMenu лучше отключить свойство AutoHotkeys, чтобы оно не втыкало "&" в названия пунктов меню.

Метки:

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.
  • Вы можете цитировать другие сообщения, используя тэг [quote]

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.