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

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



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka  - спасибо !!
 
Я  вот только  не пойму . Событие cxLookupComboBox1KeyDown  срабатывает  ПЕРЕД изменением величины EditText  .  В результате имею я  устаревшее  значение EDITTEXT
 
procedure TPolygon.cxLookupComboBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = 13  then begin
      ShowMSg('EDITTEXT '+self.cxLookupComboBox1.EditText);
  end;
 
  if key>31 then
   begin
       ShowMSg('EDITTEXT '+self.cxLookupComboBox1.EditText);
  end;
 
end;

Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 11:25 18-06-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JohnSilver182
ну так правильно... потому что присвоение значения происходит после отработки всех обработчиков нажатия клавиш... а cxLookupComboBox1.OnKeyDown и есть обработчик нажатия клавиш...  
если уж необходимо поймать значение которое ввели и которого не было в датасете, то лучше использовать cxLookupComboBox1.Properties.OnNewLookupDisplayText, ну или cxLookupComboBox1.Properties.OnChange...
в самом крайнем случае можно смотреть на cxLookupComboBox1.OnKeyUp

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 11:56 18-06-2009
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
Я так и поступил но вот полоска между band  и полями смущает избавиться бы

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 12:10 18-06-2009
JohnSilver182



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

Цитата:
в самом крайнем случае можно смотреть на cxLookupComboBox1.OnKeyUp

Круто ,  работает !
Но вот только когда  ищется  ДАТАСЕТ,  если  значения  cxLookupComboBox1.EditText  совпадают  с ДАТАСЕТ , значение  из   ДАТАСЕТ  идет в  cxLookupComboBox1.EditText   . Как бы это убрать . Или  как получить  текст который ручками  набирался ??
 
 
 
 
 
procedure TPolygon.cxLookupComboBox1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if key>31 then  Искать_по_первым_буквам(self.cxLookupComboBox1.EditText);
end;

Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 13:27 18-06-2009
f3ka

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

Код:
procedure TForm1.cxLookupComboBox1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  tmp: string;
begin
  if key>31 then
   begin
     tmp := Copy(cxLookupComboBox1.EditText, 1, cxLookupComboBox1.SelStart) ;
     ShowMessage('EDITTEXT '+tmp);
  end;
end;

З.Ы. надо все таки изучать то, что используешь... хотя бы чуть...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 14:04 18-06-2009
JohnSilver182



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka  Я  упорно  искал  cxLookupComboBox1.EditText.SelStart ))
 

Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 18:31 18-06-2009
FunCode



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

Цитата:
Или  как получить  текст который ручками  набирался ??

разве это не EditingText ...

Всего записей: 182 | Зарегистр. 22-10-2006 | Отправлено: 23:42 18-06-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FunCode
к сожалению нет... я сам был очень удивлен когда видел там другое

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос по dxDBTreeView (v4.1)
DBTreeView  соединен с селфреференс таблицей в БД oracle посредством adoconnection-adotable-datasource.
Для работы с данными дерева (изменение, добавление, удаление, перетаскивание…) используются стандартные методы DBTreeView, соответствующие post_ы производятся компонентом DBTreeView автоматически.
При работе с одной машины все без проблем.
При параллельной работе нескольких пользователей возникают коллизии, т.к. на одной машине не видно изменений сделанных в таблице дерева на сервере с другой машины (например, при добавлении записи возникает ошибка уникальности по первичному ключу).
Пробовал различные комбинации свойств управления транзакциями adoconnection,adotable – не помогло
Методы DataSet.Refresh и DBTreeView.RefreshItems не помогают получить обновленные данные с сервака
Как быть? Неужели придется писать обработчики редактирования таблицы дерева на уровне датасета?
Заранее спасибо за ответы.

Всего записей: 10 | Зарегистр. 21-02-2003 | Отправлено: 14:52 19-06-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ATAWA
все же интересует, а данные то попадают в таблицы СУБД после Post'а DBTreeView? может каким то образом происходит кеширование изменений и они до СУБД не доходят поэтому и не видно на другом клиенте...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 15:30 19-06-2009
ATAWA

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проверил.
Да, данные после поста дбтреевью сразу записываются в таблицу oracle (смотрел ч/з pl/sql).
Но на другом клиенте новую запись помогает увидеть только реопен датасета.
Хотя переименование записи видно и рефрешем датасета, а вот добавление только реопеном...

Всего записей: 10 | Зарегистр. 21-02-2003 | Отправлено: 15:49 19-06-2009
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
приветствую всех
 
есть cxGridDBTableView, и суммируется по одно колонке . Как получить занчение суммы .
 
нашел .....DataBinding.DataController.Summary.FooterSummaryValues[0];  
поправьте если ошибся
спсб.

Всего записей: 721 | Зарегистр. 15-06-2005 | Отправлено: 03:27 21-06-2009 | Исправлено: sldaac, 03:45 21-06-2009
Meister Floh



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа кто ставил DevExpress под BCB2009 ручками? Поделитесь опытом.. Потому как "бьюсь как рыба об лед" уже с неделю.. Напрямую из *.bpk не компиляются.. AV при открытии любого компонента.. Голову уже поломал..

Всего записей: 393 | Зарегистр. 04-08-2003 | Отправлено: 13:39 21-06-2009
JohnSilver182



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По  cxLookupComboBox1  надо методичку искать (
 
Я  когда  набираю  по буквам : дошло до 2- буков ,  обновляю ДАТАСЕТ .  Так вот ,  что  бы cxLookupComboBox1  раскрылся надо ввсести обязательно  еще одну букву .  

Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 19:37 21-06-2009
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос по Printexpress ни как не найду где в свойствах выставить чтобы высота ячеек автоматически расширялась взависимости от содержимого, если оно не помещается в ее.

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 09:31 22-06-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ATAWA
 
Для того что бы увидеть все изменения сделанные с другой программы нужно переоткрывать датасет (close/open).
В зависимости от использующих компонент метод Refresh датасета ведет себя по разному.
В некоторых датасетах он обновляет только текущую запись, а новые записи не видны.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 16:45 22-06-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volser
откуда такие познания про переоткрытие набора данных? чаще всего Refresh датасета работает корректно... некорректно работает только у некоторых компонент доступа...
ATAWA
какие компоненты доступа используются? возможно не указаны RefreshSQL для компонент доступа...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 16:50 22-06-2009 | Исправлено: f3ka, 16:51 22-06-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
 
RefreshSQL прописывается для обновления одной записи. Если посмотрите на скл который генерируется на основании таблицы,
то увидите такую строчку WHERE ID = :ID.

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

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volser
ну как то странно это все происходит... это зависит скорее всего от КОМПОНЕНТ ДОСТУПА... сейчас проверил на SDAC'е... используя TMSQuery.Refresh замечательно появляются записи которые были добавлены из другой проги... никаких RefreshSQL и ему подобных не прописывалось... так что все зависит от реализации компонент доступа...

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

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

Цитата:
В зависимости от использующих компонент метод Refresh датасета ведет себя по разному.  

 
Посмотрел даки. В них метод Refresh сам переоткрывает датасет, если посмотреть по стеку то можно встретить метод DataReopen.
Для обновления одной строки используется метод RefreshRecord, который в свою очередь использует RefreshSQL.
Хотя в тех же более стандартных компонентах IBX метод работает как обновление одной строки.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 18:02 22-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