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

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

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

ShIvADeSt (29-01-2007 03:17): идем сюда
http://forum.ru-board.com/topic.cgi?forum=33&topic=7918
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

golkanavt



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

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




 
Сами прирученные компоненты частенько приходят на водопой сюда

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 10:42 08-10-2003 | Исправлено: golkanavt, 15:41 08-09-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPSDim
Можно использовать:
View.DataController.LocateByKey();

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 09:01 26-07-2005
NameSoname

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Тут _ttp://www.devexpress.com/Downloads/NET/WFComponentsCollection/files/WinFormsCollectionEval-2.0.4.exe лежит последняя (на 26.07.2005) полная (с исходными текстами) версия набора компонентов для платформы .NET от Developer Express.  
Скажите, пожалуйста, может ли кто-нибудь поделиться серийным номером данного продукта?  
Спасибо за внимание.
 
Добавлено:
Здравствуйте!  
Тут _ttp://www.devexpress.com/Downloads/NET/WFComponentsCollection/files/WinFormsCollectionEval-2.0.4.exe лежит последняя (на 26.07.2005) полная (с исходными текстами) версия набора компонентов для платформы .NET от Developer Express - Developer Express .NET Windows Forms Components Suite 2.0.4.  
Скажите, пожалуйста, может ли кто-нибудь поделиться серийным номером данного продукта?  
Спасибо за внимание.

Всего записей: 3 | Зарегистр. 11-12-2004 | Отправлено: 17:40 26-07-2005
Alex1978

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Если включить режим GridMode, то сортировка по клику на зоголовке столбца не пашет.
Так и должно быть?
ver 5.7

Всего записей: 306 | Зарегистр. 27-02-2003 | Отправлено: 12:51 27-07-2005
XPSDim



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

Цитата:
XPSDim  
Можно использовать:  
View.DataController.LocateByKey();

 
Не пашет. Справки по данному методу нет. Я в качестве аргумента передавал нужное значение поля соответствующее KeyFieldNames Датаконтроллера.
При поиске вообще ничего не происходит.
 
Как же все-таки искать в многоуровневых таблицах?

Всего записей: 31 | Зарегистр. 17-05-2005 | Отправлено: 14:03 27-07-2005
golkanavt



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

Цитата:
Здравствуйте!  
Тут _ttp://www.devexpress.com/Downloads/NET/WFComponentsCollection/files/WinFormsCollectionEval-2.0.4.exe лежит последняя (на 26.07.2005) полная (с исходными текстами) версия набора компонентов для платформы .NET от Developer Express - Developer Express .NET Windows Forms Components Suite 2.0.4.    
Скажите, пожалуйста, может ли кто-нибудь поделиться серийным номером данного продукта?    
Спасибо за внимание.

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

----------
Shit happens...

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 14:22 27-07-2005
Alex47



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

Цитата:
Не пашет.

 
У меня работает в нескольких местах.
Предположим, что нам надо будет потом найти строку на которой сейчас стоит фокус.
Код, примерно, такой:
1. Находим индекс строки на которой стоит фокус:
RecordIndex := TcxGridDBTableView(cxGrid1.FocusedView).DataController.FocusedRecordIndex;
2. По индексу находим идентификатор строки и запоминаем его:
RecordId := TcxGridDBTableView(cxGrid1.FocusedView).DataController.GetRecordId(RecordIndex);
3. В нужный момент в нужном обработчике используем запомненный идентификатор
 строки для LocateByKey:
  TcxGridDBTableView(cxGrid1.FocusedView).DataController.LocateByKey(RecordId);
4. Для DetailView надо всегда использовать конструкцию
TcxGridDBTableView(cxGrid1.FocusedView) - чтобы обратиться к созданному клону DetailView.
5. Если не получится, приведи свой фрагмент кода с логикой продвижения по обработчикам

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 09:11 28-07-2005
XPSDim



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

Цитата:
У меня работает в нескольких местах.  

 
Делаю по твоему совету:
 
procedure TfrmMain.tbFindClick(Sender: TObject);
var RecordIndex, RecordId: integer;
begin
  With TfrmFind.Create(Application) do
    begin
      if ShowModal=mrOk then
         if cbKind.Text=Прайсовый номер' then
           begin
             if not tblItemsDetal.Locate('price_num',edtText.Text,[])
                then
                   Showmessage('Ничего не найдено')
                else
                begin
           {1}   RecordIndex := TcxGridDBTableView(cxGrid.FocusedView).DataController.FocusedRecordIndex;
            {2}   RecordId := TcxGridDBTableView(cxGrid.FocusedView).DataController.GetRecordId(RecordIndex);
                    TcxGridDBTableView(cxGrid.FocusedView).DataController.LocateByKey(RecordId);
                end;
           end;
    end;
end;
 
Структура грида:
  Level1->GroupsView
     Level2->ItemsView
        Level3->ItemsDetalView
 
Locate делаю по датасэту связанному с ItemsDetalView.
Пры выполнении строки {1} FocusedView=GroupsView;
Если до начала поиска мышкой установить фокус на ItemsView или ItemsDetalView
группы отличной от искомой - происходит исключение Invalid Variant Type Conversion.
 
Проблема, как мне кажется, в том, что после Locate не передается фокус на соответствующий View третьего уровня.
 
Так как же все-таки лечить?

Всего записей: 31 | Зарегистр. 17-05-2005 | Отправлено: 10:34 28-07-2005
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPSDim
1. Если нужен только поиск по одной из колонок третьего уровня, то почему бы не  
использовать incremental search по этой колонке?
2. Попробуй вместо tblItemsDetal.Locate('price_num',edtText.Text,[]) сразу
строку TcxGridDBTableView(cxGrid.FocusedView).DataController.LocateByKey(edtText.Text).
Фокус должен быть гарантированно на View третьего уровня и DataController.KeyFieldNames должно быть правильно установлено - (price_num).
SmartRefresh желательно False.
Или так:
TcxGridDBTableView(cxGrid.FocusedView).DataController.BeginUpdate;
TcxGridDBTableView(cxGrid.FocusedView).DataController.LocateByKey(edtText.Text).
TcxGridDBTableView(cxGrid.FocusedView).DataController.EndUpdate;
3. Еще можешь попробовать конструкцию:
<View>.DataController.BeginLocate;
  try
    <View>.DataController.DataSet.Locate( ... );
     finally
    <View>.DataController.EndLocate;
  end;

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 14:20 28-07-2005 | Исправлено: Alex47, 14:22 28-07-2005
XPSDim



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
To Alex47
 
1. Поиcк нужен не только по одной колонке, по некоторым даже необходим посик вхождения строки.  
 
2. Мне кажется, я немножко неправильно объяснил проблему.
Изначально будем считать, что все группы и подгууппы свернуты. Когда я делаю Locate по датасету - где-то там внизу разворачивается группа и подгруппа. Моя задача установить фокус на эту самую запись и вывести ее в пределах видимости окна.
При этом групп где-то около 500, в каждой группе приблизительно 10-500 подгрупп,
а в самом нижнем уровне, чаще всего, 1-2 записи.
Поэтому второй предложенный вариант выглядит как-то неуместно. Ведь если я установлю вручную фокус на нужный грид 3-го уровня, то искать уже ничего не надо будет
 
Может поставить 5-ый cxGrid?

Всего записей: 31 | Зарегистр. 17-05-2005 | Отправлено: 15:21 28-07-2005
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPSDim
Не понял, что надо от locate.
Первый уровень - некие группы;
Второй уровень - состав групп в неких товарах;
Третий уровень - описание неких модификаций товаров.
Мы стоим на первом уровне, то есть фокус на какой-то строке группы и
делаем locate по третьему уровню (модификации товаров)?
Вопрос: будет ли такой locate однозначным? То есть, в пределах выбранной на первом уровне группы, существует только одна конкретная строка третьего уровня, которую мы ищем?
Если существует только одна запись, можно попробовать следущее.  
Исходная ситуация - стоим на первом уровне, то есть фокус на какой-то строке группы, начинаем поиск.  
1. DataController2 := <MasterView>.DataController.GetDetailDataController() - находим контроллер второго уровня.  
2. По найденному контроллеру находим контроллер третьего уровня:
DataController3 := DataController2.GetDetailDataController() - если он будет не nil.
3. Ищем запись:
DataController3.LocateByKey(edtText.Text).  
Еще такой вариант. Может вместо поиска записи сделать фильтр по dataset третьего уровня - чтобы остальные записи были просто не видны. Фильтр можно сделать средствами dataset или самого Grid.

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 10:39 29-07-2005 | Исправлено: Alex47, 10:41 29-07-2005
IShIgor

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите...
Кто работал с TcxListView под D7.
Столкнулся с такой проблемой. ListView нормально работает до тех пор пока у элементов не используется Object. Как только Object содержит что-то, ListView после 2-3 заполнения перестает отрисовываться на экране - такое ощущение, что где-то внутри себя зацикливается... Проверял на самом простом объекте, содержащем только одно целое значение и при событии OnDelete этот объект освобождается.
И вообще по сравнению со стандартым ListView тормоза жуткие...
Может кто чего-нибудь что сказать, посоветовать?

Всего записей: 127 | Зарегистр. 13-01-2005 | Отправлено: 11:05 29-07-2005
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
IShIgor
под D6 такой проблемы нет, может дело именно в твоей комбинации?

----------
Shit happens...

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 11:39 29-07-2005
XPSDim



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
To Alex47
 
Не важно на какой группе стоит фокус. Ищем по всей таблице 3-го уровня. В случае с price_num - результат посика однозначен, поскольку поле - уникальное. Ну да это частный случай.
 
 
Вариант с GetDetailDataController - наверное то что нужно, только не понятно что передавать в качестве второго параметра (ARelationIndex)? В справке почему-то описание отсутствует.
 
 

Всего записей: 31 | Зарегистр. 17-05-2005 | Отправлено: 11:46 29-07-2005
Alex47



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

Цитата:
(ARelationIndex)?  

Можно ставить 0

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 12:43 29-07-2005
Case



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток.
Такой вопрос: как проще всего зделать в cxGrid некий аналог PickList в EhLib, что бы юзверю упростить ввод уже сущестувующих значений из даного поля?

Всего записей: 16 | Зарегистр. 15-07-2004 | Отправлено: 13:21 29-07-2005
XPSDim



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
To Alex47  
 
 RecordIndex := TcxGridDBTableView(cxGrid.FocusedView).DataController.FocusedRecordIndex;
                  RecordId := TcxGridDBTableView(cxGrid.FocusedView).DataController.GetRecordId(RecordIndex);
                  tmpDataCont2:=TcxGridDBTableView(cxGrid.FocusedView).DataController.GetDetailDataController(RecordIndex,0);
                  TcxGridDBDataController(tmpDataCont2).LocateByKey(tblItemsDetal.FieldByName('id_master').AsInteger);
                  tmpDataCont3:=TcxGridDBDataController(tmpDataCont2).GetDetailDataController(???,0);
 
 
Нашел контроллер 2-го уровня. А вот как получить контроллер 3-го уровня? Ведь фокус все равно остается на первом уровне, даже после TcxGridDBDataController(tmpDataCont2).LocateByKey(tblItemsDetal.FieldByName('id_master').AsInteger);
 
 
Добавлено:
To Alex47  
 
Ураа!! Получилось.
 
Так все это выглядит.  
 
procedure TfrmMain.tbFindClick(Sender: TObject);
var RecordIndex, RecordId, i: integer;
    tmpDataCont2, tmpDataCont3: TcxCustomDataController;
begin
tbCollapse.Click;
  With TfrmFind.Create(Application) do
    begin
      if ShowModal=mrOk then
         if cbKind.Text='&#207;&#240;&#224;&#233;&#241;&#238;&#226;&#251;&#233; &#237;&#238;&#236;&#229;&#240;' then
           begin
                if not tblItemsDetal.Locate('price_num',edtText.Text,[])
                then
                   Showmessage('&#205;&#232;&#247;&#229;&#227;&#238; &#237;&#229; &#237;&#224;&#233;&#228;&#229;&#237;&#238;')
                else
                begin
                  RecordIndex := TcxGridDBTableView(cxGrid.FocusedView).DataController.FocusedRecordIndex;
                  RecordId := TcxGridDBTableView(cxGrid.FocusedView).DataController.GetRecordId(RecordIndex);
                  tmpDataCont2:=TcxGridDBTableView(cxGrid.FocusedView).DataController.GetDetailDataController(RecordIndex,0);
                  for i:=0 to TcxGridDBDataController(tmpDataCont2).GridView.ViewData.RecordCount-1 do
                  begin
                   if tblItemsDetal.FieldByName('id_master').AsInteger=
                      strToInt(TcxGridDBDataController(tmpDataCont2).GridView.ViewData.Records[i].DisplayTexts[2])
                   then
                     TcxGridDBDataController(tmpDataCont2).GridView.ViewData.Records[i].Focused:=True;
                  end;
                  RecordIndex := TcxGridDBTableView(cxGrid.FocusedView).DataController.FocusedRecordIndex;
                  RecordId := TcxGridDBTableView(cxGrid.FocusedView).DataController.GetRecordId(RecordIndex);
                  tmpDataCont3:=TcxGridDBTableView(cxGrid.FocusedView).DataController.GetDetailDataController(RecordIndex,0);
                  for i:=0 to TcxGridDBDataController(tmpDataCont3).GridView.ViewData.RecordCount-1 do
                  begin
                   if tblItemsDetal.FieldByName('price_num').AsInteger=
                      strToInt(edtText.Text)
                   then
                     TcxGridDBDataController(tmpDataCont3).GridView.ViewData.Records[i].Focused:=True;
                  end;
                end;
           end;
    end;
end;
 
Только как-то все больно закручено. Неужели нельзя проще?

Всего записей: 31 | Зарегистр. 17-05-2005 | Отправлено: 14:06 29-07-2005
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Case
Имеется ввиду именно использование раннее введенных или выбор из заранее определенного набора или же из датасета?

----------
Shit happens...

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 14:39 29-07-2005
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPSDim
Молодец, что добил!
1. Проще может быть получится, если пойдет какой-то вариант только с locate dataset или с фильтром...  Но это надо играть конкретно с твоим проектом.
2. Можно для ускорения убрать циклы на втором и третьем уровнях . Искать запись с помощью locateByKey. Думаю locateByKey ставит фокус на запись. Eсли нет, то поставить его ручками. Строку с Locate тоже можно убрать - она нужна только для выдачи сообщения, его можно выдавать по-другому.  

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 14:43 29-07-2005 | Исправлено: Alex47, 12:31 30-07-2005
Case



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
Выборка уникальных значений поля из того же датасета...
Мне вот советовали наделать 20 датасетов (у меня допустим 20 полей текстовых).  Но мне такая идея не нравится. Вот оно в фильр вытягивает значеения, как бы их заюзать?

Всего записей: 16 | Зарегистр. 15-07-2004 | Отправлено: 10:50 01-08-2005
Virtu

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую всех!
Что-то не нравится мне как отражает у меня данные cxDBTreeList...
Может я что-то неправильно делаю?
Есть ли у кого пример использования этого компонента ???
Может кто-то помочь?
 
Добавлено:
Ребяяятки, дайте плиз пример работы с cxDBTreeList.
Неужели жалко???

Всего записей: 4 | Зарегистр. 27-07-2005 | Отправлено: 11:06 01-08-2005
   

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress
ShIvADeSt (29-01-2007 03:17): идем сюда
http://forum.ru-board.com/topic.cgi?forum=33&topic=7918


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru