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

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

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

ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

golkanavt



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

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




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

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 10:31 07-02-2009 | Исправлено: vladman, 14:36 24-10-2009
Chukotka

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

Цитата:
Подскажу, чего же не подсказать

Спасибо большое, все работает.

Всего записей: 428 | Зарегистр. 01-11-2006 | Отправлено: 21:30 29-05-2009
vladman

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

Цитата:
а отрисовка происходит только после клика по одному из RadioButton:  

Скорее всего верная отрисовка (с учетом Enabled) происходит при установке фокуса на этот BarItem. Ну да ладно, я так понял это для вас уже не актуально.  

Цитата:
конструктивных советов по оформлению дизайна

Позволю тоже себе немного пофилосовствовать.
Ваш подход к реализации функционала -  
Пользователь кликает по LargeButton - 1-й клик. Затем выбирает нужный запрос - 2-й клик, затем снова жмет на LargeButton чтобы выполнить выбранный запрос - 3-й клик. (3 клика для одной операции - достаточно много). Это оправдано, если пользователь достаточно часто выполняет выбранный запрос (чтобы снова не выбирать из попап меню), но в таком случае нужно где-то отображать пользователю какой запрос в данный момент выбран (текущий) и, соответственно, будет выполнен по нажатию на  LargeButton.  
Я бы реализовал это следующим образов
1. По нажатию на LargeButton выполняется текущий (выбранный) запрос. Если еще нет выбранного, то открывается попап меню для выбора.
2. Обязательное отображение текущего (выбранного) запроса. Например, изменение Caption LargeButton или Caption TdxBar с LargeButton.
3. В качестве элементов попап меню использовать TdxBarButton's cо свойством ButtonStyle = Checked и объединенных в группу. При нажатии на dxBarButton происходит выполнение соответствующего запроса и изменение текущего (выбранного) запроса.
Итог - выполнение операции максимум в 2 клика, а при повторном выполнении одного и того же запроса - 1клик.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 12:49 30-05-2009
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если количество запросов невелико (3-5 в нашем случае),то можно вообще все сделать отдельными кнопками на отдельной Риббон-закладке "Запросы".

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 14:29 30-05-2009
X11



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

Код:
 
WITH dbgpA.DataController.Filter.Root do
  AddItem(dbgPaEXPENSE_NUMBERS, foLike, lcbFilials.Text, lcbFilials.Text);
 

 
а вот как убрать из фильтра условие.
 
Сам фильтр может иметь сразу несколько условий.

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:56 30-05-2009
Chukotka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
QuantumTreeList (не DB) - у кого-то есть опыт формирования дерева не в основном потоке? Пока у меня одна идея - сформировать в потоке отдельную иерархич структуру, а после завершения работы - быстро скопировать в QTL в блоке BeginUpdate\EndUpdate.

Всего записей: 428 | Зарегистр. 01-11-2006 | Отправлено: 21:19 30-05-2009
Meister Floh



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
Как это не удивительно, но я все это именно так и реализовал, только из списка запросов выбирал первый.. идея с открытием меню, если не выбрано ничего вернее.. А имя активного запроса отображаю в статус-баре.. Может в названии кнопки тоже логичнее попробую В любом случае - ОГРОМНОЕ СПАСИБО!
 
 
Добавлено:
MagistrAnatol
Вам тоже ОГРОМНОЕ СПАСИБО за идею с кнопками..
 
jicoff
dimm78
f3ka
afiget
И Вам тоже ОГРОМНОЕ СПАСИБО - за идеи, которые хоть и не реализовал, но принял вл внимание..

Всего записей: 393 | Зарегистр. 04-08-2003 | Отправлено: 09:07 31-05-2009 | Исправлено: Meister Floh, 11:18 31-05-2009
xokc

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

Цитата:
сформировать в потоке отдельную иерархич структуру, а после завершения работы - быстро скопировать в QTL

Если нет необходимости отображать сразу ВСЁ раскрытое дерево, то лучше узлы добавлять в него по мере раскрытия предков. Если же заполняющий поток продолжительный, то можно внутри него для создания узла отправлять с помощью SendMessage сообщения GUI потоку с указателями на предка добавляемого узла и указателя на собственно данные самого узла.

Всего записей: 477 | Зарегистр. 22-09-2002 | Отправлено: 12:04 31-05-2009
Chukotka

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

Цитата:
Если нет необходимости отображать сразу ВСЁ раскрытое дерево, то лучше узлы добавлять в него по мере раскрытия предков.

Нет, такой возможности нет, к сожалению. Качать приходится все данные.

Цитата:
Если же заполняющий поток продолжительный, то можно внутри него для создания узла отправлять с помощью SendMessage сообщения GUI потоку с указателями на предка добавляемого узла и указателя на собственно данные самого узла.

Спасибо, поэкспериментирую, сравню сегодня эти два варианта - свой (с созданием отд структуры в потоке) и ваш.

Всего записей: 428 | Зарегистр. 01-11-2006 | Отправлено: 12:46 31-05-2009
vladman

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

Цитата:
а вот как убрать из фильтра условие.


Код:
 
if <YourCheckBox>Checked then
  WITH dbgpA.DataController.Filter.Root do
    AddItem(dbgPaEXPENSE_NUMBERS, foLike, lcbFilials.Text, lcbFilials.Text)
else  
  dbgPaEXPENSE_NUMBERS.Filtered := false;

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 15:02 31-05-2009
Meister Floh



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
А какое событие нужно вызвать, чтобы принажатии TdxBarLargeButton при определенных условиях выпадало меню? (само собой в кнопке свойства bsDropDown и DropDownMenu установлены) ?
 
 
Добавлено:
потому как что-то я кручу-кручу SendMessage но ничего толком придумать не могу..

Всего записей: 393 | Зарегистр. 04-08-2003 | Отправлено: 20:59 31-05-2009
vladman

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

Цитата:
А какое событие нужно вызвать, чтобы принажатии TdxBarLargeButton при определенных условиях выпадало меню?

onClick конечно. Но нужно немного повозиться. Кстати, тоже используется *полюбившийся* доступ к Protected свойствам.  
подробности _http://www.devexpress.com/Support/Center/KB/p/A69.aspx, обязательно дочитать до пункта *2) for v6*, в нем как раз то, что вам нужно
 
ЗЫ. Хочу заметить, что именно *доступ к Protected* свойствам, а не private как вы недавно написали.

Цитата:
разобраться как все это на самом деле работает, в частности, как достучаться к private property

К private так точно достучаться не получится. Думаю просто описка .

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 23:21 31-05-2009
Meister Floh



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

Цитата:
К private так точно достучаться не получится. Думаю просто описка

Само собой описка.. Замечаю в последнее время за собой такое, сидишь, до потери пулься, пока уже вообще, что-либло перестаешь соображать, и начинаешь писать всякую пургу Кстати спасибо за линк, сейчас займусь чтением.. А пока вышел из ситуации используя стандартную функцию Popup(X, Y) всплывающего меню.. И в паре с ней ClientToScreen... - но это грубо говоря, не совсем, то, что хотелось бы..

Всего записей: 393 | Зарегистр. 04-08-2003 | Отправлено: 09:49 01-06-2009
neznayka3

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите что прописать OnFilterRecord у dxMemData чтобы реализовать фильтр по 'LIKE' ?

Код:
Accept:=DataSet.FieldValues['FIO']=Trim(edFilter.Text)+'%';
не проходит

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 12:41 01-06-2009
zzz78



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как в PivotGrid раскрасить ячейки в засисимости от значения другого поля?
В demo есть только пример раскраски по значению поля. А у меня есь еще одно "поле-признак" в засисимости от его значения ячейку с данными нужно закрасить определенным цветом.

Всего записей: 27 | Зарегистр. 29-08-2007 | Отправлено: 12:50 01-06-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
Accept := Pos(Trim(edFilter.Text), DataSet.FieldValues['FIO']) > 0;
ну или поменять параметры Pos местами

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 12:51 01-06-2009
X11



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

Цитата:
if <YourCheckBox>Checked then
  WITH dbgpA.DataController.Filter.Root do
    AddItem(dbgPaEXPENSE_NUMBERS, foLike, lcbFilials.Text, lcbFilials.Text)
else  
  dbgPaEXPENSE_NUMBERS.Filtered := false;  

Спасибо, то, что нужно. Немного переделав, получил рабочую процедуру

Код:
 
  if (cboxFilials.Checked) then
    begin
      dbgPaEXPENSE_NUMBERS.Filtered := false;//если этой строки не будет, то в фильтр постоянно будут добавляться и добавляться условия
      WITH dbgpA.DataController.Filter.Root do
        AddItem(dbgPaEXPENSE_NUMBERS, foLike, '%'+lcbFilials.Text+'%', lcbFilials.Text);
 
    end else
      dbgPaEXPENSE_NUMBERS.Filtered := false;
 
  if not dbgPa.DataController.Filter.Active then
    dbgPa.DataController.Filter.Active := true;
 


----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 13:04 01-06-2009
Justinetz

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет. Волею судеб и DevExpress'а попала сюда. У меня вот такая проблема с ASPxGridView: datasource я обновляю каждый раз при выполнении каких-либо действий (обновление странички, удаление записи из источника данных, редактирования записи). Если получаемый datasource пустой (или null), то возможно два развития событий:
1) первая загрузка или полная перезагрузка страницы. Тогда все нормально.
2) в Template одной из колонок добавлены кнопки: delete, edit. Если нажимаем delete, то вызывается функция удаления записи из базы, потом происходит обновление datasource (например, gv.datasource = GetData();). И при этом обновлении вылетает exception: "A primary key field specified via the KeyFieldName property is not found in the underlying data source. Make sure the field name is spelled correctly. Pay attention to the character case.". Иду по коду - все с моей стороны нормально. Так же берется datasource через вызов функции, где присваивается ему лист с нулевым количеством элементов. KeyFieldName жестко прописан еще на странице и в других ситуациях проблем с ним нет. Только в данной. Exception возникает на этапе DataBind.
Уже не знаю, как это лечить. Запуталась. Была бы очень признательна за помощь или  объяснение.

Всего записей: 1 | Зарегистр. 01-06-2009 | Отправлено: 13:09 01-06-2009
neznayka3

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

Цитата:
Accept := Pos(Trim(edFilter.Text), DataSet.FieldValues['FIO']) > 0;  
не работает
 
и так тоже не работает:
Код:
var
  s: String;
begin
  s:=copy(DataSet.fieldbyname('fio').AsString, 1, length(Trim(edFilter.Text)));
  Accept := (Trim(edFilter.Text)=s);

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 13:11 01-06-2009 | Исправлено: neznayka3, 13:38 01-06-2009
f3ka

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

Код:
procedure TForm1.md1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  Accept := Pos(Trim(edt1.Text), DataSet.FieldByName('StringField').AsString) > 0;
end;

видать у вас не включена фильтрация MemData.
добавьте

Код:
procedure TForm1.edt1Change(Sender: TObject);
begin
  md1.Filtered := Trim(edt1.Text) <> '';
end;

например

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 13:54 01-06-2009
neznayka3

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

Цитата:
видать у вас не включена фильтрация MemData.  
спасибо

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 14:03 01-06-2009
   

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 3)
ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru