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

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

Автор: mdid
Дата сообщения: 10.04.2012 11:52
Man_Without_Face
может поможет...у меня ругалось на gdi+...виновником оказался кофейный скин
+в копилке уже есть 2.5 версия...лучше начать с обновления
Автор: X11
Дата сообщения: 10.04.2012 15:09

Цитата:
Кто-нибудь использовал TcxDBTreeList совместно с TUniQuery (IniDAC)?


проблема именно у девок:
http://www.devexpress.com/Support/Center/p/B138266.aspx
хотя судя по статусу, то ошибка закрыта ещё в 2009 году
Автор: simplecs
Дата сообщения: 10.04.2012 16:36
Здравствуйте!
Такая проблема: есть cxgrid и в нем встроенный текстовый редактор (repository). Допустим пользователь ввел какие-либо значения в это поле и НЕ перешел на другое (т.е. в БД информация по записи не обновилась) и нажал на кнопку «копировать». Мне необходимо сохранить последюю запись в БД и сделать резервную копию файла БД, при этом сам файл в программе не закрывать. Я написал код:

Код:
cxGrid1DBTableView1.BeginUpdate;
cxGrid1DBTableView1.Controller.EditingController.HideEdit(True);
cxGrid1DBTableView1.DataController.post;
cxGrid1DBTableView1.EndUpdate;
CopyFile(Pchar(FileFileName), Pchar(FileFileName+'d'), false);
Автор: waitxd
Дата сообщения: 10.04.2012 16:41
подскажите, пожалуйста,
как в cxGrid (в data-aware режиме) можно при добавлении новой строки ( .NewItemRow.Visible := True; )
можно или задать дефолтные значения для этой новой строки, или произвести валидацию уже непосредственно при добавлении самой строки?

по поводу 2ого случая вижу два решения:
принудительно вызвать onValidation у редактора поля, который не вызывается если не было изменений (есть вот такой костыль от разработчиков http://www.devexpress.com/Support/Center/p/A2086.aspx)
проверять поля в onBeforePost датасета

есть красивей решения?
Автор: NatNiM
Дата сообщения: 11.04.2012 09:44
Добрый день!

При компиляции проекта не находит dxSkinDarkSide.dcu (Delphi 7).
Подскажите, пожалуйста, где можно скачать? DevExpress установлен, но данной dcu нет в установленной папке.
Автор: Czechoslovak
Дата сообщения: 11.04.2012 10:48
waitxd
Ну так присваиваешь .EditValue необходимые значения, на пример пользователь в одной колонке выбирает сотрудника а OnValidate в остальные колонки устанавливаешь другие нужные реквизиты. Или не посредственно перед записью есть событие BeforePost...как-то так

Добавлено:
NatNiM
Ну значит не установлен пакет dxSkinDarkSideD7.dpk
Автор: andreybear
Дата сообщения: 11.04.2012 12:32
waitxd
Я использую событие DataSet'a AfterInsert.
Автор: NatNiM
Дата сообщения: 11.04.2012 13:18

Цитата:
Ну значит не установлен пакет dxSkinDarkSideD7.dpk

Czechoslovak
Скачала DevExpress VCL, там есть пакет dxSkinDarkSideD7.dpk, но установить его не могу, т.к. нет dcu-шки, можно ли как-то это исправить?
И еще вопрос, поставила пакет с BaseGrid, но проект все равно не видит его, с чем это может быть связано?

Спасибо.
Автор: IgrOk2012
Дата сообщения: 11.04.2012 13:43
Просьба помочь
DevExpress 3.0 для VS 2005. XtraReports
Задача:Нужно уменьшить изображение на странице, отправляемое на печать. Пробовал
PrintingSystem.PreviewForm.PrintControl.Zoom = 0.50f;
но это уменьшает только предпросмотр, а сам документ печатается такой же. В то же время, если установить в тулбаре 50%, то печатается нормально.
Автор: X11
Дата сообщения: 11.04.2012 19:52
Вопрос по TcxDBTreeList.
Нужно сделать по нажатию на Enter сохранение данных, т.е.
DataController.Post(true)

В cxGridDBTableView есть событие OnEditKeyDown, в котором успешно можно обработать нажатие на Enter во время редактирования ячейки, в у TcxDBTreeList такого события нет. А OnKeyDown не реагирует на Enter во время редактирования ячейки.

Как решить проблему?

Добавлено:
ставлю бряку, но она не работает вообще

Код: procedure TfmAddAD.treeRubKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
with TcxDBTreeList(sender) do <- здесь бряка
if TcxDBTreeList(sender).DataController.IsEditing then
TcxDBTreeList(sender).DataController.Post(true);
end;
Автор: andreybear
Дата сообщения: 12.04.2012 05:39
X11

Цитата:
Что посоветуете?



Цитата:
TcxCustomGridTableController.EditingItem
References the item currently being edited.

property EditingItem: TcxCustomGridTableItem;


Description
You can use the EditingItem property to open/close an editor for a specific item (column in a (Banded) Table View and row in a Card View) of the focused record.

The EditingItem returns NIL, if a cell editor is not opened. To open the editor programmatically, you can assign a specific View item to EditingItem. For instance, the following code opens the editor for the tvOrdersDescription column of the focused record within the tvOrders View:

//Delphi
tvOrders.Controller.EditingItem := tvOrdersDescription;
//C++ Builder
tvOrders->Controller->EditingItem = tvOrdersDescription;

The EditingItem property actually refers to the EditingItem property of EditingController. EditingController provides several methods and properties to control cell editing.

ExpressQuantumGrid provides several properties to disable editing. See the TcxCustomGridTableItem.Editing topic for details.



Цитата:
TcxGridEditingController.EditingItem

property EditingItem: TcxCustomGridTableItem;

Description
You can use the EditingItem property to specify an item (column in a (Banded) Table View and row in a Card View) being edited in the focused record. If EditingItem is NIL, no cell is being edited at the moment. To open the editor programmatically, you can assign a specific View item to EditingItem. For instance, the following code opens the editor for the tvOrdersDescription column of the focused record within the tvOrders View:

//Delphi
tvOrders.Controller.EditingController.EditingItem := tvOrdersDescription;
//C++ Builder
tvOrders->Controller->EditingController->EditingItem =
tvOrdersDescription;

Another way to open the cell editor is to use the ShowEdit method.
Автор: asutp2
Дата сообщения: 12.04.2012 08:30
Люди, а кто нибудь заморачивался с поддержкой BiDi в компонентах девэкпресс? Мне например в cxGrid требуется для иврита отображать текст справа-налево с прижатием к правому краю. Установка BiDiMode не помогает
Автор: waitxd
Дата сообщения: 12.04.2012 13:30

Цитата:
подскажите, пожалуйста,  
как в cxGrid (в data-aware режиме) можно при добавлении новой строки ( .NewItemRow.Visible := True; )
можно или задать дефолтные значения для этой новой строки...
<...>

Решил в DataSet'e событием OnNewRecord:

Код:
DataSet.FieldByName('Type').AsInteger := 0;
Автор: ant0ni02004
Дата сообщения: 12.04.2012 15:20
asutp2

может быть там ParentBIDiMode вмешивается и сбивает
Автор: asutp2
Дата сообщения: 14.04.2012 15:32
Нда, почитал форум у DEvExpress, они вообще не хотят BiDi поддерживать ;(
Автор: ant0ni02004
Дата сообщения: 16.04.2012 01:30
asutp2

тогда наверное VirtualTreeView придётся юзать
Автор: neznayka3
Дата сообщения: 16.04.2012 14:06
TcxDBExtLookupComboBox поставил в OnChange() процедуру. срабатывает только если выбривать мышью. при наборе с клавы+ентер не реагирует. immdiatePost=true;
как сразу отловить изменения?
Автор: fortezza
Дата сообщения: 16.04.2012 15:45
добрый день, мне нужно сделать ячейку неактивной, использую cxGrid1DBTableView1.DataController.PostEditingData;
но при этом, если поле - дата, остается календарь висеть.. как исправить?
Автор: X11
Дата сообщения: 16.04.2012 15:56
HideEditor или HideEdit
Автор: fortezza
Дата сообщения: 17.04.2012 12:58
X11

Цитата:
HideEditor или HideEdit

спасибо, теперь все нормально

подскажите, а как вообще правильно делать. У меня на изменение даты (в гриде) в обработчике OnChange вызывается диалоговое окно и если modalresult = mrCancel, то срабатывает такая функция:

Код:
procedure ResetAbort;
begin
TcxLookupComboBox(Sender).EditValue := TcxLookupComboBox(Sender).InternalEditValue;
cxGrid1DBTableView1.DataController.PostEditingData;
cxGrid1DBTableView1.Controller.EditingController.HideEdit(true);
Abort;
end;
Автор: X11
Дата сообщения: 17.04.2012 13:10
а что нужно-то?

Я не понимаю смысла в Abort;
Автор: fortezza
Дата сообщения: 17.04.2012 13:38
Abort нужен, чтобы так же не выполнялись действия после вызова этой функции, но я уже переписала код без неё. Меня смущает только эти три строчки:
TcxLookupComboBox(Sender).EditValue := TcxLookupComboBox(Sender).InternalEditValue;
cxGrid1DBTableView1.DataController.PostEditingData;
cxGrid1DBTableView1.Controller.EditingController.HideEdit(true);

Возможно есть какая нибудь одна команда, типа EditCancel, которая отменит изменение в ячейке и сделает её неактивной скрыв Editor.



Добавлено:
cxGrid1DBTableView1.DataController.Cancel;отменяет все изменения, а мне только в конкретной ячейке..
Автор: X11
Дата сообщения: 17.04.2012 13:48
я всё равно не понял что именно нужно и для чего в одной процедуре и PostEditingData и Abort
Автор: fortezza
Дата сообщения: 17.04.2012 14:06
Я уже убрала Abort, вопрос, можно ли оставшиеся (см. ниже) 3 строчки заменить на одну?

Код:
procedure ResetAbort;
begin
TcxLookupComboBox(Sender).EditValue := TcxLookupComboBox(Sender).InternalEditValue;
cxGrid1DBTableView1.DataController.PostEditingData;
cxGrid1DBTableView1.Controller.EditingController.HideEdit(true);
end;
Автор: X11
Дата сообщения: 17.04.2012 14:34
А что делает эта строка и для чего она?


Код: TcxLookupComboBox(Sender).EditValue := TcxLookupComboBox(Sender).InternalEditValue;
Автор: fortezza
Дата сообщения: 17.04.2012 14:36
нет не трудно, это строчка нужна что вернуть начальное значение.

Добавлено:
я думала в начале было понятно, может быть так будет понятнее:

У меня на изменение ячейки - даты в гриде в обработчике OnChange вызывается диалоговое окно и если modalresult = mrCancel нужно отменить редактирование этой ячейки - вернуть старое значение. Вопрос как это правильно делать.
Автор: X11
Дата сообщения: 17.04.2012 14:44
Так оно по-идее и не должно меняться, если пользователь НЕ жмякнул ОК.
Автор: fortezza
Дата сообщения: 17.04.2012 15:23
так или иначе спасибо, пока оставлю как есть,
если что, вот тестовый проект тут возможно кто-то подскажит как сократить/убрать текст на этом примере, у меня не получилось
Автор: simplecs
Дата сообщения: 17.04.2012 19:06
Здравствуйте!
Использую cxLocalizer для перевода диалогов Dev-ок.

Весь перевод в ini файле!

Как я понял DElphi позволяет добавить ini файл внутрь проекта проекта. А можно как-нить cxLocalizer к нему подключить! Просто не хочу чтобы пользователь забыл когда-нибудь его переписать вместе с программой и часть диалогов стала по англ.
Автор: marser
Дата сообщения: 18.04.2012 06:48
simplecs
В cxLocalizerEditor.exe можно создать файл ресурсов, например cxLocalization.res. Подключаете этот файл к проекту {$R 'cxLocalization.res'} и пишите код

Код: cxLocalizer.LoadFromResource(HInstance);
cxLocalizer.LanguageIndex := 1049;
cxLocalizer.Active := True;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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