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

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

Автор: afiget
Дата сообщения: 21.09.2007 09:38
svs123456789
Делаешь столбец, куда вставляешь заголовки строк.
Для этого столбца выставляешь нужные Options (запрет фильтрации, группировки, поиска и т.п.) и задаешь RepositoryItem и (или) Styles, чтобы сделать внешний вид такой же, как у заголовков столбцов.

Или включаешь индикатор (GridView->OptionsView->Indicator) и делаешь его достаточно широким. Потом в событии OnCustomDrawIndicatorCell для GridView выводишь нужный текст и (или) графику.

Первое, имхо, проще.
Автор: IceMan T
Дата сообщения: 21.09.2007 12:20
Привет! Такой вопрос: есть 2 поля : текстовое и числовое. У текстового поля Properties = TcxTextEditProperties, у числового TcxCustomCurrencyEditProperties. Включен инкрементальный поиск. Так вот, в текстовом поле ищется нормально, а вот в числовом - ищет только по первому разряду. Т.е. если число "14500" отобразилось в гриде как
"14 500", и в гриде ввести 14, то курсор встанет на эту запись, но дальше - никак, т.е. если ввести "14 5" - курсор останется на первой записи. Как исправить ? Спасибо...
Автор: Shadi
Дата сообщения: 21.09.2007 13:30
IceMan T

Ну, вопрос, конечно, интересный!

Самое простое - как только станешь на это поле отслеживай это событие и переводи формат числа на "14500" ########. Как покидаешь эту колонку возвращаешь формат - ,0.00.

Автор: svs123456789
Дата сообщения: 22.09.2007 19:19
afiget

Цитата:
Делаешь столбец, куда вставляешь заголовки строк.

это первое что мне пришло в голову
вероятно так и придется сделать
хочется попроще сэмулировать бумажный бланк-таблицу
хотя с точки зрения нормализации это косяк
правильнее былобы разбить на таблицы 1) строк, 2) столбцов, 3) ячеек
и связать их - внешими ключами
Автор: brookson
Дата сообщения: 23.09.2007 15:47
а кто пробовал в cxGrid сделать Footer Summary по одному полю, но чтоб вывод был под другим?

объясню, зачем такой изврат. столбец, который надо просуммировать в футер, невидимый, ну и суммы есть не под всеми столбцами.
Автор: afiget
Дата сообщения: 23.09.2007 19:56

Цитата:
хотя с точки зрения нормализации это косяк

Вообще то я имел ввиду добавлять столбец в гриде, а не в таблице БД. Делать это можно из любого источника данных.

Например.
Надписи можно положить в отдельную таблицу БД - справочник, связав его (или не связывая - как хочешь) с таблицей с данными. Нормализация останется.

Кстати, для такого случая можно на колонку в гриде с надписями навесить источник данных с надписями так, чтобы по цифровому значению подставляся такстовый заголовок.
Т.е. таблица с данными (отображается в гриде):
ИД названия, Данные
1, 12.56
2, 100
3, 45

Таблица-справочник
ИД, Название
1, Цена
2, Оборот
3, Среднее

В гриде вместо 1, 2, 3 будет высвечиваться соответствующая строка из таблицы-справочника. Взаимосвязь делается через свойства колонки грида.
Автор: X11
Дата сообщения: 24.09.2007 09:48
У кого есть информация по методу LocateByKey датаконтроллера? В справке ExpressQuantumGrid6 таковая отсутствует.
Ну в принципе проблема в том, что хочеться выполнить поиск по датаконтроллеру.
Автор: afiget
Дата сообщения: 24.09.2007 10:04
X11
Из справки:

Цитата:
Finds and focuses the record containing the specified key field values.

Syntax
function LocateByKey(const AKeyFieldValues: Variant): Boolean;
Description

The LocateByKey function locates the record with the specified key field value(s). The AKeyFieldValues parameter should specify a variant or an array of variant values corresponding to the key field(s) set via the KeyFieldNames property.

The function returns True when the appropriate record is found and focused (in ExpressQuantumGrid, the view's OnFocusedRecordChanged event is fired when changing the focused record). If the record doesn't exist or no key field names are assigned, LocateByKey returns False.


ЗЫ
Пора обновить хелп
Автор: X11
Дата сообщения: 24.09.2007 11:01
у меня хелп от 2-го августа, когда щелкаю мышкой по LocateByKey, то хелп ругается
Автор: afiget
Дата сообщения: 24.09.2007 15:15

Цитата:
у меня хелп от 2-го августа

ну результат ты видишь

Цитата:
когда щелкаю мышкой по LocateByKey, то хелп ругается

скорее всего глюк
у меня такое тоже бывает, приходится вручную открывать и вводить в поле поиска
Автор: X11
Дата сообщения: 25.09.2007 11:40
Подскажите, как работать с уровнями?
Нужно что-то вроде:

case cxGrid1.ActiveLevel of
0:
1:
2:
3:

ну т.е. в зависимости от выбранного уровня что-то конкретное сделать

Добавлено:
cxGrid1.ActiveLevel.index это оно?
Автор: Widoms
Дата сообщения: 25.09.2007 13:03
Подскажите как в CxGrid получить доступ к значениям которые отображаются в Footer Summary ?
Автор: afiget
Дата сообщения: 25.09.2007 14:14
Widoms

Код: var
I: Integer;
AValue: Variant;
begin
with tvOrders.DataController.Summary do
begin
for I := 0 to FooterSummaryItems.Count - 1 do
begin
if TcxGridDBTableSummaryItem(FooterSummaryItems[I]).Column = tvOrdersPurchaseDate then
begin
AValue := FooterSummaryValues[I];
end;
end;
end;
end;
Автор: mfn9
Дата сообщения: 25.09.2007 21:42
Дюбрый день
вопрос по использованию dxMasterView

как в dxMasterView вернуть значение полей в выделенной строке?
Заранее спасибо!
Автор: mfn9
Дата сообщения: 26.09.2007 10:15
вопрос по cxGrid
у мемя в cxGrid есть два левела
как узнать значение в выделеной строке?

когда левел один
делаю так
cxGrid11DBTableView1.DataController.GetValue(cxGrid11DBTableView1.DataController.FocusedRecordIndex,4)

работает-возвращает значение 4 столбца выделеной строки
с двумя левелами не работает возвращает null

кто сталкиваося помогите разобраться....
Автор: X11
Дата сообщения: 26.09.2007 12:01
а если через ActiveControl


Код:
if (ActiveControl is TcxGridSite) then
if (ActiveControl is TcxGridSite) and (TcxGridSite(ActiveControl).GridView is TcxGridDBTableView) and
(not Assigned(TcxGridDBTableView(TcxGridSite(ActiveControl).GridView).DataController.Dataset)) then begin
ShowMessage('Таблица не привязана к источнику данных');
result := false;
exit;
end else begin
if (TcxGridSite(ActiveControl).GridView as TcxGridDBTableView).DataController.RecordCount <=0 then begin
ShowMessage('Не найдено ни одной записи');
result := false;
exit;
end;//if
end;//else
end;//else
Автор: HalfLitre
Дата сообщения: 26.09.2007 16:23
Можно ли для ReadOnly datasource сделать в колонке __кликабельный__
Repository ButtonEdit ? Привязанный или не привязанный к полю, не важно
Спасибо заранее
Автор: skinash
Дата сообщения: 27.09.2007 09:53
Народ! Можно в студию содержимое какого-нибудь *.ini файлика от DevExpress справки для Delphi2007, например ExpressBars6.ini
Автор: X11
Дата сообщения: 27.09.2007 10:27
странно, а у меня нет такого
Автор: OXDBA
Дата сообщения: 27.09.2007 11:39
skinash
[more=ExpressBars6.ini ...]
;------- Register -r switch

[Reg_Namespace]
;<nsName>|<nsColfile>|<nsDesc>
ExpressBars6.BDS5|ExpressBars6.HxC|

[Reg_Title]
;<nsName>|<TitleID>|<LangId>|<HxS_HelpFile>|<HxI_IndexFile>|<HxQ_QueryFile>|<HxR_AttrQueryFile>|<HxsMediaLoc>|<HxqMediaLoc>|<HxrMediaLoc>|<SampleMediaLoc>
ExpressBars6.BDS5|ExpressBars6|1033|ExpressBars6.HxS|ExpressBars6.HxS||||||

[Reg_Filter]
;<nsName>|<FilterName>|<FilterQueryStr>
ExpressBars6.BDS5|(no filter)|
ExpressBars6.BDS5|Developer Express VCL Products|("DocSet"="DXVCL")
ExpressBars6.BDS5|ExpressBars Suite 6|("DocSet"="ExpressBars6")

[Reg_Plugin]
;<nsName_Parent>|<HxT_Parent>|<nsName_Child>|<HxT_Child>|<HxA_Child>
borland.BDS5|_DEFAULT|ExpressBars6.BDS5|_DEFAULT|

;------- UnRegister -u switch

[UnReg_Namespace]
;<nsName>
ExpressBars6.BDS5

[UnReg_Title]
;<nsName>|<TitleID>|<LangId>
ExpressBars6.BDS5|ExpressBars6|1033

[UnReg_Plugin]
;<nsName_Parent>|<HxT_Parent>|<nsName_Child>|<HxT_Child>|<HxA_Child>
borland.BDS5|_DEFAULT|ExpressBars6.BDS5|_DEFAULT|

[UnReg_Filter]
;<nsName>|<FilterName>
ExpressBars6.BDS5|(no filter)|
ExpressBars6.BDS5|Developer Express VCL Products
ExpressBars6.BDS5|ExpressBars Suite 6
[/more]
Автор: sergo00
Дата сообщения: 27.09.2007 16:27
Срочно нужна помощь по компоненту TcxDBTreeList
чето голова вобще не варит
задача следующая:
нужно сдублировать текущую ветвь древа со вложенными уровнями
тоесть создать дубль
плз. пример.
Автор: skinash
Дата сообщения: 27.09.2007 17:13
OXDBA
Спасибо.
Странно. Я попытался установить справку DevExpress от Delphi2006 (bds4). Содержание почти такое же, кроме

Код: ExpressBars6.BDS5|(no filter)|
Автор: zver
Дата сообщения: 28.09.2007 23:08
Никто не знает как из программы по событию нажать ColumnFilterButton у столбца?

Добавлено:
Чего нибудь типа Column1->FilterDropdown нету?

Добавлено:
Или FilterPopup
Автор: Dennica
Дата сообщения: 29.09.2007 11:16
zver

Код:
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
I: Integer;
Index: Integer;
APopupOwner: TcxGridColumnHeaderFilterButtonViewInfo;
begin
with cxGrid1DBTableView1 do
begin
Index := Controller.FocusedColumn.VisibleIndex;
with ViewInfo.HeaderViewInfo[Index] do
for I := 0 to AreaViewInfoCount - 1 do
if AreaViewInfos[I] is TcxGridColumnHeaderFilterButtonViewInfo then
begin
APopupOwner := TcxGridColumnHeaderFilterButtonViewInfo(AreaViewInfos[I]);
Break;
end;
Controller.FilterPopup.Owner := APopupOwner;
Controller.FilterPopup.Popup;
end;
end;
Автор: zver
Дата сообщения: 29.09.2007 13:43
Dennica

У меня в Билдере нет AreaViewInfos у HeaderViewInfo.
Есть предположения где это свойство?

Добавлено:
Есть TableView1->ViewInfo->HeaderViewInfo[2].Items->AreaViewInfos[1], Но компилится не хочет.
Автор: Dennica
Дата сообщения: 29.09.2007 14:57
zver
В классе TcxGridColumnContainerViewInfo сво-во Items определено как:
property Items[Index: Integer]: TcxGridColumnHeaderViewInfo read GetItem; default;
Другими словами или ты пишеш так:
TableView1->ViewInfo->HeaderViewInfo[0]->AreaViewInfos[0]
или так:
TableView1->ViewInfo->HeaderViewInfo->Items[0]->AreaViewInfos[0]
т.е.
HeaderViewInfo[0] = HeaderViewInfo->Items[0]
Автор: zver
Дата сообщения: 29.09.2007 16:06
Если писать:
TcxGridColumnHeaderFilterButtonViewInfo* APopupOwner;
APopupOwner=TcxGridColumnHeaderFilterButtonViewInfo(TableView1->ViewInfo->HeaderViewInfo->Items[1]->AreaViewInfos[1]);

То уже при компиляции вылезает ошибка:
[C++ Error] Unit1.cpp(135): E2285 Could not find a match for 'TcxGridColumnHeaderFilterButtonViewInfo::TcxGridColumnHeaderFilterButtonViewInfo(TcxGridColumnHeaderAreaViewInfo *)'

Добавлено:
Спасибо Dennica.
Докопался до истины:
APopupOwner=(TcxGridColumnHeaderFilterButtonViewInfo *)TableView1->ViewInfo->HeaderViewInfo->Items[1]->AreaViewInfos[1];
TableView1->Controller->FilterPopup->Owner=APopupOwner->operator IcxGridFilterPopupOwner *();
TableView1->Controller->FilterPopup->Popup();

Ну и С++, блин.

Автор: Dennica
Дата сообщения: 29.09.2007 16:22
zver
К сожалению в билдере я никогда не работал, не понимаю что имеет ввиду =(. Единственно, сделаю еще предположение. Смущает меня немного твоя строчка:
APopupOwner=TcxGridColumnHeaderFilterButtonViewInfo(TableView1->ViewInfo->HeaderViewInfo->Items[1]->AreaViewInfos[1]);
Ты уверен что тип TableView1->ViewInfo->HeaderViewInfo->Items[1]->AreaViewInfos[1] можно привести к TcxGridColumnHeaderFilterButtonViewInfo? Проверку делал? Может AreaViewInfos[1] вовсе не соответствует TcxGridColumnHeaderFilterButtonViewInfo

Добавлено:
В моем примере там стоит латинская "и" а не 1

Добавлено:
Пока ответ писал ты уже разобрался, ну все ок значит =) Кинь сюда полный код на C если не сложно, мож какому сишнику еще понадобится.
Автор: zver
Дата сообщения: 29.09.2007 18:33
Код программного нажатия на ColumnFilterButton (C++ 2006):

Код:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TcxGridColumnHeaderFilterButtonViewInfo* APopupOwner;
APopupOwner=(TcxGridColumnHeaderFilterButtonViewInfo *)TableView1->ViewInfo->HeaderViewInfo->Items[1]->AreaViewInfos[1];
TableView1->Controller->FilterPopup->Owner=APopupOwner->operator IcxGridFilterPopupOwner *();
TableView1->Controller->FilterPopup->Popup();
}
Автор: VikLabel
Дата сообщения: 29.09.2007 21:09
Как (если это возможно) сделать чтобы cxPropertiesStore1 писал в INI в привычном виде:

Код:
[UserIDEdit: TcxPropertiesStoreComponent]
=
Text="0"

[UserNameEdit: TcxPropertiesStoreComponent]
=
Text=""

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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