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

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

Автор: ShIvADeSt
Дата сообщения: 31.12.2009 03:48
DevExpress

Обмен опытом, обсуждение нюансов и решение проблем возникающих при использовании библиотеки компонент Developer Express



Ресурсы:
Home page
Documentation for VCL Products
Support Center
Online documentation (VCL отсутствует)
Community blog
DevExpress Channel - Training Videos, Interviews, Demos
DX-Squad - комсомольцы-добровольцы, защитники слабых и угнетенных


DLL со скинами из библиотеки dxSkins, автор Ziltoid [more] Наконец-то дошли руки до выкладки на файлообменник.
Скачать DLL можно здесь: http://rapidshare.com/files/166902064/SkinDLL.rar

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

Полезные утилиты:
DxAutoInstaller v2.1.6 Простой и удобный тул для установки девок из исходников
https://mega.nz/#!2NAh2TZL!mNkdJ9bSsoEpkvZZ0lP4sa6qWU0AxwmZO1pY_exmDkw
Автор: Hackman1971
Дата сообщения: 31.12.2009 04:22
Сразу вопрос про инсталяцию, пользовался DXAutoinstaller (DevExpress сборка 47).
Стоит Win7 и Rad 2010.
Почти в самом конце установки DXAutoinstaller зависает, но компоненты вроде как встают (до конца ли не знаю, еще не все протестировал).
Сам вопрос: в какой последовательности устанавливать эти компоненты вручную или может есть какой-нибудь другой инсалятор?
Автор: crazypiggy
Дата сообщения: 31.12.2009 13:39
Всех с Наступающим Новым Годом!!!!
Автор: vladman
Дата сообщения: 31.12.2009 16:38
X11

Цитата:
cxDataControllerSearch := TcxDataControllerSearch.Create(Grid1.DataController);

Явно создавать TcxDataControllerSearch нет необходимости. DataСontroller автоматически создает экземпляр этого класса при инициализации свойства Search. Т.е. вызов должен выглядеть так:

Код: <YourTcxGridTableView.DataController.Search.Locate(<YoucxGridColumnr>.Index, 'SearchText');
Автор: vladman
Дата сообщения: 31.12.2009 18:43
crazypiggy

Цитата:
Чуть позже, подправлю ваш пример.

Как и обещал, немного подправленный ваш пример:
[more=dfm]
Код:
object Form1: TForm1
Left = 192
Top = 114
Caption = 'Form1'
ClientHeight = 604
ClientWidth = 854
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object cxDBTreeList1: TcxDBTreeList
Left = 0
Top = 41
Width = 854
Height = 563
Align = alClient
Bands = <
item
end>
DataController.DataSource = DataSource1
DataController.ParentField = 'OWNER_SPR_MENU_ID'
DataController.KeyField = 'ID'
DragMode = dmAutomatic
OptionsBehavior.ImmediateEditor = False
OptionsBehavior.AutoDragCopy = True
OptionsBehavior.DragDropText = True
OptionsBehavior.DragFocusing = True
OptionsData.Inserting = True
OptionsData.AutoCalcKeyValue = True
OptionsView.ColumnAutoWidth = True
OptionsView.GridLines = tlglBoth
OptionsView.Indicator = True
OptionsView.TreeLineStyle = tllsSolid
RootValue = -1
TabOrder = 1
OnDragOver = cxDBTreeList1DragOver
ExplicitTop = 44
object cxDBTreeList1ID: TcxDBTreeListColumn
Visible = False
Caption.AlignHorz = taCenter
Caption.GlyphAlignHorz = taCenter
Caption.Text = #8470' '#1087'.'#1087'.'
DataBinding.FieldName = 'ID'
Width = 59
Position.ColIndex = 0
Position.RowIndex = 0
Position.BandIndex = 0
Summary.FooterSummaryItems = <>
Summary.GroupFooterSummaryItems = <>
end
object cxDBTreeList1LOGO: TcxDBTreeListColumn
PropertiesClassName = 'TcxBlobEditProperties'
Properties.BlobEditKind = bekPict
Properties.ClearKey = 16452
Properties.PictureGraphicClassName = 'TJPEGImage'
Caption.AlignHorz = taCenter
Caption.GlyphAlignVert = vaCenter
Caption.Text = #1051#1086#1075#1086#1090#1080#1087
DataBinding.FieldName = 'LOGO'
Width = 135
Position.ColIndex = 2
Position.RowIndex = 0
Position.BandIndex = 0
Summary.FooterSummaryItems = <>
Summary.GroupFooterSummaryItems = <>
end
object cxDBTreeList1NAME: TcxDBTreeListColumn
Caption.AlignHorz = taCenter
Caption.GlyphAlignHorz = taCenter
Caption.Text = #1053#1072#1080#1084#1077#1085#1086#1074#1072#1085#1080#1077
DataBinding.FieldName = 'NAME'
Width = 438
Position.ColIndex = 1
Position.RowIndex = 0
Position.BandIndex = 0
Summary.FooterSummaryItems = <>
Summary.GroupFooterSummaryItems = <>
end
object cxDBTreeList1OWNER_SPR_MENU_ID: TcxDBTreeListColumn
Visible = False
DataBinding.FieldName = 'OWNER_SPR_MENU_ID'
Position.ColIndex = 3
Position.RowIndex = 0
Position.BandIndex = 0
Summary.FooterSummaryItems = <>
Summary.GroupFooterSummaryItems = <>
end
end
object Panel1: TPanel
Left = 0
Top = 0
Width = 854
Height = 41
Align = alTop
BevelInner = bvLowered
TabOrder = 0
object AddButton: TSpeedButton
Left = 8
Top = 5
Width = 32
Height = 33
Caption = '+'
OnClick = AddButtonClick
end
object DelButton: TSpeedButton
Left = 88
Top = 5
Width = 32
Height = 33
Caption = '-'
OnClick = DelButtonClick
end
object EditButton: TSpeedButton
Left = 48
Top = 5
Width = 32
Height = 33
Caption = '!'
OnClick = EditButtonClick
end
object SpeedButton1: TSpeedButton
Left = 136
Top = 5
Width = 121
Height = 33
Caption = #1057#1086#1093#1088#1072#1085#1080#1090#1100
OnClick = SpeedButton1Click
end
object SpeedButton2: TSpeedButton
Left = 272
Top = 5
Width = 121
Height = 33
Caption = #1054#1090#1084#1077#1085#1080#1090#1100
OnClick = SpeedButton2Click
end
end
object DataSource1: TDataSource
DataSet = FIBSPRMenu
Left = 472
Top = 80
end
object FIBSPRMenu: TpFIBDataSet
UpdateSQL.Strings = (
'UPDATE SPR_MENU'
'SET '
' LOGO = :LOGO,'
' NAME = :NAME,'
' OWNER_SPR_MENU_ID = WNER_SPR_MENU_ID'
'WHERE'
' ID = LD_ID'
' ')
DeleteSQL.Strings = (
'DELETE FROM'
' SPR_MENU'
'WHERE'
' ID = LD_ID'
' ')
InsertSQL.Strings = (
'INSERT INTO SPR_MENU('
' ID,'
' LOGO,'
' NAME,'
' OWNER_SPR_MENU_ID'
')'
'VALUES('
' :ID,'
' :LOGO,'
' :NAME,'
' WNER_SPR_MENU_ID'
')')
RefreshSQL.Strings = (
'SELECT'
' ID,'
' LOGO,'
' NAME,'
' OWNER_SPR_MENU_ID'
'FROM'
' SPR_MENU '
''
' WHERE '
' SPR_MENU.ID = LD_ID'
' ')
SelectSQL.Strings = (
'SELECT'
' ID,'
' LOGO,'
' NAME,'
' OWNER_SPR_MENU_ID'
'FROM'
' SPR_MENU '
'ORDER BY ID')
AutoUpdateOptions.UpdateTableName = 'SPR_MENU'
AutoUpdateOptions.KeyFields = 'ID'
AutoUpdateOptions.AutoReWriteSqls = True
AutoUpdateOptions.CanChangeSQLs = True
AutoUpdateOptions.GeneratorName = 'GEN_SPR_MENU_ID'
AutoUpdateOptions.UpdateOnlyModifiedFields = True
AutoUpdateOptions.AutoParamsToFields = True
Transaction = pFibTransactionRead
Database = pFIBDatabase1
UpdateTransaction = pFibTransactionWrite
RefreshTransactionKind = tkUpdateTransaction
Left = 504
Top = 80
object FIBSPRMenuID: TFIBIntegerField
FieldName = 'ID'
end
object FIBSPRMenuLOGO: TFIBBlobField
FieldName = 'LOGO'
Size = 8
end
object FIBSPRMenuNAME: TFIBStringField
FieldName = 'NAME'
Size = 150
EmptyStrToNull = True
end
object FIBSPRMenuOWNER_SPR_MENU_ID: TFIBIntegerField
FieldName = 'OWNER_SPR_MENU_ID'
end
end
object pFIBDatabase1: TpFIBDatabase
DBName = 'BD.FDB'
DBParams.Strings = (
'lc_ctype=WIN1251'
'user_name=SYSDBA'
'password=masterkey')
DefaultTransaction = pFibTransactionRead
DefaultUpdateTransaction = pFibTransactionWrite
SQLDialect = 3
Timeout = 0
LibraryName = 'C:\Program Files\Firebird\Firebird_2_1\bin\fbclient.dll'
WaitForRestoreConnect = 0
Left = 520
Top = 152
end
object pFibTransactionWrite: TpFIBTransaction
DefaultDatabase = pFIBDatabase1
TimeoutAction = TACommitRetaining
TRParams.Strings = (
'write'
'nowait'
'rec_version'
'read_committed')
TPBMode = tpbDefault
Left = 552
Top = 187
end
object pFibTransactionRead: TpFIBTransaction
DefaultDatabase = pFIBDatabase1
TimeoutAction = TARollback
TRParams.Strings = (
'read'
'nowait'
'rec_version'
'read_committed')
TPBMode = tpbDefault
Left = 520
Top = 187
end
end
Автор: Dauren111
Дата сообщения: 01.01.2010 17:05
непонятки по XtraGrid!
хочу сделать экспорт в эксель... делаю всеми возможными способами(ExportToXls, ExportToExcelOld)... нифига...ошибка не вылетает, просто тупо не сохраняет...
подскажите кто нить чё за х...ня
спасибки заранее
Автор: JohnSilver182
Дата сообщения: 03.01.2010 18:51
Hi, С новым годом !!
Я вот в одной проге сделал сохранение Ширины колонок в TcxGridDbTableView по нажатию кнопки на Тоолбаре .
А как вы сохраняете ширину столбцов ??? Автоматически или рисуете кнопочку ????
Автор: fortezza
Дата сообщения: 04.01.2010 10:26
в cxGrid у меня активная запись выделена бледно сереневым цветом (скин MoneyTwins), почти невидно, можно установить свой цвет выделенной записи? (если выделять мышкой, то запись синяя как обычно).

P.S. может cxGrid как то влиять на выделение активной записи после обновления подключенного к-та доступа к данным? если да, то каким свойством?
Автор: SIgor33
Дата сообщения: 04.01.2010 13:28
fortezza
посмотри Styles -там есть и Header, Content и Footer и .... так далее
Автор: JohnSilver182
Дата сообщения: 04.01.2010 20:18
О !! А можно что бы какойто Столбец в cxGrid стал например набором кнопочек без присвоения
FieldName ?????
Автор: fortezza
Дата сообщения: 05.01.2010 06:54
для отображения даты есть DateEdit. есть ли какой-нит компонент, который мне позволит выбирать недели(1-53), месяца(1-12)?
Автор: X11
Дата сообщения: 05.01.2010 11:31

Цитата:
Цитата:
Этот ктод как бы не работает.
Т.е. пока мышкой не щёлкнешь по гриду, GetRecordIndexByText будет возвращать всегда -1

Как раз для этого в примере и есть вызов cxGrid1.SetFocus;


Мне как раз нужено так, чтобы постоянно был сфокусирован элемент ввода текста, т.е. cxEdit, рядом лежащий на форме. Т.е. я реализую поиск (а может в дальнейшем и подсветку), как это сделано в Firefox, уж очень там удобно.



Добавлено:

Цитата:
О !! А можно что бы какойто Столбец в cxGrid стал например набором кнопочек без присвоения

Да уже раз надцать об этом говорили
How to set up an unbound item in a data-aware View

Добавлено:

Цитата:
для отображения даты есть DateEdit. есть ли какой-нит компонент, который мне позволит выбирать недели(1-53), месяца(1-12)?

SpinEdit?
Автор: fortezza
Дата сообщения: 05.01.2010 15:05

Цитата:
SpinEdit?

нет, думала есть что то вроде настраиваемого DateEdit, в котором можно отключить дни и года, включить - недели.

Вот ещё вопрос:
У меня есть два поля cxGrid - LookUpComboBox
Одно содержит месяцы, другое года. нужно, чтобы при выборе месяце автоматически просчитывался год в другом поле. Делаю это в обработчике onChange (либо onEditValueChanged):


Цитата:
procedure TVetZayavkaForm.cxGridZayavkaDBTableView1MonthPropertiesEditValueChanged( Sender: TObject);
begin
cxGridZayavkaDBTableView1Year.EditValue := YearOf(Today) + (cxGridZayavkaDBTableView1Month.EditValue div 12);
end;


но в поле месяца значение возвращается на исходное? без кода все работает. в чем дело?
Автор: jonikDk
Дата сообщения: 05.01.2010 16:06

Цитата:
без кода все работает.

если так, то зачем тебе код ?? А вообще я всегда записываю в DataSet.
Автор: fortezza
Дата сообщения: 06.01.2010 07:05

Цитата:
Цитата:без кода все работает.


если так, то зачем тебе код ?? А вообще я всегда записываю в DataSet.


всмысле не все работает, а выбор работает, когда записываю в DataSet таже фигня
Автор: X11
Дата сообщения: 06.01.2010 09:07
У кого-нибудь получилось создать cxTextEdit с выпадающим списком ранее набранных значений? Имеется ввиду использование свойства lookupitems. В справке написано, что можно это реализовать с помощью TcxCustomDropDownEdit. Но мои скромные познания английского не позволяют понять, как это сделать. Может есть примеры или кто уже реализовал такое?
Заранее благодарен.

Добавлено:
Так, как реализовано lookupitems на данный момент - не устраивает. Хочется именно выпадающий список.
Автор: JohnSilver182
Дата сообщения: 06.01.2010 11:35
А я с датой в cxGrid просто рехнулся !!
У столбцов кажется форматирование работает только при Propetis:=currensyEdit;

Так не помогает

Код: LongTimeFormat:='dd.mm.yy hh.mm.ss';
cxFormatController.BeginUpdate;
cxFormatController.UseDelphiDateTimeFormats := True ;
cxFormatController.EndUpdate;
cxFormatController.GetFormats;
cxFormatController.NotifyListeners;
Автор: jonikDk
Дата сообщения: 06.01.2010 14:05

Цитата:
А есть культурный способ чем :cxGrid1DBTableViewMoika.ViewData.Rows[0].Focused:=true;
Иначе если cxGrid1DBTableView пуст то EXCEPTION возникает

а проверить есть ли строки в ViewData ??
типа того IF cxGrid.DataController.RecNo>0 then делаем свои действия
Автор: JohnSilver182
Дата сообщения: 08.01.2010 17:22
Я сижу и бья сибя ап стену
в cxDbDateEdit стоит 08.01.2010 08.01.10 03.00.00
В cxGrid дата время вместо 20:20 показывает 08:20
Это п.....ц !!!!!!!!!!

Жизнь гавно , для редактирования даты гружу все cxDateEdit1 cxTimeEdit1
Но как обмануть cxGRID ???


Автор: JohnSilver182
Дата сообщения: 08.01.2010 22:01
Я ломал стекло как шоколод в руке , я резал эти пальцы...........



Код: procedure TFormZakaz.cxGrid1DBTableViewMoikaColumn1GetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
begin
atext:='1';
atext:='06\07\2009';
atext:=DAtetimetostr( ARecord.Values [cxGrid1DBTableViewMoikaColumn1.Index] ,'dd.mm.yy');
end;
Автор: afiget
Дата сообщения: 09.01.2010 18:25
JohnSilver182
1. DisplayFormat у поля.
2. Правильный DataBinding/ValueType

Все выводится нормально.
Автор: JohnSilver182
Дата сообщения: 09.01.2010 22:16
afiget
Я ломал стекло как шоколод в руке , я резал эти пальцы...........
Непомогает ничего . Кроме.

Код: procedure TFormZakaz.cxGrid1DBTableViewMoikaColumn1GetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
begin
atext:=FormatDateTime('dd.mm.yy hh:mm',ARecord.Values [cxGrid1DBTableViewMoikaColumn1.Index]);
end;
Автор: fortezza
Дата сообщения: 11.01.2010 09:27
делаю футер для поля "Кол-во", где св-во Kind = skSum, но он отображает только "Кол-во" выделенной записи, или, если сделать возможность выделения нескольких строк - показывает сумму "Кол-ва" для них. Как сделать так, чтоюы отображалась Сумма по полю для всех записей.

Причем в другом cxGrid все отображается как надо, не могу понять в чем разница
Автор: X11
Дата сообщения: 11.01.2010 09:36
Datacontroller.Summary.Options
spSelectedRecord
Автор: JohnSilver182
Дата сообщения: 11.01.2010 11:25
А можно например cxTextEdit все вводимые буквы преобразовывать в Верхний регистр ???
Автор: X11
Дата сообщения: 11.01.2010 11:41
Properties.CharCase
Автор: kirilmark
Дата сообщения: 11.01.2010 15:01
проблемка с отображением dimension в PivotGrid.
а конкретно с отображением dimension времени. обьясню. в проекте BI любое поле из этого dimension (year, month, quarter) для отображения использует ColumnName (year_name, month_name, quarter_name).
при просмотре даных в самом проекте BI отображается все прекрастно, вместо month подставляется month_name. но при использовании PivotGrid такого не роисходит. что я упустил? пересмотрел все опции. не нахожу. могу использовать поле month_name но ведь это не решение
Автор: JohnSilver182
Дата сообщения: 12.01.2010 10:04
Я вот бьюсь головой и не могу решить !!
TcxLookUpComboBox !!!!
- как только юзер набрал первые N буков происходить переоткрытие датасета

pFIBDataSet_CLI.Close;
pFIBDataSet_CLI.SelectSQL.Text:='select * from client where plate like '+#39+{буквы}+'%'+#39;
pFIBDataSet_CLI.Open;

И вот что получается
http://img18.imageshack.us/img18/8321/cxlookcb.png
Вместо того что бы нарисовать выпадающий список , рисует еб...ий список прокрутки !!




Автор: jonikDk
Дата сообщения: 12.01.2010 11:20
JohnSilver182
попробуй сделай Fetch у FIBDataSet. (это должно помочь)
Проверь свойство DropDownRows у TcxLookUpComboBox
Автор: JohnSilver182
Дата сообщения: 12.01.2010 12:11
JohnSilver182 Кстаит ПЕРВЫЙ РАЗ РАСКРЫТИЕ СПИСКА РАБОТАЕТ НОРМАЛЬНо !!!


Цитата:
pFIBDataSet_CLI.Close;
pFIBDataSet_CLI.SelectSQL.Text:='select * from client where plate like '+#39+{буквы}+'%'+#39;
pFIBDataSet_CLI.Open;


Добавлено:
Это ....
Вот так робит !!!!!!!!!!


Код: l_sr:=copy (cxLookupComboBox_cli.EditingText, 1, cxLookupComboBox_cli.SelStart);
if (Length(l_sr)=3) or ( (Length(l_sr)>=3) and (pFIBDataSet_CLI.RecordCount<=0) ) then
begin
cxLookupComboBox_cli.Properties.ListSource:=nil;
pFIBDataSet_CLI.Close;
pFIBDataSet_CLI.SelectSQL.Text:='select * from client where plate like '+#39+l_sr+'%'+#39;
pFIBDataSet_CLI.Open;
pFIBDataSet_CLI.FetchAll;
cxLookupComboBox_cli.Properties.ListSource:=self.DataSourceCLI;
cxLookupComboBox_cli.DroppedDown:=true;
end;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки


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