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

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

Автор: vladman
Дата сообщения: 21.03.2011 02:23
frumych
Вам нужно EditValue не column а FocusedRow
Автор: BlackVetal
Дата сообщения: 21.03.2011 06:39
frumych
Зачем такая сложность - нажимать кнопку ButtonEdit? переход на другую строку будет более удобный для пользователя. И в это время onValidate будет срабатывать.
Автор: bb682
Дата сообщения: 22.03.2011 17:42
DevExpress 2010.2,
XAF,

нужно синхронизировать данные из одной базы в другую.

Создаю unitofwork, устанавливаю connStr, соединяю, записываю, commit, всё ок.


private bool TransferData(string connStr)
{
UnitOfWork uow = new UnitOfWork();
uow.ConnectionString = connStr;
uow.Connect();

Item ItemFromCurrSession = ((ObjectSpace)View.ObjectSpace).Session.FindObject<Item>(Item.Fields.No == "ITEM13");
CloneHelper ch = new CloneHelper(((ObjectSpace)View.ObjectSpace).Session, uow);
Item NewItem = ch.CloneWithKey(ItemFromCurrSession) as Item;
NewItem.No_ = ItemFromCurrSession.No_;

ObjectSpace os = new ObjectSpace(uow);
using (os)
{
Item it = new Item(os.Session);
it = NewItem;

it.ItemCategoryCode.Code = ItemFromCurrSession.ItemCategoryCode.Code;
it.Save();

os.CommitChanges();
}
return true;
}


Если обьект состоит из других обьектов (persistent object), при commit получаю ошибку - исключение 'System.Data.SqlClient.SqlException: Violation of PRIMARY KEY constraint 'Item Category$0'. Cannot insert duplicate key in object 'dbo.Item Category'.

Естественно такая категория уже есть в базе. Под дебагером вижу, что присваивается не NULL,а корректная категория.
Автор: HighTower
Дата сообщения: 22.03.2011 18:35
Приветствую.

никак не могу понять, как поставить фокус на нужную ячейку в только что добавленной строке TcxGridTableView?

делаю gridView.DataController.AppendRecord;

а дальше мне надо перейти на 2 ячеку и чтобы когда юзер начал на клаве набирать текст, он пошёл вводиться в этой ячейке....
Автор: FunCode
Дата сообщения: 22.03.2011 19:17
HighTower
Попробуйте использовать свойства Focused, Selected, а также метод FocusWithSelection для вашего столбца (например gridViewColumn2.Focused := True), проверить сейчас нет возможности, но думаю 100% что-то из них подойдет в вашем случае

Автор: HighTower
Дата сообщения: 22.03.2011 19:28
FunCode
спасибо, то что нужно!!!
Автор: FunCode
Дата сообщения: 22.03.2011 19:53
bb682

Цитата:
Если обьект состоит из других обьектов (persistent object), при commit получаю ошибку - исключение 'System.Data.SqlClient.SqlException: Violation of PRIMARY KEY constraint 'Item Category$0'. Cannot insert duplicate key in object 'dbo.Item Category'.

Вопрос никоим образом несвязанный с DevExpress - зачем захломлять топик? В вашем случае ошибка связанная со вставкой значения в таблицу Item столбец Category - для этого столбца установлен первичный ключ - соответственно выдает ошибку когда вы пытаетесь добавить запись со значением Category, которое уже присутствует в этой таблице!
Автор: alex3645724
Дата сообщения: 23.03.2011 02:21
Как в Cxbandedtableview управлять добавлением записей? А то при переводе фокуса на одну из существующих записей добавляется еще запись из newitemrow, хотя никто не просил
Автор: marser
Дата сообщения: 23.03.2011 08:20
alex3645724

Цитата:
Как в Cxbandedtableview управлять добавлением записей? А то при переводе фокуса на одну из существующих записей добавляется еще запись из newitemrow, хотя никто не просил

Как это никто не просил? В NewItemRow что-нибудь вводили? Если запись находится в режиме редактирования или вставки, то при переводе фокуса на другую запись следует Post.
Автор: NatNiM
Дата сообщения: 23.03.2011 10:36
А на мой вопрос будут еще ответы?
Я так и не поняла, ка крешить проблему.
Автор: X11
Дата сообщения: 23.03.2011 12:34
На форме лежит TdxBar с компонентой TcxBarEditItem типа PopUp.
К PopUp я привязал cxGrid. Всё работает. Выпадает, сворачивается. Всё ок.
Но у PopUp есть свойство PopupSizeable. Установил в True.
Но не пойму как изменять размер выпавшего окна.

Добавлено:
Нашёл решение. Вдобавок ещё нужно включать свойство PopupSysPanelStyle
Автор: alex3645724
Дата сообщения: 23.03.2011 17:39

Цитата:
Цитата:
Как в Cxbandedtableview управлять добавлением записей? А то при переводе фокуса на одну из существующих записей  добавляется еще запись из newitemrow, хотя никто не просил

Как это никто не просил? В NewItemRow что-нибудь вводили? Если запись находится в режиме редактирования или вставки, то при переводе фокуса на другую запись следует Post.

Как заблокировать этот post? А то в NewItemRow ввели некорректное значение. Или ввели, но не до конца, и собираются продожить ввод.
Автор: FunCode
Дата сообщения: 23.03.2011 21:39
alex3645724

Цитата:
Как заблокировать этот post? А то в NewItemRow ввели некорректное значение. Или ввели, но не до конца, и собираются продожить ввод.

Делайте Cancel.
Автор: X11
Дата сообщения: 24.03.2011 15:54
Кто-то когда-то спрашивал, как вставить картинку в грид.
Я не знаю с какой версии это появилось, но я вот обнаружил свойство: BackgroundBitmaps у TcxGrid (TcxGridTableView)
Автор: TechnoDreamer
Дата сообщения: 25.03.2011 00:52
Не получается у меня в TcxDBTreeList с опцией SmartLoad.
RootValue стоит правильно (ноль в моем случае).
Строится дерево из двух элементов (которые физически первые в базе были созданы). Без SmartLoad всё отлично. В дереве чуть больше тысячи записей.
При чем, создаю новую запись, перетягиваю ее в корень - она изчезает. Девки - 54, но и на ранних аналогичное наблюдалось.
Может я чего то не догоняю, куда смотреть то? В чем может быть проблема?

Добавлено:
Вопрос снимается. Отсортировал таблицу по ParentID и всё отлично заработало. Странно, но вроде, нигде в хелпе это не озвучено.
Автор: X11
Дата сообщения: 25.03.2011 11:05

Цитата:
Не получается у меня в TcxDBTreeList с опцией SmartLoad.

а в справке написано, что SQL запрос нужно сортировать по полю Parent


Цитата:
Вопрос снимается. Отсортировал таблицу по ParentID и всё отлично заработало. Странно, но вроде, нигде в хелпе это не озвучено.

Но я именно там и вычитал
Автор: FunCode
Дата сообщения: 25.03.2011 23:55
Имеется Delphi 2010 Update 5 + DevExpress x.55, создаю новый пустой проект - подключаю скины, размещаю одну TcxButton, запускаю, медленно перемещаю курсор над кнопкой - вижу мерцание (очень частую перерисовку). Народ, может кто сталкивался и знает как бороть этот баг?
Автор: TechnoDreamer
Дата сообщения: 26.03.2011 01:15

Цитата:
Но я именно там и вычитал

Но явно не в разделе про SmartLoad
Автор: vladman
Дата сообщения: 26.03.2011 02:52
FunCode

Цитата:
медленно перемещаю курсор над кнопкой - вижу мерцание (очень частую перерисовку)

Подтвержденный баг. В 56 версии будет исправление.
Автор: FunCode
Дата сообщения: 26.03.2011 09:54
vladman

Цитата:
Подтвержденный баг. В 56 версии будет исправление.

Спасибо, а не подскажете, когда ожидается 56 билд ? Если память не изменяет они теперь раз в квартал выпускают следующий билд ? Т.е. ждать обновления только в конце мая ?
Автор: X11
Дата сообщения: 26.03.2011 09:58

Цитата:
Но явно не в разделе про SmartLoad

а у тебя справка в формате .hlp или HTML?

Вот цитата из раздела по SmartLoad из HTML справки:

Цитата:
Note: if the cxDBTreeList control's SmartLoad feature is enabled, the underlying dataset should be sorted by the ParentField field and then by the KeyField field.

Т.е. по двум полям.

А в .hlp справке действительно нет. Хотя .hlp справка у меня значительно новее.
Автор: TechnoDreamer
Дата сообщения: 26.03.2011 11:28

Цитата:
Т.е. по двум полям.

Угу, догадался.


Цитата:
А в .hlp справке действительно нет. Хотя .hlp справка у меня значительно новее.

В chm у меня тоже нет, зато есть в hlp от ExpressQuantumTreeList 4, в той же версии ExpressQuantumTreeList 5 этой строки уже нет :-D
Автор: X11
Дата сообщения: 28.03.2011 13:32
В вертикальном гриде есть строка типа TcxCheckComboBox.
Я заполнил список значениями из базы. Свойство Tag содержит ID записи.

Теперь мне нужно достать ID всех отмеченных записей.

У TcxCheckComboBox есть метод GetItemState.
if CheckCombo.GetItemState(i) in [cbsChecked] then .....

А у TcxCheckComboBoxProperties нет такого метода.
Подскажите, как мне добраться до состояния элементов у TcxCheckComboBoxProperties.


В итоге.

if cxCheckComboBoxProperties.GetItemState(i) in [cbsChecked] then
Undeclared identifier: 'GetItemState'

Автор: wsoul
Дата сообщения: 28.03.2011 13:32
Не могу получить текущий столбец в TcxGridDBBandedTableView, получаю так
TcxGridDBBandedColumn(grdvgrd1DBBandedTableView2.Controller.FocusedColumn)
Всегда возвращается первый столбец, при этом событие OnFocusedItemChanged отрабатывает.

Сделал тестовый проект - при нажатии на Button1 должно показываться имя поля текущего столбца, протестируйте пжл
http://sendfile.su/309020

Автор: marser
Дата сообщения: 28.03.2011 19:47
wsoul
В ExpressQuantumGrid, при построении мастер-деталь, используется принцип "шаблон-клоны". Почитайте документацию или форум. Этот вопрос здесь часто обсуждается, например, пролистайте страниц 4-5 назад. В Вашем случае, grdvgrd1DBBandedTableView2 это шаблон, а TableView-ы, выпадающие по нажатию "+", это клоны, созданные на основании шаблона. Так что нужно писать не grdvgrd1DBBandedTableView2.Controller.FocusedColumn, а <Клон>.Controller.FocusedColumn.
Автор: wbsg
Дата сообщения: 29.03.2011 09:27
X11


Код:
var
i: Integer;
begin
for i := 0 to CheckComboBox.Properties.Items.Count -1 do
if CheckComboBox.GetItemState(i) = cbsChecked then
ShowMessage('Checked item ID: ' + IntToStr(CheckComboBox.Properties.Items[i].Tag));
end;
Автор: X11
Дата сообщения: 29.03.2011 10:34
Нет, почитай внимательнее
Автор: X11
Дата сообщения: 29.03.2011 12:56

Цитата:
Подскажите, как мне добраться до состояния элементов у TcxCheckComboBoxProperties.


Оказалось всё значительно проще.


Код:
function GetComboChecks(cxCheckComboBoxProperties: TcxCheckComboBoxProperties): string;
Var
i: Integer;
begin
with cxCheckComboBoxProperties do
begin
items.BeginUpdate;
try
for I := 0 to items.Count - 1 do
if CheckStates[i] = cbsChecked then
result := IntToStr(items[i].Tag) + ',' + result;

finally
items.EndUpdate;
end;//try
end;//with
//возвращаем список из выбранных ID через запятую: 101,12,1024
end;


используем//
s := GetComboChecks(TcxCheckComboBoxProperties(colRegionS.Properties.EditProperties));
Автор: X11
Дата сообщения: 29.03.2011 16:06
Опять про cxVerticalGrid и строку типа TcxCheckComboBoxProperties.

В процессе наполнения списка нужно, в зависимости от условия, устанавливать значения элементов списка (отмечать или не отмечать).

Наполняю так.

Код:
Var
CheckComboboxItem: TcxCheckComboboxItem;
begin
//tSpr - набор данных (TpFibDataSet)

with tSpr do
begin
Open;
First;
FetchAll;
cxCheckComboBox.Items.BeginUpdate;
cxCheckComboBox.Items.Clear;

While not Eof do
begin
CheckComboboxItem := cxCheckComboBox.Items.AddCheckItem(FBN(sFieldName).AsString);
CheckComboboxItem.Tag := FBN('ID').AsInteger;


//КАК отметить CheckComboboxItem ?


Next;
end;
close;

end;
cxCheckComboBox.Items.EndUpdate;
Автор: golkanavt
Дата сообщения: 30.03.2011 10:47
Всем привет. Кто нибудь сталкивался с задачей "процентной" отрисовки результатов группировки в гриде в зависимости от значений group summary? Поясню - есть грид с данными, при группировке по некоторым полям надо показывать в виде этакого чарта какой процент от общего числа данных занимает та или иная группа, с визуальным отражением в виде например градиентной заливки. Похожая визуализация используется для показа результата всяких опросов на сайтах, в виде баров. Надеюсь, понятно изложил

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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