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

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

Автор: shulum
Дата сообщения: 17.03.2009 19:18
Felias Fogg

Да Вы, батенька, мечтатель
Нет, такого добра не водится
Автор: Felias Fogg
Дата сообщения: 17.03.2009 19:40
xokc

Цитата:
Подобное есть в экспертах gexperts и cnwizard. Но не все, что тебе нужно. Кроме того, раньше в само devexpress был такой эксперт.

Не помнишь, как такой эксперт в devexpress назывался или где его взять?
Автор: vladman
Дата сообщения: 17.03.2009 22:08
Felias Fogg

Цитата:
Перехожу на DevExpress, нужно преобразовать дельфийские компоненты - TDbEdit, TDbGrid в аналоги от DevExpress - TcxDBEdit, например.

К сожалению, невеселые новости. Подробнее -
[Question Details: Easy migration from standard VCL?]
Автор: sldaac
Дата сообщения: 17.03.2009 23:45
Подскажите где собака порылась.
Есть грид (TcxGrid+TcxGridLevel +TcxGridDBTableView) с тремя уровнями, на каждом уровне своя вьюшка. Все связано, настроено (DataSet.....) Запускаю, слева (+) на который кликаеш, открываются нижний уровеь. Все-бы хорошо, никак не могу настроить что-бы при развернутой какой нибудь записи (1 уровень, 2 уровень...), если кликаю на самом верхнем уровне на следующей записи (на +), что-бы развернутая свернулась, а кликнутая развернулась. Сейчас можно покликать на + и развернуть все, мне надо что-ба оставалось на самом верхнем уровне только одна развернутая запись.
ps/ Блин клин поймал, делал в одном проекте давно, знаю что должно быть.
Спсб всем.
Автор: vladman
Дата сообщения: 18.03.2009 00:39
sldaac

Цитата:
Подскажите где собака порылась.

Если правильно понял направление рытья, то в обработчике Datacontroller.onDetailExpanding -

Код: <YourForm>.<YourView>DataControllerDetailExpanding(ADataController: TcxCustomDataController;
ARecordIndex: Integer; var AAllow: Boolean);
begin
ADataController.CollapseDetails;
end;
Автор: sldaac
Дата сообщения: 18.03.2009 09:50
vladman


Цитата:
Если правильно понял направление рытья, то в обработчике Datacontroller.onDetailExpanding -


Самое то, что-то меня зациклило что настраивать надо в свойствах, не затрагивая обработчик.
Спсб.
Автор: f3ka
Дата сообщения: 18.03.2009 12:12
Felias Fogg
какой нибудь хороший Блокнот (типа Notepad++) умеет менять строки по файлам...
Автор: Lostding1979
Дата сообщения: 18.03.2009 14:44
Ребят, есть вопросик:

Есть в приложении dxSkinController, dxRibbon и обычные совковые TButton.

Пока SupportNonClientDraw в dxRibbon в false кнопки совковые выглядят красиво, но есть стандартный заголовок у приложения, ставим SupportNonClientDraw в true, кнопки становятся совковыми, но нет заголовка

Вопрос: как и кнопки(ну и соответсвенно и другие стандартные компоненты) чтоб были 'стильными' и загловка не было?
Автор: vladman
Дата сообщения: 18.03.2009 16:01
Lostding1979

Цитата:
Вопрос: как и кнопки...чтоб были 'стильными' и загловка не было?

TButton будут стильными в обеих случаях. Скорее всего что-то не то в конкретном случае. Посему - нужен пример проблемного приложения.
Автор: Lostding1979
Дата сообщения: 18.03.2009 17:28

Цитата:
Посему - нужен пример проблемного приложения.


Хм, сделал пример примитивный, CGD 2007, DevExpress 41.

http://rapidshare.com/files/210710510/TButtonVsDxRibbon.rar 3.7Kb
Автор: vladman
Дата сообщения: 19.03.2009 00:49
Lostding1979

Цитата:
сделал пример примитивный



Цитата:
vladman
TButton будут стильными в обеих случаях

Виноват, ввел в заблуждение. TButton давно не пользуюсь и не обратил внимание на то, что Vista придает некоторые эффекты к этим кнопкам, посему посчитал это эффектами SkinController.

Да, действительно, в случае SupportNonClientDrawing=True TButton не скинятся.
Причина в следующем.
При SupportNonClientDrawing=True прорисовка формы осуществляется непосредственно TdxCustomRibbonForm и, соответственно, SkinController для этой формы и для всех контролов для которых она (форма) является Parent не используется. А TdxCustomRibbonForm не "умеет" скинить TButton.
При SupportNonClientDrawing=False прорисовка формы и всех ее контролов осуществляется посредством SkinController, который "знает" как скинить TButton.
Так что для решения вопроса можно просто заменить все TButton на TcxButton - они одинаково прорисовываются при любых значениях SupportNonClientDrawing. И, более того, имеют намного больше возможностей для кастомизации.


Добавлено:
Вдогонку - более точные комментарии по данному вопросу от первоисточника

Цитата:
This is the designed peculiarity of the ExpressSkins Library. Standard controls like TButton and TPanel can be skinned only if their parent form is skinned by the Form SkinController. The Form SkinController provides the painters necessary for these controls.
When a TdxRibbonForm is used, it paints its contents itself, according to the MS Office 2007 UI requirements. The Form SkinController isn't initialized for this form at all, so standard buttons and panels aren't skinned.

Make it possible to use Skins along with a RibbonForm with SupportNonClientDrawing = True
Автор: justonetime
Дата сообщения: 19.03.2009 10:50
Всем доброго времени суток.
Каким образом можно получить список значений фильтра для столбца cxGrid? Т.е. как узнать какие из TcxDataFilterValueList.Items[i] отмечены галочкой?
Автор: vladman
Дата сообщения: 19.03.2009 20:34
justonetime

Цитата:
Т.е. как узнать какие из TcxDataFilterValueList.Items[i] отмечены галочкой?


Код: procedure <YourForm>.<YourButton>Click(Sender: TObject);
var
i: Integer;
vValueList: TcxGridFilterValueList;
vActiveValueIndexes: TcxGridIndexes;
s: string;
begin
s := '';
vValueList := TcxGridFilterValueList.Create(<YourTableView>.DataController.Filter);
vValueList.Load(<YourColumn>);
<YourColumn>.DataBinding.GetFilterActiveValueIndexes(vValueList, vActiveValueIndexes);
for i := 0 to Length(vActiveValueIndexes) - 1 do
s := s + vValueList.Items[vActiveValueIndexes[i]].DisplayText + '; ';
ShowMessage(s);
FreeAndNil(vValueList);
end;
Автор: brookson
Дата сообщения: 19.03.2009 22:19
Доброго всем времени суток.
Помогите, а то запутался уже.
Есть cxDBPivotGrid. Каждой ячейке с данными соответствует только одна запись датасета.
Я хочу, чтоб при выделении ячейки, и нажатии кнопки скажем, можно было удалить эту запись из датасета. Но никак не найду, как узнать значение ключа. Явно в ячейке его нет.
Сразу говорю, что как в примере http://www.devexpress.com/Support/Center/p/CQ55578.aspx?searchtext=pivotgrid+CrossCell+field+value&tid=dee0f498-9b49-42c9-bee9-5530e0ea67f6&pid=-1 у меня не получилось
Автор: vladman
Дата сообщения: 20.03.2009 15:43
brookson

Цитата:
Помогите, а то запутался уже

Нюансы реализация зависят от версии ExpressPivotGrid (v.1 или v.2).
Но главная идея состоит в том что нужно использовать, так называемые drill-down данные для анализируемой ячейки. В ExpressPivotGrid v.2 был улучшен (упрощен) механизм получения drill-down с помощью компоненты TcxPivotGridDrillDownDataSet.

Предполагая, что используется ExpressPivotGrid v.2, решение вопроса может выглядеть так:
1. В cxPivotGrid добавить ключевое поле (REC_ID, например) и, если необходимо, сделать его невидимым.
2. Установить свойство Caption этого поля тоже в 'REC_ID'. Важно, так как по этому значению будем позже идентифицировать это поле.
3. Поместить на форму или DataMod компонент cxPivotGridDrillDownDataSet и, посредством его свойства PivotGrid, связать с соответствующим PivotGrid.
4. В обработчике удаления конкретной ячейки из БД указать:

Код:
var
vRecId: integer;
begin
<Your>PivotGridDrillDownDataSet.CreateData;
vRecId := <Your>PivotGridDrillDownDataSet.FieldByName('REC_ID').AsInteger;
//DELETE FROM MYTABLE WHERE REC_ID = vRecId
end;
Автор: brookson
Дата сообщения: 20.03.2009 16:39
vladman
Работает. Версия как раз вторая. Так всё просто. По сравнению с этим решением до сих пор я пытался почесать правое ухо левой ногой....
Странно, что в доке тема с cxPivotGridDrillDownDataSet освещена достаточно туманно.
Кстати, еще пришлось поставить свойство SynchronizeData:=True.
Спасибо и вообще - снимаю шляпу!
Автор: vladman
Дата сообщения: 20.03.2009 17:53
brookson

Цитата:
Кстати, еще пришлось поставить свойство SynchronizeData:=True.

А почему пришлось? Есть же явный вызов <Your>PivotGridDrillDownDataSet.CreateData, а при SynchronizeData:=True. как раз и происходит автоматический вызов этого метода при изменении выбранной ячейки/ячеек, перестроении структуры или саммари PivotGrid.

Цитата:
тема с cxPivotGridDrillDownDataSet освещена достаточно туманно.

Как по мне, не более туманнее чем все остальные
ms-help://borland.bds5/ExpressPivotGrid2.BDS5/ExpressPivotGrid2/IDH_Class_TcxPivotGridDrillDownDataSet.htm
Автор: Felias Fogg
Дата сообщения: 20.03.2009 20:48
Пытаюсь поменять Borland-скую TDBEdit на TcxDBTextEdit - загвоздка в том что DataSource надо поменять на Databinding.Datasource.
В GExperts можно задать XML файл с заменами и импортировать его. вот что я написал

Код:
<MapItem>
<SourceClassName>TDBEdit</SourceClassName>
<DestClassName>TcxDBTextEdit</DestClassName>

     <SourcePropName>Datasource</SourcePropName>
<DestPropName>DataBinding.DataSource</DestPropName>

     <SourcePropName>DataField</SourcePropName>
<DestPropName>DataBinding.DataField</DestPropName>

     </SourcePropName>
<DestPropName>StyleHot.LookAndFeel.Kind</DestPropName>
<UseConstValue>true</UseConstValue>
<ConstValue>lfOffice11</ConstValue>
</MapItem>
Автор: vladman
Дата сообщения: 20.03.2009 23:27
Felias Fogg

Цитата:
Как это все сделать правильно?

Ну это лучше спросить не в этой ветке.
Может помогут здесь или здесь.
Автор: i7potoc
Дата сообщения: 21.03.2009 13:17
Мне дали исходники проекта.
В нем используется компанент TcxGrid,самое интересное в пас файлах все объявления есть,а вот самого компанента в дизайнере формы нету,соответсвенно компилятор на это ругается.Разработчик сказал что у него все работает замечательно.
Может кто сталкивался с такой проблемой,или теперь придется самому все дописывать?
Автор: sldaac
Дата сообщения: 21.03.2009 14:09

Цитата:
Мне дали исходники проекта.
В нем используется компанент TcxGrid,самое интересное в пас файлах все объявления есть,а вот самого компанента в дизайнере формы нету,соответсвенно компилятор на это ругается.Разработчик сказал что у него все работает замечательно.
Может кто сталкивался с такой проблемой,или теперь придется самому все дописывать?

не факт что использовался в самой форме. Могло быть обращение к этому компоненту в другой форме, описаных в uses.
Автор: afiget
Дата сообщения: 21.03.2009 15:01
Компоненты DevExpress у вас хоть установлены? cxGrid среди них есть?
Автор: Felias Fogg
Дата сообщения: 23.03.2009 19:55
Поставил на форму cxCalcEdit. Свойство Style.Font.Size установил 18. Так выпадающий калькулятор тоже стал отображаться 18-м шрифтом, на пол-экрана!!
Можно ли отдельно установить Шрифт для выпадающего калькулятора и отображаемого текста?
Автор: vladman
Дата сообщения: 24.03.2009 03:56
Felias Fogg

Цитата:
Можно ли отдельно установить Шрифт для выпадающего калькулятора и отображаемого текста

Отдельно нельзя, но обработав должным образом два события можно решить проблему.
А именно:

Код:
Событие

procedure <YourForm>.<YourcxCalcEdit>PropertiesInitPopup(Sender: TObject)
begin
<YourcxCalcEdit>.Style.Font.Size := 8;
end;

и событие

procedure <YourForm>.<YourcxCalcEdit>PropertiesPopup(Sender: TObject);
var
vPoint: TPoint;
begin
vPoint := <YourcxCalcEdit>.BoundsRect.TopLeft;
<YourcxCalcEdit>.Style.Font.Size := 18;
<YourcxCalcEdit>.PopupWindow.Top := ClientToScreen(vPoint).Y + <YourcxCalcEdit>.Height - 1;
end;
Автор: Felias Fogg
Дата сообщения: 24.03.2009 15:39
vladman
Помогло, хотя высоту надо менять по-другому, если компонент лежит на панели
Автор: vladman
Дата сообщения: 24.03.2009 16:16
Felias Fogg
Ну откуда мне знать что у кого где лежит
Автор: sam291074
Дата сообщения: 25.03.2009 20:09
Подскажите, а можно ли:
1. Получить список всех скинов DevExpress, которые доступны в дизайн-тайме, что-бы не рукми забивать в ComboBox, а сделать присвоение в рантайме в по типу List = SkinList
2. Сделать, что-бы формы, вызываемые из главной (со скином) не были скинабельны, в том числе и формы чужих компонент (например TeeEditor из набора TeeChartPro).
Заранее спасибо.
Автор: vladman
Дата сообщения: 26.03.2009 03:04
sam291074

Цитата:
Подскажите, а можно ли:
1. Получить список всех скинов DevExpress...


Можно.

Код: uses cxLookAndFeelPainters;
..
procedure <YourForm>.FormCreate(Sender: TObject);
var
APainters: TcxExtendedStylePainters;
i: Integer;
begin
APainters := GetExtendedStylePainters;
for i := 0 to APainters.Count - 1 do <YourcxComboBox>.Properties.Items.Add(APainters.Names[i]);
<YourcxComboBox>.EditValue := <YourcxComboBox>.Properties.Items[0];
end;
Автор: X11
Дата сообщения: 26.03.2009 16:31
Проблема в D2009 с шедулером
Почти постоянно. Всё время в разных местах. То при загрузке, то при кидании на форму какого-либо компонента.


Добавлено:
Забыл дописать. DevExpress 6.42.
Автор: Meister Floh
Дата сообщения: 26.03.2009 19:20
X11
Ну скопируй этот бпл в систем32 и забудь о проблеме.. писал жыж уже

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

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


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