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

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

Автор: deusex33
Дата сообщения: 14.04.2011 11:44
BlackVetal
Выставил все объекты local - все равно не запускается на др. компе (WIN7 - 'приложение будет закрыто" )
http://img33.imageshack.us/img33/5210/16760860.jpg
Видимо придется ставить DEVExpress на компы...
Автор: fortezza
Дата сообщения: 14.04.2011 12:29
Есть cxGrid и колонка с Properties := EditButton
Как в событии OnClick Button-а этой колонки обратиться к колонке?


Код:
procedure ...cxGridColumnPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
?
end;
Автор: deusex33
Дата сообщения: 15.04.2011 12:39
Блин, сейчас мне сказали что надо делать установочные дистрибутивы, надо тогда как-то без установки DEVExpress'а обойтись ...
исходник VS2008 C#
http://rghost.ru/5196573
Автор: deusex3
Дата сообщения: 16.04.2011 09:15
Вот сейчас скомпилил прогу VC# 2010 + DXperience где используется только TrackBarControl, так же не запускается на другом компе.
Если в этой проге использовать стандартный TrackBar - то запускается.
DXperience -2010.2.6+Patch

Еще заметил что ссылки в Обозревателе решений в случае компиляции как TRackbar'а стандартного, так и DXperience"го присутствуют только на DevExpress.Data .Utils и .XtraEditors
Автор: BlackVetal
Дата сообщения: 18.04.2011 07:09
deusex3
открыл твой проект (VS2010? другой уже нет ) ... при компиляции все баблиотеки копируются. значит все верно. Проблема скорее всего в установщике (в пректе установщика).
Сейчас мы делаем публикацию на сервер, но было дело что делали через обычный установщик ставили свои программы. Так вот на сколько помню, мы делали так - сначала складывали все библиотеки и exe-ники в общую папку (автоматом копировалось post-скрипт), дальше в проекте установщика добавляли все что нужно (часть руками), добавляли локализацию руками и делали инсталер. Исталер запускался у клиента и все работало нормально.
Автор: fortezza
Дата сообщения: 18.04.2011 08:13
Здравствуйте,
использую cxGrid, в свойствах колонки Properties = EditButton
Хочу сделать так чтобы при изменении значения в ячейке происходило следующие:
1. Если удаляется хотя бы 1 символ - удалять все.
2. Если добавляется, возвращать предыдущее значение.

Как я понимаю, это нужно делать в свойстве OnEditValueChanged (или OnChanged), но как получить старое и новое значение в момент изменения? в обработчик передается только Sender.
Делаю так:


Код:
procedure TVetBaseForm.cxGridClmnPropEdtValChngd(Sender: TObject);
var cl : TcxGridDBColumn;
begin
cl := TcxGridDBColumn((((Sender as TControl).Parent as TcxGridSite)
.GridView as TcxCustomGridTableView).Controller.FocusedItem);

showmessage(VarToStr(cl.EditValue) + ' ' + VarToStr(cl.FocusedCellViewInfo.DisplayValue) + ' ' +
VarToStr(cl.FocusedCellViewInfo.Value));
end;
Автор: dimm78
Дата сообщения: 18.04.2011 09:06

Цитата:
Как я понимаю, это нужно делать в свойстве OnEditValueChanged (или OnChanged), но как получить старое и новое значение в момент изменения? в обработчик передается только Sender.


Попробуй для этого событие OnValidate. В тот момент когда оно происходит в DisplayValue новое значение, а в EditValue еще старое значение
Автор: fortezza
Дата сообщения: 18.04.2011 09:18

Цитата:
Попробуй для этого событие OnValidate. В тот момент когда оно происходит в DisplayValue новое значение, а в EditValue еще старое значение

оно происходит, только когда я выхожу из режима "изменения", а не в момент изменения.
но там ситуациа аналогична..
Автор: BlackVetal
Дата сообщения: 18.04.2011 11:53
fortezza
может подробнее опишите, что вы хотите сделать (а то похоже на танцы с бубном)? Есть к примеру еще такое событие CellValueChannging для C# (смею предположить на Delphi onEditValueChanging).
Автор: fortezza
Дата сообщения: 18.04.2011 12:14

Цитата:
может подробнее опишите, что вы хотите сделать (а то похоже на танцы с бубном)? Есть к примеру еще такое событие CellValueChannging для C# (смею предположить на Delphi onEditValueChanging).

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

Для этого мне нужны старое и новое значения. Если длинна увеличилась - возвращаю старое значение, если уменьшилось - стираю полностью.
Автор: BlackVetal
Дата сообщения: 18.04.2011 12:45
fortezza
Ну вопервых, ты использовал onEditValueChanged (работает ПОСЛЕ ввода изменний), я тебе предложил onEditValueChanging (ВОВРЕМЯ редактирования).
Во-вторых, я бы сделал вообще эту ячейку нередактируемой - если нужно ввести какие данные, изменить или удалить - через диалог (который ты уже реализовал).
Автор: marser
Дата сообщения: 18.04.2011 13:07
fortezza

Цитата:
Конкретно, я реализую лукап поле, но вместо списка появляется окно-диалог, после выбора записи в этом окне в ячеку передается соотв. значение. Это все работает, но если пользователь попытается ввести в ячейке значение руками (не вызывая окна по кнопке EditButton) - у него должна быть возможность только стереть его полностью, изменять - нельзя.

Ну так и сделайте это поле лукапным, например DBLookupComboBox. В обработчике события OnInitPopup напишите вызов окна диалога и Abort. Если не устраивает кнопка со стрелкой, то и это поправимо.

Добавлено:
fortezza
Или используйте Properties как ButtonEdit и сделайте Properties.ViewStyle := vsHideCursor. Вариантов куча и без всяких onEditValueChanged
Автор: fortezza
Дата сообщения: 18.04.2011 13:37
ок. спасибо.

вообщем, я попробовала на всех подходящих событиях. их там всего 3
onChange
onEditValueChanged
onValidate
я думала, может неправильно обращаюсь к значениям..

Можно конечно и заблокировать.. но вот удаление не очень реализовывать в диалоге - диалог это окно с таблицой без каких либо кнопок.. На крайний случай добавлю ещё одну кнопку EditButton в самой ячейке для удаления..



Добавлено:

Цитата:
Ну так и сделайте это поле лукапным, например DBLookupComboBox. В обработчике события OnInitPopup напишите вызов окна диалога и Abort. Если не устраивает кнопка со стрелкой, то и это поправимо.

DBLookupComboBox -не вариант. у него намного меньше возможностей, чем у моего диалог-окна


Цитата:
Или используйте Properties как ButtonEdit и сделайте Properties.ViewStyle := vsHideCursor. Вариантов куча и без всяких onEditValueChanged


Вопрос не в кнопке, кнопка для ButtonEdit меня вполне устраивает...

ок. спасибо.

если у кого-нибудь будут идеи по поводу получения старого и нового значения напишите.
Автор: bukerman1975
Дата сообщения: 18.04.2011 14:15
продолжаю переводить проект со старых девок (3.2.2) на новые.

чето я смотрю, кроме как ради гридов, в общем-то переводить их и незачем. так как глюки постоянно выползают, при чем такие, которых раньше не было, разрабы этого не учли и нагородили новых багов.

ситуация такая. у меня есть форма, где есть контрол TcxCurrencyEdit. в него по долгу службы юзеру постоянно нужно копировать значение из экселевской ячейки. так вот пока оно было типа TdxCurrencyEdit, все было отлично, как только я заменил его на новый контрол, это значение в него напрочь отказывается копироваться.

при чем я понимаю почему. когда копируешь значение экселевской ячейки, то в конце строки зачем-то добавляется символ перевода строки. так вот в старых девках он просто игнорировался, а в новых считается, видимо, что там некорректные данные и просто не пропускает их. блин, ну вообще я не пойму логику разрабов, ну сделали вы новую фичу, так сделайте ее настраиваемой, чтобы я выбрал, хочу я так или нет...

я понимаю, что можно зайти по F2 в ячейку, скопировать текст или же набрать его руками, но хотелось бы решить проблему, чтобы все работало как раньше, никто ничего не посоветует?
Автор: marser
Дата сообщения: 18.04.2011 14:44
fortezza

Цитата:
DBLookupComboBox -не вариант. у него намного меньше возможностей, чем у моего диалог-окна

Вы не поняли! Я предложил DBLookupComboBox только для показа лукапных значений. А выбор значений осуществляйте через свое диалог-окно. На OnInitPopup пишите вызов диалог-окна, потом Abort.

Цитата:
Вопрос не в кнопке, кнопка для ButtonEdit меня вполне устраивает...

А я кнопку и не трогую. Properties.ViewStyle := vsHideCursor - запрещает редактирование ячейки.
Автор: fortezza
Дата сообщения: 18.04.2011 14:52

Цитата:
Вы не поняли! Я предложил DBLookupComboBox только для показа лукапных значений. А выбор значений осуществляйте через свое диалог-окно. На OnInitPopup пишите вызов диалог-окна, потом Abort.
А я кнопку и не трогую. Properties.ViewStyle := vsHideCursor - запрещает редактирование ячейки.

Поняла. Буду пробовать! Спасибо.
Автор: marser
Дата сообщения: 18.04.2011 14:59
bukerman1975

Цитата:
ситуация такая. у меня есть форма, где есть контрол TcxCurrencyEdit. в него по долгу службы юзеру постоянно нужно копировать значение из экселевской ячейки. так вот пока оно было типа TdxCurrencyEdit, все было отлично, как только я заменил его на новый контрол, это значение в него напрочь отказывается копироваться

Цитата:
использую версию 6.24

http://www.devexpress.com/Support/Center/p/CB44772.aspx?
Автор: bukerman1975
Дата сообщения: 18.04.2011 15:24
marser

Цитата:
http://www.devexpress.com/Support/Center/p/CB44772.aspx?


спасибо! получается уже пофиксили, буду обновляться.

Добавлено:
попытался поставить 6.53, все компилит, но почему-то в рантайме ругается:
https://lh3.googleusercontent.com/_lBlupcQvheI/TaxHyBYSniI/AAAAAAAAJdc/NEM1QJkk0aY/1.jpg

cxGridColumn что, свойство Index отменили? не пойму
Автор: V1s1ter
Дата сообщения: 18.04.2011 19:58
bukerman1975
Часто подобные сообщения возникают когда property:
1) Удалили в самом объекте, но в файлах frm оно осталось. Лечение - удалить ненужные строки из frm.
2) Переименовали в самом объекте, но в файлах frm оно осталось старым. Лечение - переименовать в frm.
3) Сделали property составным property другого property в самом объекте, но в файлах frm оно осталось старым. Лечение - прописать для свойства его хозяина в frm. Пример било TEdit.Align, стало TEdit.Style.Align.
Автор: Bukerman
Дата сообщения: 18.04.2011 23:31
V1s1ter
дело в том, что я обращаюсь в коде к этому свойству напрямую cxGridDBColumn.Index и компилятор не ругается, а компилит. то бишь проперти никуда не делось. но тем не менее в рантайме ругается.
мистика...

Добавлено:
извините, тупанул...
действительно, в файле формы прописано св-во Index, а в новой версии компонент, оно в самом классе есть но на форме его нет (не published). поудалял руками - все заработало.

спасибо большущее!
Автор: vladman
Дата сообщения: 20.04.2011 02:06
bukerman1975
Bukerman
В правилах -
IV. Регистрация
...
3.3.Помимо этого запрещается:
3.3.1.двойная регистрация, то есть регистрация под двумя и более никнеймами;
Автор: Bukerman
Дата сообщения: 21.04.2011 10:45
vladman
ну я когда-то давно регистрировался и забыл пароль, поэтому зарегился 2-й раз, а потом вспомнил. и что мне сейчас сделать?
Автор: vladman
Дата сообщения: 21.04.2011 11:16
Bukerman

Цитата:
ну я когда-то давно регистрировался и забыл пароль, поэтому зарегился 2-й раз, а потом вспомнил. и что мне сейчас сделать?

пользоваться каким-то одним
Автор: masygreen
Дата сообщения: 22.04.2011 09:23
не могу найти подскажите куда курить ...
Мне надо хранить ряд настроек внутрисистемных которые пользователи могут менять, настройки единые для всех.
Пусть будет набор
% расчета 01 (int)
% расчета 02 (int)
Директор (элемент справочника Сотрудник)
.. ну и прочие разномастные параметры..
Чем для этого пользоваться в eXpressApp Framework??(c#,WFAP v10.2, vs2010)
Автор: tatbesidovska
Дата сообщения: 22.04.2011 12:17
Вопрос такой, есть на форме gridView, dateEdit1 и dateEdit1. Как отфильтровать данные за период с dateEdit1 по dateEdit2. Спасибо
Автор: fexmusicmutuz
Дата сообщения: 22.04.2011 13:43
Добрый день!

В БД есть большая таблица (~1KK записей), в которой хранится дерево, например:
id     parent     data_columns
1     NULL     DATA
2     1     DATA
3     1     DATA
4     2     DATA
5     2     DATA


Есть ли в DevExpress компонент, с помощью которого можно вывести это дерево, подгружая содержимое узлов динамически(при раскрытии узла)?

Желательно Db-aware компонент, т.к. планируется работа с БД и хочется упростить разработку.
Автор: marser
Дата сообщения: 22.04.2011 14:18
fexmusicmutuz
Попробуйте использовать TcxDBTreeList в режиме OptionsData.SmartLoad := True

Добавлено:
fexmusicmutuz
Из справки

Цитата:
Description
If the smart load feature is enabled, the tree list is first populated with only root-level nodes (a root level for this mode is specified by the tree list's RootValue property). If a particular node is being expanded, the tree list loads its child nodes. The intent of this feature is to improve performance, and reducing memory use.
Set the SmartLoad property to True, to enable smart load. Otherwise, all nodes will be loaded simultaneously.

Автор: NickNNN
Дата сообщения: 22.04.2011 14:43
Добрый день

Подскажите пожалуйста, какое событие отвечает за нажатие на кнопку выпадающего списка Inplace editor-а при редактировании колонки в CxGrid. Для определенных полей я хочу чтобы выпадал не стандартный список значений, а открывался мой справочник.

Спасибо
Автор: X11
Дата сообщения: 22.04.2011 14:58

Цитата:
Вопрос такой, есть на форме gridView, dateEdit1 и dateEdit1. Как отфильтровать данные за период с dateEdit1 по dateEdit2. Спасибо

Это же элементарно, Ватсон.
Поиск уже не в моде??

Вот пример, ну и справку почитайте, конечно же


Код:
dbgReklama - TcxGridDBTableView
try
dbgReklama.DataController.Filter.Active := false;
actResetFilterGroupSortExecute(nil);
dbgReklama.DataController.Filter.BeginUpdate;
WITH dbgReklama.DataController.Filter.Root do begin
Clear;
AddItem(dbgReklamaINPUT_DATE2, foGreaterEqual, DateBefor, DateToStr(DateBefor));
AddItem(dbgReklamaINPUT_DATE2, foLessEqual, DateAfter, DateToStr(DateAfter));
AddItem(dbgReklamaID_METODINPUT, foEqual, id_mi, VarToStr(id_mi));
end;
dbgReklama.DataController.Filter.Active := true;
finally
dbgReklama.DataController.Filter.EndUpdate;
end;
Автор: fexmusicmutuz
Дата сообщения: 22.04.2011 15:37

Цитата:
Попробуйте использовать TcxDBTreeList в режиме OptionsData.SmartLoad := True

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

Должно выглядеть примерно так:
1)Пользователь раскрыл ветку
2)Ушел запрос к СУБД за данными (SELECT * FROM tree WHERE parent_id = arent_id)
3)полученные данные добавились в грид/дерево

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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