Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress 2

Модерирует : ShIvADeSt

ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 120 121 122

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DevExpress

Обмен опытом, обсуждение нюансов и решение проблем возникающих при использовании библиотеки компонент Developer Express




 
Сами прирученные компоненты частенько приходят на водопой сюда
 
DLL со скинами из библиотеки dxSkins, автор Ziltoid Подробнее... линк обновлен
Продолжение, начало тут
 

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:16 29-01-2007 | Исправлено: VitaliM, 15:47 24-11-2008
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
Смотри в сторону EditValue

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 11:37 13-11-2007
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
чем отличается DeleteFocused от DeleteSelection у объекта TcxGridDBTableView? В справке не нашёл.
 
Добавлено:
Когда открываю список программно
   
то первая строка не выделенна

Код:
 
procedure TfmAdd.lcbActionEnter(Sender: TObject);
begin
  if fIsAddMode then begin
    (sender as TcxLookupComboBox).DroppedDown := true;
  end;
end;
 

 
как её выделить программно?
Вот так:
   
 
Если кому интересно, то объясняю зачем. Для перехода по контролам использую enter. Вот если enter нажать в первой картинке, то список закроется без выбора. Или ручками нужно нажать клавишу вниз, а потом вверх. А для наборщика текста каждое нажатие дорого.

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:52 13-11-2007
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
X11, разница в том, что Focused - только один элемент (в таблица может быть focused запись, focused ячейка в гриде). Он же является часть набора Selection. То есть Selection состоит минимум из focused элемента.
Соответственно, Selection - 1 и более выделенных элементов (например, в комбобоксе на приведенных картинках или те же несколько записей в таблице).
В итоге, при DeleteFocused удалиться "текущая"/"активная" запись, а при DeleteSelection - она же и другие записи (если они выделены).
 
Для перехода по контролам, ИМХО, учите пользоваться TAB и SHIFT+TAB, а внутри комбобокса - стрелки + ENTER.

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 17:19 13-11-2007
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Для перехода по контролам, ИМХО, учите пользоваться TAB и SHIFT+TAB, а внутри комбобокса - стрелки + ENTER.
 

Нет, не согласен, клиент всегда прав, и он хочет так! Вот и всё. Предыдущих три программера провалились с написанием программы. Вот на таких мелочах можно часто выигрывать. Это называется удобность работы, эргономика.
 
Добавлено:

Цитата:
Для перехода по контролам, ИМХО, учите пользоваться TAB и SHIFT+TAB, а внутри комбобокса - стрелки + ENTER.

Ты хочешь сказать, что Tab автоматом сфокусирует запись, как показано на нижней картинке?
 
Добавлено:
Знаешь? Проверил. Не хочет . Смысл учить использовать таб?

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 18:01 13-11-2007
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Объясни  подробнее, что значит  

Цитата:
Для перехода по контролам использую enter

 
 
 

Цитата:
Нет, не согласен, клиент всегда прав, и он хочет так! Вот и всё. Предыдущих три программера провалились с написанием программы. Вот на таких мелочах можно часто выигрывать. Это называется удобность работы, эргономика.

 
А еще есть стандарты И, хотя, у MS они не очень четкие (сами иногда дурной пример подают), почему-то, переключаться по контролам любого окна выполняется по TAB и SHIFT+TAB. А по ENTER - нажатие выделенной кнопки по умолчанию.
Прикинь еще, пользователь после определенного времени и опыта работы с программой будет удивляться, почему в одной программе работает по ENTER, а остальном мире работает по TAB? )
В твоих силах сделать так, чтобы заказчик хотел, что правильно )
 
Добавлено:
Я не понял, ты контролами называешь элементы ComboBox'а? %)
 
Добавлено:
Получай:
 
var
  ARecordIndex: Integer;
  AKey: Variant;
begin
  ARecordIndex := 0; // ИНДЕКС_ЭЛЕМЕНТА
  AKey := <LookupComboBox>.Properties.DataController.GetRecordId(ARecordIndex);
  <LookupComboBox>.EditValue := AKey;
end;
 
Лучше это делать не по событию OnEnter, а при открытии формы, например. Тогда будет в ComboBox установлено "значение по умолчанию", что есть гуд для любого пользователя.
И задисабли ввод  значение (Properties.DropDownListStile := lsFixedList). У тебя фиксированный список, следовательно, ввод данных и быстрый набор не будет производиться.

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 18:17 13-11-2007
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson

Цитата:
 
Нужен контекстный поиск либо по столбцам грида, либо по лукапному комбо, состоящему из нескольких полей. Есть такое - кто знает?  
Инкрементный поиск, который IncSearch=True в TableView ищет с начала поля к сожалению.

Для организации контекстного поиска я использую следующие функции

Код:
 
//------------------------------------------------------------------------------
// Организация контектного поиска в cxLookupComboBox
//------------------------------------------------------------------------------
 
// Настрока комбобокса для поддержки контекстного поиска по подстроке
procedure TuneUpCxLookupComboBoxForFilteredSearchIn(ACombo: TComponent);
// После выбора значения снимаем фильтр
procedure CloseUpCxLookupComboBoxAfterFilteredSearch(Sender: TObject);
// Процедура выполняющая контекстный поиск в лукапкомбо
procedure FilteredSearchInCxLookupComboBox(Sender: TObject);
 

 
При создании формы вызываю
TuneUpCxLookupComboBoxForFilteredSearchIn(oCombo);
 
+ Помещаю в методы комбо вызовы функций
Properties.OnChange
  FilteredSearchInCxLookupComboBox(Sender);
 
Properties.OnCloseUp
  CloseUpCxLookupComboBoxAfterFilteredSearch(Sender);
 
Малость громоздко, но работает. Если кто подскажет как сделать удобней скажу спасибо.
 
реализация функция

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 07:52 14-11-2007
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Объясни  подробнее, что значит  
 
Цитата:
Для перехода по контролам использую enter


Цитата:
Объясни  подробнее, что значит  
 
Цитата:
Для перехода по контролам использую enter
 
 

неверно выразился, не я использую, а пользователи используют, т.е. enter как tab и, соответственно shift+enter как shift+tab
 
Добавлено:

Цитата:
В твоих силах сделать так, чтобы заказчик хотел, что правильно

в настройках есть чекбокс, пусть пользователь сам определяет, давай не удаляться от темы?
 
Добавлено:

Цитата:
Я не понял, ты контролами называешь элементы ComboBox'а? %)  

нет, комбобокс - это и есть контрол
 
Добавлено:

Цитата:
И задисабли ввод  значение (Properties.DropDownListStile := lsFixedList). У тебя фиксированный список, следовательно, ввод данных и быстрый набор не будет производиться.

да, так и сделано. Спасибо
 
Добавлено:
вот так реализовал:
 

Код:
 
procedure TfmAdd.lcbActionEnter(Sender: TObject);
var
  ARecordIndex: Integer;
  AKey: Variant;
begin
  if fIsAddMode then begin
    if (sender as TcxLookupComboBox).Properties.DataController.RecordCount > 0 then begin
      ARecordIndex := 0; // ИНДЕКС_ЭЛЕМЕНТА
      AKey := (sender as TcxLookupComboBox).Properties.DataController.GetRecordId(ARecordIndex);
      (sender as TcxLookupComboBox).EditValue := AKey;
    end;
  end;
 (sender as TcxLookupComboBox).DroppedDown := true;
end;
 

 
Добавлено:
Этот код в нескольких списках, которые расположены друг за другом, т.е. клавишей enter пользователь выбирает значения по умолчанию, если это добавление, а если не добавление а редактирование, то не ставим в списке позиционирование на значение по умолчанию, а ставим на конкретные значения, но это уже отдельный код.

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 10:45 14-11-2007 | Исправлено: X11, 11:00 14-11-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
ИМХО, всё же удобнее пользоваться TcxGrid или TcxDBVerticalGrid. У них в OptionsBehavior посмотри GotoNextCellOnEnter, FocusCellOn... и ImmediateEditor.
В качестве выпадающего списка - LookupDBCombobox, у которого поставить IncrementalFiltering := true;
ИМХО, это снимет лишнее кодирование.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 13:46 14-11-2007
Legion



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никто не натыкался на "неправильный" выход из cxVerticalGrid?
Например, на форме VerticalGrid и кнопка. После редактирования в гриде тыкаю мышой в кнопку, а результат - ноль. Кнопка нажимается только после второго клика.
Как бороться?

Всего записей: 159 | Зарегистр. 23-09-2003 | Отправлено: 14:21 14-11-2007
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
X11, с этого момента разбирайся сам
И не удаляйся от темы...

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 17:32 14-11-2007
NuclearDeath1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возможно, вопрос у меня простой, а возможно, и не очень )
 
Обыскал весь Яндекс, Гугл, Рамблер и пр., просмотрел всю Базу Знаний на офф-сайте - и почти ничего, кроме "How to set the height of data rows in the ExpressQuantumGrid" (_hxxp://www.devexpress.com/Support/Center/KB/p/A1617.aspx).
 
Вот стандартный вид таблицы : _hxxp://img405.imageshack.us/img405/1294/normalbz7.jpg
 
Вот вид таблицы, изменный так, как описано в "How to set the height of data rows in the ExpressQuantumGrid" : _hxxp://img401.imageshack.us/img401/1365/dataheightwy3.jpg
 
В любом случае, используем мы стандартный вид, или измененный, если изменить высоту заголовка столбца, получим следующий результат : _hxxp://img208.imageshack.us/img208/7941/bigheightvn6.jpg
 
Ищу решение, которое позволит изменять высоту заголовка столбца, при этом оставляя высоту ячеек в этом столбце неизменной.
 
Знает ли кто-нибудь решение, или в каком направлении его искать ?

Всего записей: 7 | Зарегистр. 29-03-2006 | Отправлено: 13:55 15-11-2007
Marina75



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[q]Доброе время суток.  
Есть такая проблема:
Есть cxGrid, в котором сделана группировка по 2 полям (для примера - группа, подгруппа).
Нужно: если выделение становится на группу, в соседнем гриде открывается список, относящийся к группе, НО если выделение становится на подгруппу - тогда в соседнем гриде должно быть выборка записей относящихся ТОЛЬКО к ПОДГРУППЕ!
 
Подскажите как это можно реализовать? Как можно определить какя группа в данный момент выделена?

Всего записей: 1 | Зарегистр. 15-11-2007 | Отправлено: 14:38 15-11-2007
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
NuclearDeath1, 2 идеи предлагаю:
1. <GridDBTableView>.OptionsView.HeaderHeight := XY, чтобы выставить для всех столбцов желательную высоту;
2. Событие <GridDBTableView>+<ИмяСтолбца>.OnCustomDrawHeader - прямо в нем руками с помощью местного Canvas'а рисовать заголовок столбца. Примеры рисования есть в Demos'ах стандартной поставки.
 
 
Добавлено:
Marina75, прочтите справку по TcxCustomDataController.OnGroupingChanged (в особенности, ссылки на "Groups").
 
Реализовать можно в <GridDBTableView>.OnSelectionChanged

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 14:49 15-11-2007
NuclearDeath1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
NuclearDeath1, 2 идеи предлагаю:  
1. <GridDBTableView>.OptionsView.HeaderHeight := XY, чтобы выставить для всех столбцов желательную высоту;  
2. Событие <GridDBTableView>+<ИмяСтолбца>.OnCustomDrawHeader - прямо в нем руками с помощью местного Canvas'а рисовать заголовок столбца. Примеры рисования есть в Demos'ах стандартной поставки.  

 
Спасибо за идеи, но есть пара важных моментов :
 
У меня GridBandedTableView (на скриншоте "банды" имеют заголовки "Band 1" ... "Band 2"), хотя, возможно, это и не важно.
 
А изменять мне необходимо не высоту заголовков столбца (OptionsView.HeaderHeight), а высоту строк, которая должна не совпадать с нестандартной высотой столбца (см. неправильный вид : hxxp://img208.imageshack.us/img208/7941/bigheightvn6.jpg - ячейки в столбце "Col 3" должны иметь такую же высоту, как в других столбцах).

Всего записей: 7 | Зарегистр. 29-03-2006 | Отправлено: 15:53 15-11-2007
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Ищу решение, которое позволит изменять высоту заголовка столбца, при этом оставляя высоту ячеек в этом столбце неизменной.

 
но
 

Цитата:
А изменять мне необходимо не высоту заголовков столбца (OptionsView.HeaderHeight), а высоту строк

 
Бр...
 
Напиши еще что-нибудь, чтобы понять, что тебе нужно.

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 17:21 15-11-2007
NuclearDeath1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Плин, посмотрите 3 скрина в первом посте, на словах трудно пояснить.
 
Порядок действий : создайте Banded-таблицу, добавте несколько Banded и несколько столбцов, перетащите столбцы под Banded.
 
Все выглядит отлично и хорошо. Теперь увеличте мышкой высоту заголовка, например столбца #3. Что при этом произойдет с ячейками : ячейки, находящиеся в столбце #3, увеличат свою высоту настолько же, насколько увеличился заголовок, результат можно увидеть здесь hxxp://img208.imageshack.us/img208/7941/bigheightvn6.jpg.
 
А теперь, не трогая высоту заголовка столбца #3, сделайте так, чтобы ячейки в нем стали стандартной высоты (т. е. такой же высоты, как в столбцах #1 и #2).
 
 
 
Если еще проще : есть таблица hxxp://img208.imageshack.us/img208/7941/bigheightvn6.jpg. Как привести ее к виду hxxp://img205.imageshack.us/img205/1246/54900530uj7.jpg (картинка сделана в PhotoShop) ?

Всего записей: 7 | Зарегистр. 29-03-2006 | Отправлено: 10:04 16-11-2007
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это какой-то глюк, а какая версия у тебя?

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 10:42 16-11-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NuclearDeath1
А для чего нужен такой изощрённый вид заголовка? Не проще ли сделать все заголовки одинаковой высоты, равной высоте максимального заколовка?

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 11:01 16-11-2007
NuclearDeath1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот примерный вид таблицы, какая она получается сейчас : hxxp://img255.imageshack.us/img255/9168/50747119cv9.jpg
 
Чтобы заголовки столбцов рисовались вертикально, используется cxGrid1BandedTableViewColmun<N>.OnCustowDrawHeader, где <N> - номер столбца. Больше никаких изменений в коде нет.
 
На приведенном примере в таблице есть всего 3 строки, планируемое количество от 10 до 50 - при этом общая высота таблицы будет черезмерно большой, с полосами прокрутки и пр.
 
Еще можно добавить, что в реальном проекте высота заголовков столбцов будет примерно в 2 раза больше, что еще более увеличит высоту таблицы.
 
Если каким-либо образом сделать высоту ячеек произвольно регулируемой независимо от высоты заголовков столбцов, или хотя бы стандартной высоты, это бы сократило размер таблицы на порядок.
 
Вот так ...
 
P.S. Версия DevExpress ExpressQuantumGrid Suite 6.28 for Delphi

Всего записей: 7 | Зарегистр. 29-03-2006 | Отправлено: 11:54 16-11-2007 | Исправлено: NuclearDeath1, 11:56 16-11-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NuclearDeath1
Вместо Column.Position.LineCount
используй TableView.OptionsView.HeaderHeight
предварительно нужно вычислить длину текста заголовка в пикселях.
 
Можно, конечно, пользоваться TableView.OnGetCellHeight, но это может быть более сложным способом.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 13:26 16-11-2007 | Исправлено: Dronton2, 14:05 16-11-2007
   

Страницы: 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 120 121 122

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress 2
ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru