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

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

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
Здесь пример того как можно использовать cxLocalizer

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
 
У DevExpress свой механизм локализации который работает только с ихними компонентами. Возможно этот механизм можно использовать и для других компонент. Работа с ресурсами идет через класс TdxResourceStringsRepository с модуля dxCore. Так же обратите внимание на интерфейс IdxLocalizerListener который извещает компоненты о смене локализации.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 14:01 24-06-2009
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Roma4ke
 
Не получилось перевести на С++ или не заработал код?

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 16:12 24-06-2009
Roma4ke

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код не заработал. у меня находит  1 контрол( Controls[I] ) -  cxGrid.  почему контролы которые в cxGrid-е находятся не видит ?

Всего записей: 21 | Зарегистр. 24-06-2009 | Отправлено: 16:54 24-06-2009
volser

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

Цитата:
Код не заработал

 
Покажите как пробовали, и что именно не получилось?

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 17:09 24-06-2009
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Roma4ke
 
А кто Owner контролов? Controls[I] у формы берется? Вообще-то все контролы созданные в дезайне принадлежат форме.

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пишу такой код :
  for (int  i =0; i<  ControlCount - 1 ; i++)
       if (TcxButtonEdit(Controls[i]).RepositoryItem == cxEditRepository1ButtonItem1)
      TcxButtonEdit(Controls[i]).Style->Assign(cxButtonEdit1->Style);
 
cxButtonEdit1 - созданная мной красивая кнопка со стилем, хочу придать другим кнопкам из repositorybutton, такой же стиль.
 
суть такая что Controls содержит только cxGrid, а то что cxGrid содержит колонку с кнопками не показыват.

Всего записей: 21 | Зарегистр. 24-06-2009 | Отправлено: 17:16 24-06-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Roma4ke
 
В класса TcxCustomGridTableView есть событие OnInitEdit. Напишите на нее такой код
Код:
 AEdit.Style->Assign(cxButtonEdit1->Style);  

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 17:24 24-06-2009
ATAWA

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

Цитата:
ATAWA  
какие компоненты доступа используются? возможно не указаны RefreshSQL для компонент доступа...

 
Компоненты доступа, если я правильно понимаю о чем вопрос, используются ADODB из стандартного набора Delphi 7.  
ADOConnection-для соединения с БД (ч/з connection string)
ADOTable - для соединения с таблицей дерева.
Ну и стандартный TDataSource - для связки ADOTable с dxDBTreeView.
Ничего похожего на RefreshSQL у этих компонент не нашел
ADODB использую потому что не нашел ничего лучше из стандартного делфового, что-бы и с SQL и с Oracle могло работать.
 
Задумка была - сделать такую связку и практически без кодирования получить прогу для редактирования дерева в БД, но вот возникли вышеописанные проблемы при параллельной работе
 
Может такой подход в принципе непроходит с такими компонентами?

Всего записей: 10 | Зарегистр. 21-02-2003 | Отправлено: 17:35 24-06-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ATAWA
 
Close/Open для ADOTable чем не устраивает?

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 17:41 24-06-2009
ATAWA

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

Цитата:
ATAWA  
 
Close/Open для ADOTable чем не устраивает?

 
В смысле программно делать Close/Open ADOTable перед каждой попыткой редактирования дерева пользователем?

Всего записей: 10 | Зарегистр. 21-02-2003 | Отправлено: 17:47 24-06-2009
Roma4ke

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
спасибо за совет. попробовал ,  OnInitEdit присваивает стиль , только когда произошло нажатие,  а когда нет действий кнопики прежние.

Всего записей: 21 | Зарегистр. 24-06-2009 | Отправлено: 17:47 24-06-2009
volser

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

Цитата:
В смысле программно делать Close/Open ADOTable перед каждой попыткой редактирования дерева пользователем?

 
Не совсем так. Можно на форме сделать кнопку "Обновить данные" на клик которой переоткрывать набор данных. Если пользователь хочет увидеть изменения, то он нажимает на эту кнопку и получает новые данные.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 17:58 24-06-2009
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Roma4ke
 
А что такое
Цитата:
а то что cxGrid содержит колонку с кнопками не показыват

 
Т.е. в колонке выбран редактор TcxEditButtons, у которого много кнопок? Если так, то эти кнопки без Owner'а, и они не могут быть выбраны таким способом.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 18:54 24-06-2009
volser

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

Цитата:
..а когда нет действий кнопики прежние.

 
Добавьте следующий код (пишу на Delphi)
 

Код:
 
 
type
  TcxCustomGridTableItemWrapper = class(TcxCustomGridTableItem);
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  with TcxCustomGridTableItemWrapper(cxGrid1TableView1Column1) do begin
    GetCellStyle.Assign(cxButtonEdit1.Style);
  end;
end;
 
 


Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 19:08 24-06-2009
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Roma4ke
 
Кстати, если посмотреть переписку, откуда взят этот пример, то этот код так же не заработал. Далее дается ссылка на пример Example.zip, где предлогается использовать CustomDraw, это при поверхностном просмотре рекомендуемого кода, детально не изучал.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 19:08 24-06-2009
volser

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

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 19:14 24-06-2009
Roma4ke

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вствил такую строчку
TcxCustomGridTableItem(cxGrid1TableView1Column1).Styles->Assign(cxButtonEdit1->Style);  - ничего не изменяется и вылетает ошибка ,  а функции GetCellStyle нету ((( . и я не понял зачем новый тип создавать ?

Всего записей: 21 | Зарегистр. 24-06-2009 | Отправлено: 19:34 24-06-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Roma4ke
 
GetCellStyle - protected свойство, что бы оно было доступно нужно что бы тип был объявлен в это же юните. Для  этого создается новый тип. Дальше нашу колонку нужно привести к этому типу.
 
У меня
Код:
TcxCustomGridTableItemWrapper(cxGrid1TableView1Column1)

у тебя
Код:
TcxCustomGridTableItem(cxGrid1TableView1Column1)

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 20:02 24-06-2009
ATAWA

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

Цитата:
Не совсем так. Можно на форме сделать кнопку "Обновить данные" на клик которой переоткрывать набор данных. Если пользователь хочет увидеть изменения, то он нажимает на эту кнопку и получает новые данные.

 
Да это не вопрос, такая кнопка давно есть.
Проблема в том, что не заставлю же я каждый раз пользователя нажимать эту кнопку перед, допустим, добавлением записи в дерево.
А получается, следующее: Если с одного клиента добавить запись в дерево и потом с другого клиента без реопена датасета добавлять запись на тот же уровень дерева, возникает ошибка уникальности по первичному ключу (ID+PARENT_ID) в таблице дерева. Как я понимаю, это происходит потому, что при добавлении записи DbTreeView не получает обновленные данные с сервера и, соответственно, не может правильно сгенерировать новый ID.
Или например, добавляет юзер подузел в дерево, а на другом клиенте перед этим родителя этого подузла удалили, после обновления (реопена датасета) добавленный подузел улетает в корень дерева, т.к. его PARENT_ID ссылается на несуществующий объект.
Мне сначала представлялось, что DbTreeView может оперативно видеть обновленные данные на серваке как-то обрабатывать такии коллизии, выходит что это не так
Получается надо вешать реопен всего датасета плюс писать соответствующие проверки на событие перед добавлением записи, но это как-то некрасиво, и долго если это будет очень большая таблица, был бы мягкий рефрешь какой-нибудь....
Ну или еще вариант, самому генерить новый ID, но это все равно только через селект к таблице дерева

Всего записей: 10 | Зарегистр. 21-02-2003 | Отправлено: 10:12 25-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