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

» Использование DevExpress 2

Автор: RWSergey
Дата сообщения: 28.10.2008 10:45
Здравствуйте!!!
Прошу совета вот на такую ситуацию:
Из таблици БД выводятся данные в cxGrid, в одном из полей числа типа Real, в той же таблице есть поля указывыающие на формат данного числа, т.е. одно поле кол-во знаков до запятой и второе после запятой.
Возможно ли сделать так чтобы число (типа real) выводилось(отображалась) в каждой строчке cxGrid со своим форматом, описанным в тех двух полях.
т.е. для каждой записи cxGrid ячейка имеет разный формат вывода числа.

Спасибо!
Автор: Czechoslovak
Дата сообщения: 28.10.2008 11:10
RWSergey
Ну что нить такое OnGetDisplayText .... AText := Format(ARecord.values[ColumnFormat.Index],ARecord.values[ColumnValue.Index])

Автор: RWSergey
Дата сообщения: 28.10.2008 12:48
Czechoslovak
Спасибо, помогло. Работает как задумано..
Автор: MagistrAnatol
Дата сообщения: 28.10.2008 15:50
Господа,как для TcxGridDBTableView програмно установить фильтр,другого варианта нету - так как плохие компоненты АДО не хотят фильтровать детайл таблицы
Автор: f3ka
Дата сообщения: 28.10.2008 16:23
MagistrAnatol взято из хелпа девок

Код:
The following example demonstrates how to set filter criteria for the following string:

(CustNo < 1000) AND ((Name LIKE 'A%') OR (Name LIKE 'Z%')).

The DBTableView1CustNo and DBTableView1Name objects are of the TcxGridDBColumn class. They identify the desired items in a grid control.

To prevent filter criteria from being updated every time a filter condition is added, operations are enclosed within the TcxFilterCriteria.BeginUpdate and TcxFilterCriteria.EndUpdate methods.

var
AItemList: TcxFilterCriteriaItemList;
//...
FDataController.Filter.BeginUpdate;
try
FDataController.Filter.Root.Clear;
FDataController.Filter.Root.AddItem(DBTableView1CustNo, foLess, 1000, '1000');
AItemList := FDataController.Filter.Root.AddItemList(fboOr);
AItemList.AddItem(DBTableView1Name, foLike, 'A%', 'A%');
AItemList.AddItem(DBTableView1Name, foLike, 'Z%', 'Z%');
finally
FDataController.Filter.EndUpdate;
end;
FDataController.Filter.Active := True;

Автор: jicoff
Дата сообщения: 28.10.2008 18:40
Sufferer

Чесно говоря не совсем понятно на какой Row устанавливается фокус после удаления записи, т.к. эта переменная не инициализируется перед удалением.
Автор: Sufferer
Дата сообщения: 28.10.2008 22:42

Цитата:
Чесно говоря не совсем понятно на какой Row устанавливается фокус после удаления записи, т.к. эта переменная не инициализируется перед удалением.

Вот ведь, а слона то я и не заметил. Спасибо за наводку, я уже всю голову сломал.
Автор: X11
Дата сообщения: 29.10.2008 01:38
Кто подскажет, можно ли как-то у компоненты TcxComboBox скрыть все сколлбары? Если да, то как? Спасибо.
Автор: VAbramyak
Дата сообщения: 01.11.2008 15:35
Есть проблема с cxCheckLIstBox. При его наполнении посредством Additem, items в cxCheckLIstBox дергает, типа делает repaint, как-то некрасиво і долго это делает. В стандартной компоненте Delphi работает нормально. Это баг или особенность?
Автор: f3ka
Дата сообщения: 01.11.2008 16:02
VAbramyak думаю что сказать что это (баг или фича), будет очень трудно, если ты не разработчик...
Проблема еще в том что почему то нету BeginUpdate/EndUpdate которые бы могли это исправить
Автор: VAbramyak
Дата сообщения: 01.11.2008 16:05

Цитата:
Проблема еще в том что почему то нету BeginUpdate/EndUpdate которые бы могли это исправить

Где именно нету?
Автор: f3ka
Дата сообщения: 01.11.2008 16:15
VAbramyak у cxCheckListBoxa нету BeginUpdate/EndUpdate
Автор: VAbramyak
Дата сообщения: 01.11.2008 16:21
Все, разобрался. У items есть BeginUpdate/EndUpdate. Теперь все нормально.
cxCheckListBox1.Items.BeginUpdate;
for I := 0 to 1000 do
begin
cxCheckListBox1.AddItem(IntToStr(i));
end;
cxCheckListBox1.Items.EndUpdate;
Отрисовывает без передергиваний.
Автор: mDmitriy
Дата сообщения: 03.11.2008 19:08
Приветствую, All...

Подскажите, плиз, как приложению (в смысле, компонентам DevExpress) использовать цветовые схемы Windows?
Знаю, что можно присвоить всем видимым компонентам соответсвующее свойство Style: TcxStyle, но как в этот Style загрузить соответствующие цвета?
Можно, конечно, руками настроить, но это тоскливо...
Хотелось бы, чтобы по умолчанию загружались цвета из установленной в Windows пользовательской схемы, но можно было бы так же и выбрать цветовую гамму из списка.
Delphi 2007, DevExpress x.38

Очень буду благодарен на ссылки с примером...

PS. Прошу прощения, если это где-то уже обсуждалось...
Автор: xokc
Дата сообщения: 04.11.2008 10:32
mDmitriy
Каким именно компонентам и какие именно цвета? Они и так соответствуют цветовой схеме Windows.
Автор: Bill_PHO
Дата сообщения: 04.11.2008 15:04
Не подскажет ли кто, можно ли и, если можно, то как в cxDBTreeList раскрашивать отдельные ячейки дерева в зависимости от их значений используя стили?
Автор: ZalivkoDenis
Дата сообщения: 04.11.2008 15:45
Люди! Помогите ламе. Совсем умом повренулся... Пользую девы.38 с фибами. Как организовать просмотр в квантумгриде в режиме MasterDetail, причём Detail - это query c параметром? Чего только не делал с DataControlller'ом - посинел уже... Где-то клинит... Может подскажет кто решение?
Спасибо!
Автор: mDmitriy
Дата сообщения: 04.11.2008 18:47
to xokc
Имеются ввиду разные Grid'ы и Edit'ы, у которых можно определить гамму цветом через свойство TcStyle, с помощью TcxEditStyleController или типа того...
По умолчанию цвета всех компонентов соответствуют загруженной схеме Windows, но на ноутбуке под Windows Vista выглядит поганенько...
Поэтому хотелось бы иметь возможность загружать в приложение любую цветовую схему Windows из доступных...
Т.е., фактически, определить цвета для TcxEditStyleController из схемы Windows, а на него ссылаться из всех прочих компонентов.
Автор: Ziltoid
Дата сообщения: 05.11.2008 03:03
Bill_PHO

Цитата:
Не подскажет ли кто, можно ли и, если можно, то как в cxDBTreeList раскрашивать отдельные ячейки дерева в зависимости от их значений используя стили?


Ну как... Обыкновенно. Стили можно завести заранее в StyleRepository, а можно и создать на лету, если надо. В cxDBTreeList повеситься на обработчик OnGetContentStyle - и вперед


Добавлено:
ZalivkoDenis

Цитата:
Как организовать просмотр в квантумгриде в режиме MasterDetail, причём Detail - это query c параметром? Чего только не делал с DataControlller'ом - посинел уже... Где-то клинит...


А параметр в Query поди равен ID из Master'а? Если да, то так, насколько я помню, не покатит. Подчиненную выборку в случае с КвантумГридом надо выбирать всю целиком. КвантумГрид сам разберется, что там и как. Только у DataController'а надо правильно прописать MasterKeyFieldNames и DetailKeyFieldNames.



Добавлено:
Пару страниц назад я пиарил DLL со скинами из библиотеки dxSkins. Наконец-то дошли руки до выкладки на файлообменник.
Скачать DLL можно здесь: http://rapidshare.com/files/160760576/SkinDLL.rar.html

Архив включает в себя:
- DLL со скинами (помимо скинов есть битмапы 16х16 для ImageCombobox'ов, битмапы 32х32 для RibbonGallery, константы цветов полосатости и фонов для каждого скина)
- модулек SkinHandle.pas с процедурками загрузки и навешивания скина на приложение.
- тестовый пример.

Кто может, прибейте, плз, архив сверху, чтоб не затерялся.
Автор: samusev
Дата сообщения: 05.11.2008 08:06
Ziltoid
Спасибо за скины

А теперь призыв о помощи.
собственно код в главной программе

Код:
var
Comp,Comp2 : TComponent;
RibbonTabX: TdxRibbonTab;
begin
Comp := Application.MainForm.FindComponent('Ribbon');
if assigned(Comp) then begin
RibbonTabX := TdxRibbon(Comp).Tabs.Add;
RibbonTabX.Ribbon.BeginUpdate;
with RibbonTabX do begin
Name := 'RibbonTab'+IntToStr(TdxRibbon(Comp).TabCount);
Tag := TdxRibbon(Comp).TabCount;
Active := False;
Caption := 'Таблица';
Comp2 := Application.MainForm.FindComponent('BarManager');
if assigned(Comp2) then begin
with RibbonTabX.Groups.Add do begin

//===> ToolBar := TdxBarManager(Comp2).BarByComponentName('BarManagerDocumentBar');
ToolBar.Visible := true;
end;
end;
end;
end;
end;
Автор: ZalivkoDenis
Дата сообщения: 05.11.2008 08:27
Ziltoid

Цитата:
Подчиненную выборку в случае с КвантумГридом надо выбирать всю целиком.

Обычно так и делаю. Но, в данном случае слишком большая нагрузка на сервер и, что немаловажно, на слабенькую сеть, чтобы весь массив выбирать. В хелпе написано, что пожно деталь организоввывать именно по параметру, но ни примеров, ни хотя бы какого-нибудь маленького описания нет.
Я всё-таки склоняюсь к мысли, что как-то можно всё-таки по параметру, может быть не только "мышкой двигая"... Вот только вопрос КАК?
Да, и ещё, TQuery и TpFIBQuery - немного разные вещи... Так, TpFIBQuery невозможно прицепить к TDataSource. По-этому мастер-деталь по-любы использует те же TpFIBDataSet. Но, даже так не прокатывает. Там есть ещё эвент OnDetailFirst. Такое ощущение, что "пляску" нужно устраивать с этого места...
Проект горит, потому ВРЕМЕННО сделал выборку всего массива кортежей, НО надеюсь, что, может быть кто-нибудь подскажет ПРАВИЛЬНОЕ решение.
Спасибо!
Автор: Ziltoid
Дата сообщения: 05.11.2008 08:33
samusev

А Toolbar какого типа?
Автор: samusev
Дата сообщения: 05.11.2008 08:35
Ziltoid

ToolBar : TdxBar;

естественно

Добавлено:
Ziltoid

Вопрос снят... "Учите матчасть." как сказал кто-то из великих..

Рей Лишнер. стр. 21 "не использоватьссылку на объект через границу dll... DLL всегда считает что класс А библы и класс А приложения разные..."

Придется использовать bpl - они решают все означенные проблемы...
Автор: Ziltoid
Дата сообщения: 05.11.2008 08:57
samusev

Вообще фиг знает. Так то все правильно. А явно обращаться не пробовал?
В смысле

RibbonGroup := RibbonTabX.Groups.Add;
RibbonGroup.ToolBar := ...

Добавлено:
samusev

Ну вот видишь Я ж тебе еще в письме писал, что указатели (тем более на экземпляры классов) в ДЛЛ передавать - опасное дело.

Добавлено:
ZalivkoDenis

Цитата:
В хелпе написано, что пожно деталь организоввывать именно по параметру, но ни примеров, ни хотя бы какого-нибудь маленького описания нет.


Наверное там все-таки два разных грида имелись ввиду, а не два уровня.
Автор: yurik13y
Дата сообщения: 05.11.2008 10:07
Подскажите пожалуйста:

1. cxGrid, на названиях колонок при щелчке правой кнопкой мыши выпадает менюшка, как её отключить/включить?

2. cxGrid, как программно подобрать ширину колонок, хотя бы вызвать такой пункт с менюшки (см. 1)

???
Автор: f3ka
Дата сообщения: 05.11.2008 11:00
yurik13y
1. скорее всего добавлен на форму TcxGridPopupMenu, поэтому возможно поможет отключить свойство UseBuiltInPopupMenu...
2. у View который в cxGride есть метод ApplyBestFit (View.ApplyBestFit). Если не указывать параметры то у всех колонок будет подобрана ширина колонок...
Автор: ZalivkoDenis
Дата сообщения: 05.11.2008 12:08
Ziltoid

Цитата:
Наверное там все-таки два разных грида имелись ввиду, а не два уровня.

Наверно всё-таки нет...
[more=Выдержка из хелпа]
TcxDBDataModeController
--------------------------------------------------------------------------------

Determines whether the detail data controller is linked to a parameterized query dataset.

Syntax
property DetailInSQLMode: Boolean;
Description

Set the DetailInSQLMode property to True to indicate that the corresponding detail DataController is linked to a parameterized query dataset (TQuery, for instance).

Parameters of a query must correspond to the detail key field names set using the DataController.DetailKeyFieldNames property.

When opening a specific detail, the query must be re-opened with the parameters set to values obtained from a corresponding master data controller record. This can be performed automatically for BDE and ADO queries if the parameter names are the same as the detail key field names (DataController.DetailKeyFieldNames). Note that you must add the cxADOAdapters unit to the uses section of your form if you want this to work for ADO queries.

The OnDetailFirst event allows you to set query parameters and re-open the query manually, but this is not a common practice. Refer to its description for more information.


Important Note: When in Grid mode, detail data controllers cannot be linked to a parameterized query dataset, i.e. in this mode, the master data controller's DetailInSQLMode property should be set to False.


The default value of the DetailInSQLMode property is False.

[/more]
Вопрос остаётся...
Автор: yurik13y
Дата сообщения: 05.11.2008 12:10
f3ka
спасибо!
Автор: samusev
Дата сообщения: 05.11.2008 15:25
Ziltoid

Потратил день на переход в bpl. Изучение интерфейсов и проч.

Несмотры на все рассказки авторов и хелпов доступ к главному приложению (Application) закрыт напрочь. Т.е. если из DLL я мог хоть Таб в Риббон добавить, то из BPL прямое обращение к Application падает с AV rtl100. Если через локальную для bpl копию HostApplication, то при обращении к типизованному TComponent в выделенной строке

Код:
var
Comp,Comp2 : TComponent;
RibbonTabX: TdxRibbonTab;
begin
Comp := Application.MainForm.FindComponent('Ribbon');
if assigned(Comp) then begin
===> RibbonTabX := TdxRibbon(Comp).Tabs.Add;
RibbonTabX.Ribbon.BeginUpdate;
Автор: ZalivkoDenis
Дата сообщения: 05.11.2008 16:10
А у меня вот отклинило, наконец
Чтобы использовать Master-Detail, а в детали использовать запрос с параметром, который берётся из мастера, нужно попросту перевести вьюшку в режим GridMode (птицу напротив проперти соответствующей поставить), а отношение мастер-деталь организовать из-вне грида посредством связки MasterDataset-DataSource-DetailDataset...
Как-то так Правда, за счёт использования режима GridMode на сам грид накладываются некоторые ограничения типа локальной фильтрации и всё-такое, но зато получаем короткие ответы на запросы - актуально для слабых сетей.
Так что, если кого также заклинит по этому поводу - милости прошу в ПМ за подробностями
Спасибо всем участвующим!

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

Предыдущая тема: Язык программирования на русском языке


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