Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Использование DevExpress (часть 3)

Автор: vladman
Дата сообщения: 17.06.2009 17:09
brookson

Цитата:
но получится ли там в столбцах показывать фамилии и номера кабинетов....

Для этого используйте cxGridBandedTableView/cxGridDBBandedTableView
Автор: Meister Floh
Дата сообщения: 17.06.2009 20:07
Господа! Вышли 44-е девочки.. Очень много поменялось, в частности 5-й трилист появился и много ошибок исправлено.. в частности обсуждаемая проблема с CaptionButton... Ждем исходники..
Автор: Figaro2000
Дата сообщения: 18.06.2009 06:42
brookson
именно для построения-отображения подобных расписаний и создавался TcxScheduler (и окружающие его компоненты).
правда, вот эта фраза настораживает -

Цитата:
Мастер может быть занят одновременно в нескольких "кабинетах".

Автор: Dauren111
Дата сообщения: 18.06.2009 07:57
Вопрос по Express Bar!
Непонятно как работать с BarManager. Вот в демке сделана такая штука- Кнопка Save присуствует как и главном меню(в меню Файл), так и на простом тулбаре, причём вообщем это одна кнопка просто там с меню и тулбара сделаны линки на неё.
Не мог понять как же это всё таки делается в дизайн режиме, облазил всё. Заранее спасибо!

Автор: SIgor33
Дата сообщения: 18.06.2009 08:42
В cxGridDBBandedTableView есть несколько Band к ним относятся полей а несколько полей у которых ставлю band none не отображаются в таблице как исправить это дело
Автор: brookson
Дата сообщения: 18.06.2009 09:17
Спасибо всем за ответы, буду рыть дальше
Автор: f3ka
Дата сообщения: 18.06.2009 09:22
SIgor33
ну так логика как раз у cxGrid(DB)BandedTableView в том что поля должны быть привязаны в Band'у... если поля нужно отображать то почему бы не создать еще один Band, очистить его Caption и туда не засунуть эти одинокие поля...

Добавлено:
Figaro2000

Цитата:
brookson
именно для построения-отображения подобных расписаний и создавался TcxScheduler (и окружающие его компоненты).
правда, вот эта фраза настораживает -

Цитата: Мастер может быть занят одновременно в нескольких "кабинетах".

Автор: JohnSilver182
Дата сообщения: 18.06.2009 09:32
Hi
Я никак не могу въехать как в cxLookupComboBox1 набирать самому текст .
Автор: f3ka
Дата сообщения: 18.06.2009 09:45
JohnSilver182
что именно не получается? что значит набирать текст? чтоб можно было написать то чего нет в наборе данных к которому этот Lookup привязан? тогда надо установить свойство cxLookupComboBox1.Properties.DropDownListStyle = lsEditList... можно будет писать того чего нет, если есть то будет выбираться то что есть...
Автор: dimm78
Дата сообщения: 18.06.2009 10:14
Dauren111
В дезайнтайме эти фокусы могут быть реализованы обычным перетаскиванием.
Автор: JohnSilver182
Дата сообщения: 18.06.2009 10:25
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;
Автор: f3ka
Дата сообщения: 18.06.2009 10:56
JohnSilver182
ну так правильно... потому что присвоение значения происходит после отработки всех обработчиков нажатия клавиш... а cxLookupComboBox1.OnKeyDown и есть обработчик нажатия клавиш...
если уж необходимо поймать значение которое ввели и которого не было в датасете, то лучше использовать cxLookupComboBox1.Properties.OnNewLookupDisplayText, ну или cxLookupComboBox1.Properties.OnChange...
в самом крайнем случае можно смотреть на cxLookupComboBox1.OnKeyUp
Автор: SIgor33
Дата сообщения: 18.06.2009 11:10
f3ka
Я так и поступил но вот полоска между band и полями смущает избавиться бы
Автор: JohnSilver182
Дата сообщения: 18.06.2009 12:27

Цитата:
в самом крайнем случае можно смотреть на 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;
Автор: f3ka
Дата сообщения: 18.06.2009 13:04
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;
Автор: JohnSilver182
Дата сообщения: 18.06.2009 17:31
f3ka Я упорно искал cxLookupComboBox1.EditText.SelStart ))

Автор: FunCode
Дата сообщения: 18.06.2009 22:42
JohnSilver182

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

разве это не EditingText ...
Автор: f3ka
Дата сообщения: 19.06.2009 07:58
FunCode
к сожалению нет... я сам был очень удивлен когда видел там другое
Автор: ATAWA
Дата сообщения: 19.06.2009 13:52
Вопрос по dxDBTreeView (v4.1)
DBTreeView соединен с селфреференс таблицей в БД oracle посредством adoconnection-adotable-datasource.
Для работы с данными дерева (изменение, добавление, удаление, перетаскивание…) используются стандартные методы DBTreeView, соответствующие post_ы производятся компонентом DBTreeView автоматически.
При работе с одной машины все без проблем.
При параллельной работе нескольких пользователей возникают коллизии, т.к. на одной машине не видно изменений сделанных в таблице дерева на сервере с другой машины (например, при добавлении записи возникает ошибка уникальности по первичному ключу).
Пробовал различные комбинации свойств управления транзакциями adoconnection,adotable – не помогло
Методы DataSet.Refresh и DBTreeView.RefreshItems не помогают получить обновленные данные с сервака
Как быть? Неужели придется писать обработчики редактирования таблицы дерева на уровне датасета?
Заранее спасибо за ответы.
Автор: f3ka
Дата сообщения: 19.06.2009 14:30
ATAWA
все же интересует, а данные то попадают в таблицы СУБД после Post'а DBTreeView? может каким то образом происходит кеширование изменений и они до СУБД не доходят поэтому и не видно на другом клиенте...
Автор: ATAWA
Дата сообщения: 19.06.2009 14:49
Проверил.
Да, данные после поста дбтреевью сразу записываются в таблицу oracle (смотрел ч/з pl/sql).
Но на другом клиенте новую запись помогает увидеть только реопен датасета.
Хотя переименование записи видно и рефрешем датасета, а вот добавление только реопеном...
Автор: sldaac
Дата сообщения: 21.06.2009 02:27
приветствую всех

есть cxGridDBTableView, и суммируется по одно колонке . Как получить занчение суммы .

нашел .....DataBinding.DataController.Summary.FooterSummaryValues[0];
поправьте если ошибся
спсб.
Автор: Meister Floh
Дата сообщения: 21.06.2009 12:39
Господа кто ставил DevExpress под BCB2009 ручками? Поделитесь опытом.. Потому как "бьюсь как рыба об лед" уже с неделю.. Напрямую из *.bpk не компиляются.. AV при открытии любого компонента.. Голову уже поломал..
Автор: JohnSilver182
Дата сообщения: 21.06.2009 18:37
По cxLookupComboBox1 надо методичку искать (

Я когда набираю по буквам : дошло до 2- буков , обновляю ДАТАСЕТ . Так вот , что бы cxLookupComboBox1 раскрылся надо ввсести обязательно еще одну букву .
Автор: SIgor33
Дата сообщения: 22.06.2009 08:31
Вопрос по Printexpress ни как не найду где в свойствах выставить чтобы высота ячеек автоматически расширялась взависимости от содержимого, если оно не помещается в ее.
Автор: volser
Дата сообщения: 22.06.2009 15:45
ATAWA

Для того что бы увидеть все изменения сделанные с другой программы нужно переоткрывать датасет (close/open).
В зависимости от использующих компонент метод Refresh датасета ведет себя по разному.
В некоторых датасетах он обновляет только текущую запись, а новые записи не видны.
Автор: f3ka
Дата сообщения: 22.06.2009 15:50
volser
откуда такие познания про переоткрытие набора данных? чаще всего Refresh датасета работает корректно... некорректно работает только у некоторых компонент доступа...
ATAWA
какие компоненты доступа используются? возможно не указаны RefreshSQL для компонент доступа...
Автор: volser
Дата сообщения: 22.06.2009 16:15
f3ka

RefreshSQL прописывается для обновления одной записи. Если посмотрите на скл который генерируется на основании таблицы,
то увидите такую строчку WHERE ID = :ID.
Автор: f3ka
Дата сообщения: 22.06.2009 16:31
volser
ну как то странно это все происходит... это зависит скорее всего от КОМПОНЕНТ ДОСТУПА... сейчас проверил на SDAC'е... используя TMSQuery.Refresh замечательно появляются записи которые были добавлены из другой проги... никаких RefreshSQL и ему подобных не прописывалось... так что все зависит от реализации компонент доступа...
Автор: volser
Дата сообщения: 22.06.2009 17:02
f3ka

Я так и написал

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


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

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

Предыдущая тема: Delphi: tcp клиент в потоке


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.