powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
25 сообщений из 25, страница 1 из 1
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39504871
Есть cxGrid, который находится на определённой вкладке, в нём необходимо разрешить переключать возможные TableView пользователю.

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

Делать свои кнопочки или списки для переключения я не хочу, чревато морем багов.

Кстати, в дизайн-тайме всё это очень просто делается.
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39504880
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть. Можно включить отображение вкладок, через которые пользователь будет переключать уровни с разными представлениями.

Картинка из интернетов:
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39504899
JaDi, спасибо, но у меня все Expand'ы отключены (плюсиков нету).
Нужно просто заменить TableView Level'а 1 на другой.
Level 2 я не буду использовать.

Ну, поэтому указанный пример не помогает, вкладок возможного выбора Level'а 1 не появляется :(
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39504902
На самом cxGrid'е настройка дала какие-то вкладки слева, но они пустые.
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39504906
Собственно говоря, как теперь этот перечень возможных вкладок заполнить?
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39504939
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хозяин русского леса,

Чтобы был результат, надо добавить несколько уровней (levels).
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39504951
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39504991
JaDi и DimaBr, спасибо, результат подходит для задачи, но получается, что нет стандартного переключения TableView на Level'е в runtime.

Наверно это связано с "тяжестью" грида DevExpress...

Ну да ладно, оставим это на их совести. Ещё раз спасибо!
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505003
kv67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
cxGrid1.ActiveLevel := cxGrid1Level1;
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505009
Жытель Гондураса
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хозяин русского лесаJaDi и DimaBr, спасибо, результат подходит для задачи, но получается, что нет стандартного переключения TableView на Level'е в runtime.

Наверно это связано с " тяжестью " грида DevExpress...

Ну да ладно, оставим это на их совести. Ещё раз спасибо!

А сколько он потянет записей если на хорошем компе?
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505018
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жытель Гондураса,

грид довольно шустро работает, если его большим количеством колонок (под пол сотни, например) и отрисовками не перенагружатт (иначе при скролле будут заметны подтормаживания). У меня были проекты, где по 100к записей выводилось с полноценным поиском и фильтрацией, и норм было. Плюс там есть спец режимы работы с большими данными (будет фетчить данные в процессе скролла списка, как на клиенте, так и на стороне сервера).
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505028
kv67,
опять же меняем заранее созданный Level.
А возможности поменять у одного Level'а TableView нет.

Хардкод по кнопочке типа:

Код: pascal
1.
cxGridLevel.GridView := ... 



даже пробовать не хочу, не жизнеспособен будет.

То есть у юзера нет ничего аналогичного этому:
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505030
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Хозяин русского лесаkv67,
опять же меняем заранее созданный Level.
А возможности поменять у одного Level'а TableView нет.

Хардкод по кнопочке типа:

Код: pascal
1.
cxGridLevel.GridView := ... 




даже пробовать не хочу, не жизнеспособен будет
почему нежизнеспособен ?
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505045
defecator,
Уже пару лет борюсь с DevExpress и пришёл к выводу, что лучше пользоваться стандартными средствами.
Какие-то попытки хардкодить часто приводили к провалам :)

Оно то может и будет работать, но в каком-нибудь случае, например, настроенной фильтрации и сортировке точно грохнет access violation.

В общем, желания всё это тестить (переключение TableView) нет, а решение с несколькими Level'ами, хоть и на мой взгляд слабенькое, но есть.
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505049
kv67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно добавить на форму TcxTabControl с тремя tab, на него cxGrid, в гриде 3 level.

На onChange TabControl меняем активный level.

Пользователь выбирает нужную ему закладку и получает требуемый View.

Не то?
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505053
kv67,
Похоже на то, надо попробовать.
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505055
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Хозяин русского лесаdefecator,
Уже пару лет борюсь с DevExpress и пришёл к выводу, что лучше пользоваться стандартными средствами.
Какие-то попытки хардкодить часто приводили к провалам :)


это зависит от квалификации программиста

Хозяин русского лесаОно то может и будет работать, но в каком-нибудь случае, например, настроенной фильтрации и сортировке точно грохнет access violation.

значит, ты что-то сделал не так.
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505058
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorпочему нежизнеспособен ?Видимо ОБС.
Хозяин русского лесаУже пару лет борюсь с DevExpress и пришёл к выводу, что лучше пользоваться стандартными средствами.
Какие-то попытки хардкодить часто приводили к провалам :)Обратился бы в саппорт - может уму разуму поучили бы (по крайней мере в работе с TcxGrid)
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505066
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хозяин русского леса но получается, что нет стандартного переключения TableView на Level'е в runtime.
Что значит НЕТ ?
Я же вас скрин приложил, где СТАНДАРТНОЕ переключение между Вьюшками
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505067
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотите реализовать через меню ? Скройте ТАБЫ и динамически наполните Popup перечнем Вьюшек
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505084
defecatorэто зависит от квалификации программиста

значит, ты что-то сделал не так.

Честно говоря считаю, что в продукте, за который в минималке просят почти штуку баксов, не надо ничего доделывать по всяким там закладочкам и стилям, а пользоваться стандартными методами.

Хотя может я не прав и может быть это не стандартное требование.
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505086
white_niggerВидимо ОБС.
Обратился бы в саппорт - может уму разуму поучили бы (по крайней мере в работе с TcxGrid)

И проверять и писать в суппорт (на адском языке) лень
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505091
DimaBrХотите реализовать через меню ? Скройте ТАБЫ и динамически наполните Popup перечнем Вьюшек
Да, но вопрос был про СТАНДАРТНЫЙ попап с перечнем, а так можно сделать и попап с перечнем TableView, и, как предлагал defecator, пробовать менять GridView.
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505281
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хозяин русского лесаДа, но вопрос был про СТАНДАРТНЫЙ попап с перечнем, а так можно сделать и попап с перечнем TableView, и, как предлагал defecator, пробовать менять GridView.
Стандартный - ТАБы, а ПОПАП - это нестандартный
...
Рейтинг: 0 / 0
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
    #39505919
Hammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форма:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
object frmcxGrid: TfrmcxGrid
  Left = 0
  Top = 0
  ClientHeight = 311
  ClientWidth = 643
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object cxgrd1: TcxGrid
    Left = 0
    Top = 0
    Width = 643
    Height = 311
    Align = alClient
    PopupMenu = pm1
    TabOrder = 0
    LevelTabs.Style = 8
    LookAndFeel.Kind = lfOffice11
    object cxgrdbtblvw1: TcxGridDBTableView
      Navigator.Buttons.CustomButtons = <>
      DataController.DataSource = ds1
      DataController.Summary.DefaultGroupSummaryItems = <>
      DataController.Summary.FooterSummaryItems = <>
      DataController.Summary.SummaryGroups = <>
      OptionsCustomize.ColumnGrouping = False
      OptionsData.CancelOnExit = False
      OptionsData.Deleting = False
      OptionsData.DeletingConfirmation = False
      OptionsData.Editing = False
      OptionsData.Inserting = False
      OptionsView.GroupByBox = False
    end
    object cxgrdbtblvw2: TcxGridDBTableView
      Navigator.Buttons.CustomButtons = <>
      DataController.DataSource = ds2
      DataController.Summary.DefaultGroupSummaryItems = <>
      DataController.Summary.FooterSummaryItems = <>
      DataController.Summary.SummaryGroups = <>
      OptionsData.CancelOnExit = False
      OptionsData.Deleting = False
      OptionsData.DeletingConfirmation = False
      OptionsData.Editing = False
      OptionsData.Inserting = False
      OptionsView.GroupByBox = False
    end
    object cxgrdbtblvw3: TcxGridDBTableView
      Navigator.Buttons.CustomButtons = <>
      DataController.DataSource = ds3
      DataController.Summary.DefaultGroupSummaryItems = <>
      DataController.Summary.FooterSummaryItems = <>
      DataController.Summary.SummaryGroups = <>
      OptionsData.CancelOnExit = False
      OptionsData.Deleting = False
      OptionsData.DeletingConfirmation = False
      OptionsData.Editing = False
      OptionsData.Inserting = False
      OptionsView.GroupByBox = False
    end
    object cxgrdlvl1: TcxGridLevel
      GridView = cxgrdbtblvw1
    end
  end
  object ds1: TDataSource
    DataSet = qry1
    Left = 552
    Top = 8
  end
  object ds2: TDataSource
    DataSet = qry2
    Left = 552
    Top = 64
  end
  object ds3: TDataSource
    DataSet = qry3
    Left = 552
    Top = 112
  end
  object con1: TADOConnection
    KeepConnection = False
    LoginPrompt = False
    Provider = 'SQLNCLI11.1'
    Left = 456
    Top = 8
  end
  object qry1: TADOQuery
    Connection = con1
    CursorType = ctStatic
    Parameters = <>
    Left = 456
    Top = 64
  end
  object qry2: TADOQuery
    Connection = con1
    CursorType = ctStatic
    Parameters = <>
    Left = 464
    Top = 120
  end
  object qry3: TADOQuery
    Connection = con1
    CursorType = ctStatic
    Parameters = <>
    Left = 464
    Top = 184
  end
  object pm1: TPopupMenu
    Left = 360
    Top = 184
    object mni1: TMenuItem
      Caption = #1057#1084#1077#1085#1080#1090#1100' '#1087#1088#1086#1089#1084#1086#1090#1088
    end
  end
end




Реализация:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
unit UfrmcxGrid;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
  cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator,
  DB, cxDBData, cxGridLevel, cxClasses, cxGridCustomView, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxGrid, ADODB, Menus;

type
  TfrmcxGrid = class(TForm)
    ds1: TDataSource;
    ds2: TDataSource;
    ds3: TDataSource;
    con1: TADOConnection;
    qry1: TADOQuery;
    qry2: TADOQuery;
    qry3: TADOQuery;
    cxgrdbtblvw1: TcxGridDBTableView;
    cxgrdlvl1: TcxGridLevel;
    cxgrd1: TcxGrid;
    cxgrdbtblvw2: TcxGridDBTableView;
    cxgrdbtblvw3: TcxGridDBTableView;
    pm1: TPopupMenu;
    mni1: TMenuItem;
  private
    { Private declarations }
    procedure SelectionsChanged(Sender: TObject);
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

var
  frmcxGrid: TfrmcxGrid;

implementation

{$R *.dfm}

const
  CaptionViews: array[0..2] of string = ('Вид спереди', 'Вид сзади', 'Вид сбоку');

constructor TfrmcxGrid.Create(AOwner: TComponent);
var
  ami: TMenuItem;
  I: Integer;
begin
  inherited Create(AOwner);
  con1.Open;
  if con1.Connected then
  begin
    for I := 0 to cxgrd1.ViewCount - 1 do
    begin
      ami := TMenuItem.Create(Self);
      ami.Hint := cxgrd1.Views[i].Name;
      ami.Caption := CaptionViews[I];
      ami.OnClick := SelectionsChanged;
      if cxgrd1.Views[i] = cxgrd1.ActiveView then
        ami.Checked := True;
      mni1.Add(ami);
    end;
    qry1.Open;
    qry2.Open;
    qry3.Open;
  end;
end;

destructor TfrmcxGrid.Destroy;
var
  ami: TMenuItem;
  I: Integer;
begin
  for I := mni1.Count - 1 downto 0 do
  begin
    ami := mni1.Items[I];
    mni1.Delete(I);
    FreeAndNil(ami);
  end;
  qry1.Close;
  qry2.Close;
  qry3.Close;
  con1.Close;
  inherited Destroy;
end;

procedure TfrmcxGrid.SelectionsChanged(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to mni1.Count - 1 do
    mni1.Items[I].Checked := False;
  with TMenuItem(Sender) do
  begin
    if not Checked then
      Checked := True;
    cxgrdlvl1.GridView := cxgrd1.Views[MenuIndex];
  end;
end;

end.


...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]