Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя? / 25 сообщений из 25, страница 1 из 1
14.08.2017, 11:58:59
    #39504871
cxGridLevel. Есть ли стандартная фича переключения (select view) для пользователя?
Есть cxGrid, который находится на определённой вкладке, в нём необходимо разрешить переключать возможные TableView пользователю.

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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




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

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

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

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

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

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


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

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

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

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

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

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

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

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


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