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

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

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

Всего записей: 18 | Зарегистр. 28-01-2006 | Отправлено: 11:47 30-12-2009
crazypiggy

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вроде проблема решилась после того как я добавил FIBDataset.CashedUpdates=True

Всего записей: 57 | Зарегистр. 02-10-2008 | Отправлено: 12:07 30-12-2009
Chukotka

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

Цитата:
А если через InplaceEditor
что-то типа:
var
  e:TcxCustomEdit;
begin
  e := cxVerticalGrid.InplaceEditor

Спасибо огромное - самое оно!

Всего записей: 409 | Зарегистр. 01-11-2006 | Отправлено: 12:43 30-12-2009
vladman

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

Цитата:
Как при этом достучаться до TcxMemo, в которой происходит редактирование данных ячейки (нужно чтобы установить курсор Memo в определенную позицию?)
 

Совет X11 использовать свойство InplaceEditor хорош. Но для вашего случая, установка курсора в нужную позицию, нужно понять в какой момент вы это хотите выполнить. Дело в том, что свойство InplaceEditor при неактивном редакторе (<YourcxVerticalGrid>.IsEditing = False) возвращает nil. Т.е. я бы еще добавил проверку
  if Assigned(<YourcxVerticalGrid>.InplaceEditor) and (<YourcxVerticalGrid>.InplaceEditor is TcxMemo) then
    TcxMemo(<YourcxVerticalGrid>.InplaceEditor).SelStart := ....;

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, кто-нибудь организовывал поиск по cxGrid (unbound mode)? Т.е. cxGrid используется, как StringGrid, без датасета. Нужно сделать поиск с кнопками Далее и Назад. Что посоветуете?


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

Всего записей: 3232 | Зарегистр. 24-11-2005 | Отправлено: 15:08 30-12-2009
vladman

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

Цитата:
Вроде нашел как загрузить.  


Цитата:
Вроде проблема решилась после того как я добавил FIBDataset.CashedUpdates=True

Посмотрел ваш пример. Есть пару уточнений. Вы хотите дать пользователю через механизм Drag&Drop изменять структуру дерева, добавлять новую запись, удалять запись, и вы хотите чтобы эти действия записались в БД не сразу, а по кнопке *Сохранить*, и дать пользователю возможность отменить изменения. Но при этом вы хотите чтобы структура дерева менялась (визуализировалась) сразу же, без сохранеия в БД. Верно?.
 
Добавлено:
X11

Цитата:
Нужно сделать поиск с кнопками Далее и Назад. Что посоветуете?

Можно начать с посмотреть в сторону TcxDataControllerSearch Object:
ms-help://borland.bds5/ExpressDataController.BDS5/ExpressDataController/IDH_Class_TcxDataControllerSearch.htm
Думаю, что там все достаточно несложно.

Всего записей: 702 | Зарегистр. 13-11-2002 | Отправлено: 15:20 30-12-2009
crazypiggy

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

Цитата:
Вы хотите дать пользователю через механизм Drag&Drop изменять структуру дерева, добавлять новую запись, удалять запись, и вы хотите чтобы эти действия записались в БД не сразу, а по кнопке *Сохранить*, и дать пользователю возможность отменить изменения. Но при этом вы хотите чтобы структура дерева менялась (визуализировалась) сразу же, без сохранеия в БД. Верно?.

Да, верно.  

Всего записей: 57 | Зарегистр. 02-10-2008 | Отправлено: 15:41 30-12-2009
vladman

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

Цитата:
Да, верно.  

Чуть позже, подправлю ваш пример.

Всего записей: 702 | Зарегистр. 13-11-2002 | Отправлено: 15:54 30-12-2009
X11



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

Цитата:
Думаю, что там все достаточно несложно.  

Да, всё просто, но

Код:
 
Var
  cxDataControllerSearch: TcxDataControllerSearch;
begin
  cxDataControllerSearch := TcxDataControllerSearch.Create(Grid1.DataController);
  cxDataControllerSearch.Locate(Grid1.Controller.FocusedItemIndex, edSearch.Text);
 

 
Locate всегда возвращает False и искомый текст не подсвечивается, хотя из справки:
 
If a match exists, the focus moves to the found record and the search text is highlighted
 
Мало того, не могу понять, есть ли возможность ВЫКлючить регистрозависимость у cxDataControllerSearch? В справке по cxDataControllerSearch нет ничего относительно CaseSansitive.
 
Добавлено:
К сожалению,  cxDataControllerSearch ищет только по полному соответствию.

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

Всего записей: 3232 | Зарегистр. 24-11-2005 | Отправлено: 16:28 30-12-2009
Chukotka

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

Цитата:
Совет X11 использовать свойство InplaceEditor хорош. Но для вашего случая, установка курсора в нужную позицию, нужно понять в какой момент вы это хотите выполнить. Дело в том, что свойство InplaceEditor при неактивном редакторе (<YourcxVerticalGrid>.IsEditing = False) возвращает nil.
Да, конечно, все эти проверки делаются - меня интересовал принципиальный способ достучаться до внутреннего TcxMemo.

Всего записей: 409 | Зарегистр. 01-11-2006 | Отправлено: 16:53 30-12-2009
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот сделал такой поиск (регистронезависимый) на примере с "их" сайта. Может кто усовершенствует
 

Код:
 
procedure TfmScanner.actSerachNextExecute(Sender: TObject);
 
function GetRecordIndexByText(
             AView : TcxCustomGridView;
             AText : string;
             AColumnIndex : Integer) : Integer;
  var
    I: Integer;
  begin
    Result := - 1;
    with AView.DataController do
       for I := grid1.DataController.FocusedRecordIndex + 1 to RecordCount - 1 do
        if StrPos(PChar(AnsiUpperCase(DisplayTexts[I, AColumnIndex])), PChar(AnsiUpperCase(AText))) <> nil then
        begin
          Result := I;
          Break;
        end;
  end;
 
var
  ARecordIndex: Integer;
begin
// по умолчанию actSerachNext.Caption := 'Найти...';
 
  if grid1.DataController.RecordCount <= 0 then exit;
 
 //устанавливаем первую строку, если ничего не выбрано
 if grid1.DataController.FocusedRecordIndex < 0 then
   grid1.DataController.FocusedRecordIndex := 0;
 
 //устанавливаем колонку с текстом объявления, если ничего не выбрано
 if  grid1.Controller.FocusedColumnIndex < 0 then
   grid1.Controller.FocusedColumnIndex := colText.Index;
 
 
 if edSearch.Text <> '' then
    ARecordIndex := GetRecordIndexByText(grid1,
                                         edSearch.Text,
                                         grid1.Controller.FocusedColumnIndex);
 
  if ARecordIndex <> -1 then
    begin
      grid1.DataController.FocusedRecordIndex := ARecordIndex;
      actSerachNext.Caption := 'Следующее';
    end
  else
    actSerachNext.Caption := 'Найти...';
 
  lbSearchMatches.caption := 'Совпадений не найдено';
  lbSearchMatches.Visible := ARecordIndex = -1;
end;
 
 

 
Добавлено:
Единственный минус.
 
Этот ктод как бы не работает.

Цитата:
 //устанавливаем первую строку, если ничего не выбрано
 if grid1.DataController.FocusedRecordIndex < 0 then
   grid1.DataController.FocusedRecordIndex := 0;
 
 //устанавливаем колонку с текстом объявления, если ничего не выбрано
 if  grid1.Controller.FocusedColumnIndex < 0 then
   grid1.Controller.FocusedColumnIndex := colText.Index;  

 
 
Т.е. пока мышкой не щёлкнешь по гриду, GetRecordIndexByText будет возвращать всегда -1
 
Добавлено:
Подсвечивание слов в ячейках.
 
На этой строке  
          AEdit := TcxRichEdit(Edit);
 
Вываливается AV. Что не так?
 

Код:
procedure TfmScanner.HihgLight();
var
  I, FoundPos: integer;
  AColumn : TcxGridColumn;
  AEdit : TcxRichEdit;
begin
  with Grid1 do
  begin
    AColumn := colText;
 
    for I := 0 to ViewData.RecordCount - 1 do
      if ViewData.Rows[I].IsData then
      begin
        ViewData.Rows[I].Focused := True;
        with Controller.EditingController do
        begin
          ShowEdit(AColumn);
          AEdit := TcxRichEdit(Edit);
          FoundPos := AEdit.FindText(edSearch.Text, 0, Length(AEdit.Text), [stWholeWord]);
          if not (FoundPos < 0) then
          begin
            AEdit.SelStart := FoundPos;
            AEdit.SelLength := Length(edSearch.Text);
            AEdit.SelAttributes.Color:=clRed;
            AEdit.SelLength:=0;
          end
          else
            AColumn.Editing := False;
        end;
      end;
  end;//with
end;
 

Пример с "их" сайта.

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

Всего записей: 3232 | Зарегистр. 24-11-2005 | Отправлено: 17:07 30-12-2009
GOA78

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые господа.  
Использую cxGrid V46 DBTableView.  
При использовании метода OnFocusedRecordChanged метод вызывается 2 раза.  
Как решить эту проблему????

Всего записей: 18 | Зарегистр. 28-01-2006 | Отправлено: 18:42 30-12-2009
X11



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

Цитата:
При использовании метода OnFocusedRecordChanged метод вызывается 2 раза.  

Dev 47. Подтверждаю. А вот как решить не знаю

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

Всего записей: 3232 | Зарегистр. 24-11-2005 | Отправлено: 20:05 30-12-2009
JohnSilver182



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hi All
А можно с CxGrid сделать как на картинке  
Известен скажем ID типа товара ,  и ID модели  
ID типа вынести как заголовок
 

Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 21:26 30-12-2009
jonikDk



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

Цитата:
А можно с CxGrid сделать как на картинке  
Известен скажем ID типа товара ,  и ID модели  

по моему это простая группировка по ID типа и она легко делается ... или я вопрос не понял

Всего записей: 1511 | Зарегистр. 01-03-2004 | Отправлено: 22:26 30-12-2009
JohnSilver182



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jonikDk А если легко то какие свойства покурить ??

Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 22:59 30-12-2009
jonikDk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JohnSilver182
можно просто мышкой нужное поле (по которому ты хочешь группировать ) перетащить на Group Panel. Это можно делать как в дизайне так и в рантайме.

Всего записей: 1511 | Зарегистр. 01-03-2004 | Отправлено: 23:23 30-12-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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru