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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
mln141



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex47
Да (стройка 6, с 4-м апдейтом). Загрузил новые (июньские) тоже все работает. Сделал так: запустил Инсталл, затем поправил как учили выше на -1, потом в Инсталле нажал кнопку "Компилить". И все заработало. Так что спасибо reenoip.

Всего записей: 86 | Зарегистр. 18-05-2005 | Отправлено: 00:36 24-06-2006
reenoip



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mln141, да моего участия тут, собственно, самый мизер ))) все благодарности к местным же, сам полгода назад напоролся, паниковал тут - не дай небо кому-нибудь такое пережить )))
Странно просто, что глюк этот из версии к версии кочует. Но, думаю, это всё не просто так

Всего записей: 1768 | Зарегистр. 10-03-2006 | Отправлено: 07:44 24-06-2006
russko



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть такой вопрос, существует ли возможность к cxGrid прикрутить диалог поиска, аналогичный диалогу DBGridEh из набора EhLib, вызываемый по "CTRL+F". Просто инкрементальный поиск в cxGrid не ищет по частичному сопадению, а фильтрами некоторым пользователям тяжеловато пользоваться (((( А руками свой диалог писать лениво )))
Спасибо.

Всего записей: 176 | Зарегистр. 20-07-2005 | Отправлено: 14:20 24-06-2006 | Исправлено: russko, 14:33 24-06-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
russko
 
В конференциях этот вопрос обсуждался. Есть, по крайней мере, три варианта решения.
 
1. Предлагается сделать так, как сделано в Firefox или Thunderbird (используется авто фильтр):
"Sinan Demir - DX Squad wrote:
 I like the "Firefox" (TM) way:
  OnKeyDown, show a filterpanel at the bottom and send the key to the
  editor there.
  Build the whole search logic into this filterpanel / class.
 > I would like to implement a search feature similar to Firefox or  
 > Thunderbird also. Where a user can type a word and the grid display  
 > all records where that word appears in any column.
 > Any ideas on the easiest way to achieve this?
 this could work:
 sFilterString := '%' + edSearch.Text + '%';
 with cxGridTableView.DataController.Filter.Root do
 begin
   Clear;
   BoolOperatorKind := fboOr;
   For i := 0 to cxGridTableView.ItemCount - 1 do
     AddItem(cxGridTableView.Items[i], foLike,
             sFilterString, sFilterString);
 end;
 cxGridTableView.DataController.Filter.Active := True;"
 
2. Можно использовать компонент xcxGridQuickSearch6 (в свободном доступе http://www.oratool.de/components/index.html)  
Там, если в панели фильтрации перед текстом набирать "%" - PercentWildcard, то идет
фильтрация по символам внутри слов. Можно, слегка изменив исходник,  PercentWildcard добавлять в текст программно.
 
3. Радикальный вариант, связанный с правкой реализации Incremental Search:
"Hi Mark,
 Yes, your conclusion is correct, you need to alter some sections that  
 make use of the CompareText() function. In addition, you will want to  
 modify the text selection display code used by the incremental search  
 feature, since it only supports selecting from the first char.
 Here are the changes I implemented to have the incremental search  
 feature fully support searching inside words:
 - in cxDataUtils.pas, I added a new global text comparison function:
 function PosSubstring(const Str, SubStr: string): integer;
 begin
    Result := -1;
    try
      Result := Pos(AnsiUpperCase(SubStr), AnsiUpperCase(Str)) - 1;
    except
    end;
 end;
 - then in cxCustomData.pas, function TcxDataControllerSearch.DoSearch, I  
 made the following change:
 commented out this line: if DataCompareText(S, ASubText, True) then
 added this line instead: if PosSubstring(S, ASubText) <> -1 then
 - then in cxGridCustomTableView.pas, procedure  
 TcxGridTableDataCellViewInfo.InitTextSelection, I made the following change:
 commented out this line: SelStart := 0;
 added this line instead: SelStart := PosSubstring(GetText,  
 Controller.IncSearchingText);"

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 12:01 25-06-2006
makz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добавляю дополнительную кнопку в cxMRUEdit, а как событие к ней привязать не понятно. Может делал уже кто-нибуть?

Всего записей: 1034 | Зарегистр. 17-05-2003 | Отправлено: 14:56 25-06-2006
baraka



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
makz
А как это ты добавляешь кнопку к cxMRUEdit. Там есть только одна (на ней многоточие изначально). В закладке Events есть подкатегория Propreties, там увидишь OnButtonClick.
Возможность добавлять много кнопок есть у TcxButtonEdit.

Всего записей: 313 | Зарегистр. 29-01-2003 | Отправлено: 15:18 25-06-2006
makz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
baraka
Ну, во первых сразу их там две, одна дропдаун, а вторая с троеточием, и работает с OnButtonClick. А добавляю примерно так:
with TcxMRUEditProperties(AProperties).Buttons do
  if Count<3 then begin
    Add;
    Items[2].Kind:=bkText;
    Items[2].Caption:='-';
  end;//if
end;
Добавить можно сколько захочешь, только вот они чисто декоративные получаются, без фунционала .

Всего записей: 1034 | Зарегистр. 17-05-2003 | Отправлено: 09:12 26-06-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
23.06.06 в devexpress.public.vcl.editors4 появилось сообщение:
"ExpressEditors Library 5": cxCurrencyEdit.pas
version: 5.17.0.0
Fixes:
1)
function TcxCustomCurrencyEditProperties.IsDisplayValueValid(
  var DisplayValue: TcxEditValue; AEditFocused: Boolean): Boolean;
var
  C, AIsOnGetTextAssigned: Boolean;
  D: Double;
begin
  Result := not AEditFocused or
    (InternalGetEditFormat(C, AIsOnGetTextAssigned) <> '') or
    AIsOnGetTextAssigned or
    {+}
    (Nullable and (DisplayValue = NullString)) or
    {+.}
    StrToFloatEx(VarToStr(DisplayValue), D);
end;
2)
procedure TcxCustomCurrencyEditProperties.ValidateDisplayValue(
  var ADisplayValue: TcxEditValue; var AErrorText: TCaption;
  var AError: Boolean; AEdit: TcxCustomEdit);
var
  AValue: Double;
begin
  {+}
  if Nullable and (VarToStr(ADisplayValue) = NullString) then
    AError := False
  else
  {+.}
  AError := not StrToFloatEx(VarToStr(ADisplayValue), AValue);
  inherited ValidateDisplayValue(ADisplayValue, AErrorText, AError, AEdit
);
end;
Сам не проверял, с этой версией не работаю

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 09:14 26-06-2006
russko



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

Цитата:
1. Предлагается сделать так, как сделано в Firefox или Thunderbird (используется авто фильтр):
"Sinan Demir - DX Squad wrote:
 I like the "Firefox" (TM) way:
  OnKeyDown, show a filterpanel at the bottom and send the key to the
  editor there.
  Build the whole search logic into this filterpanel / class.
 > I would like to implement a search feature similar to Firefox or  
 > Thunderbird also. Where a user can type a word and the grid display  
 > all records where that word appears in any column.
 > Any ideas on the easiest way to achieve this?
 this could work:
 sFilterString := '%' + edSearch.Text + '%';
 with cxGridTableView.DataController.Filter.Root do
 begin
   Clear;
   BoolOperatorKind := fboOr;
   For i := 0 to cxGridTableView.ItemCount - 1 do
     AddItem(cxGridTableView.Items[i], foLike,
             sFilterString, sFilterString);
 end;
 cxGridTableView.DataController.Filter.Active := True;"

Этот вариант очень интересный, его уже реализовал, но вот вопрос, какой код вешать на обработчик кнопки "Следующая запись", т.е. находит следующую запись, удовлетворяющую фильтру.

Всего записей: 176 | Зарегистр. 20-07-2005 | Отправлено: 09:30 26-06-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
russko
Возможно  я не понял вопроса, но не сгодится ли
TcxGridDBTableView(cxGrid1.FocusedView).DataController.GotoNext;

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 12:27 26-06-2006
makz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
baraka
Хех. Победил - вырезал кой-чего лишнего из исходника.

Всего записей: 1034 | Зарегистр. 17-05-2003 | Отправлено: 12:37 26-06-2006
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
makz
 
Из своего исходника или DevExpress?

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 13:42 26-06-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
makz
Похоже надо переопределить процедуру:
procedure TcxCustomMRUEdit.DoButtonClick(AButtonVisibleIndex: Integer);
begin
  if AButtonVisibleIndex = 1 then
  begin
    with Properties do
      if Assigned(OnButtonClick) then
        OnButtonClick(Self);
    if RepositoryItem <> nil then
      with ActiveProperties do
        if Assigned(OnButtonClick) then
          OnButtonClick(Self);
  end;
end;
Тогда исходники можно не трогать.

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 13:52 26-06-2006
russko



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex47
Спасибо помогло ))

Всего записей: 176 | Зарегистр. 20-07-2005 | Отправлено: 18:26 26-06-2006 | Исправлено: russko, 18:27 26-06-2006
makz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex47
Проще оказалось удалить, тогда наследуется процедура с индексом кнопки в параметре. Меня в принципе устроило. А после опубликования свойства buttons, вообще все стало как мечталось.

Всего записей: 1034 | Зарегистр. 17-05-2003 | Отправлено: 06:50 27-06-2006 | Исправлено: makz, 07:01 27-06-2006
harmony man



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть вопросец по Quantum Grid.
Предположим, что я отоображаю список компьютеров и связанных с ними функциями. Компьютер характеризуется двумя столбцами (Name, IP Address). Оба эти столбца сгруппированы в Band. Возможно ли сделать так, чтобы эти столбцы вытаскивались в область группировки вместе и на одном уровне?
Сливать их в один столбец не хочется.  

Всего записей: 44 | Зарегистр. 14-04-2006 | Отправлено: 16:57 27-06-2006
VadimLou



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

Цитата:
23.06.06 в devexpress.public.vcl.editors4 появилось сообщение:  
"ExpressEditors Library 5": cxCurrencyEdit.pas

Это исправление нужно тем кто уже перешёл на новую версию (05_june_2006) от feandy.  
 
+ ещё исправления на том же devexpress.public.vcl.editors4
 
ExpressLibrary:cxContainer.pas
 
Исправление при совместном использовании с ReportBuilder. Ввиду того что последний постоянно плюётся Application.ProcessMessages возможны проблемы с сх контейнером.
 
Fixes:
 
...
procedure TcxCustomPopupWindow.Popup(...)
...
  procedure ShowPopupWindow;
  ...
      if FFocusedControl = nil then
        SetFocus
      else {+} if FFocusedControl.CanFocus then {+.}
        FFocusedControl.SetFocus;
      SetWindowPos(...
      ...
ExpressQuantumGrid 5: Cyclic exceptions
 
При использованиии 3-х компонент совместно с ExpressQuantumGrid 5 (InfoPower, 1stClass) возникают зацикленные исключения. Побороть их удалось только после добавок проверки на nil следуюих полей:
 
cxGridTableView.pas:
  RecordsViewInfo
  IndicatorViewInfo
  HeaderViewInfo
  GroupByBoxViewInfo
  FooterViewInfo
 
cxGridCustomTableView.pas:
  RecordsViewInfo
  FRecordsViewInfo
  NavigatorSiteViewInfo
  FNavigatorSiteViewInfo
  FilterViewIn
 
Developer Express Library: define conditions
Для тех кто постоянно компилит сорцы в проектах следует обратить внимание , что в некоторых сырцах есть анализ определений типа
  {$IFDEF DEBUGPAINT}
  {$IFDEF DEBUG}
В общем если ваши определения совпадут - вы можете получить неожидаемый эффект (вывод отлад-й инфы , или тормоза или чё ещё ).
 
Предлагается поотключать все эти определения в заголовах соот-х файлов ...

Всего записей: 702 | Зарегистр. 22-07-2004 | Отправлено: 17:31 28-06-2006
Daeron

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как отследить изменение данных в гриде ДО прехода на следующую строку?
Пример:
Редактируем одну колонку, ну например убираем символ и нажимаем кнопку вверх (на клавиатуре и желательно, что бы запись не была первой).
В событие OnCanFocusRecordChanged
 проверяем  
dbMainView.DataController.IsEditing = false
dbMainView.Controller.EditingController.IsEditing = false
dbMainView.DataController.DataSource.DataSet.Modified = false
Тем не менее запись прилежно постится в модифицированном варианте.
 
При этом переходы мышкой - отлично ловятся.
Девки июньские.
 
Ну и заодно можно ли как-то отловить момент поста при фильтрации, сортировке?  
Пример: берем, добавляем в грид запись, и пытаемся ну например отсортировать, при этом происходит пост
 
Событие BeforePost датасета плохо тем, что пользователь уже может уйти с записи, которую редактирует.

Всего записей: 76 | Зарегистр. 10-06-2005 | Отправлено: 20:17 28-06-2006
Alex47



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

Цитата:
Побороть их удалось только после добавок проверки на nil следуюих полей:  

А где, конкретно, эти проверки?
Желательно бы видеть код, или фрагмент кода.  
 
Добавлено:
Daeron

Цитата:
Редактируем одну колонку, ну например убираем символ и нажимаем кнопку вверх  

 
В этом случае отработают обработчики колоночных редакторов  
 OnEditValueChanged
 OnValidate
Они не помогут?

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 09:05 29-06-2006
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Daeron
 
Если данные были изменены  и происходит событие BeforePost, то в этом случае текущая запись еще не изменилась. Это очевидно, и не важно каким способом теряется фокус. Если в этом событии сделать raise, то текущая запись не изменится.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 13:11 29-06-2006
   

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