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

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

Автор: dimm78
Дата сообщения: 20.05.2011 14:07

Цитата:
У грида есть 2 уровня.
На втором уровне есть 4 детальных грида, которые привязаны к первому мастер гриду. Не могу понять, как отловить момент переключения между вкладками 4ёх детальных гридов. Нужно в зависимости от условий разрешать/запрещать перходить на второй грид.


у cxGrid есть для этого событие onActiveTabChanged
Автор: X11
Дата сообщения: 20.05.2011 14:19
так это для равноценных по уровню cxGridDBTableView?

А если они на уровень ниже?
Автор: dimm78
Дата сообщения: 20.05.2011 14:23

Цитата:
так это для равноценных по уровню cxGridDBTableView?

А если они на уровень ниже?


это событие срабатывает для всех Level-ов принадлежащих cxGrid-у независимо от уровня
Автор: X11
Дата сообщения: 20.05.2011 14:28
Да, точно, работает. Спасибо
Автор: fortezza
Дата сообщения: 20.05.2011 23:18
Вот понадобилось каким-то образом связывать колонки. т.е. чтобы одна имела ссылки на 2 другие например, 2 другие колонки так же содержали ссылки на колонки, таким образом, из любой колонки можно братиться к 2-м другим. А в гриде например 9 колонок, получается 3 группы по 3 колонки раскиданы по разному.

Как это реализовывать? переопределять колонку? С какой стороны подходить к решению задачи?

Заранее спасибо.
Автор: vladman
Дата сообщения: 21.05.2011 02:01
X11

Цитата:
У грида есть 2 уровня.
На втором уровне есть 4 детальных cxGridDBTableView, которые привязаны к первому мастеру-cxGridDBTableView. Не могу понять, как отловить момент переключения между вкладками 4ёх детальных cxGridDBTableView. Нужно в зависимости от условий разрешать/запрещать перходить на второй cxGridDBTableView.


Вы как-то возмущались вопросом tatbesidovska о lookUpEdit ответив:

Цитата:
Автор: X11, Отправлено:22:16 27-04-2011
И следовало бы изучить вначале компоненты, их свойства, а потом уже начинать с ними работать. Посмотрите примеры, почитатй в справке общую концепцию, почитайте в рунете статьи по DevExpress. Просто Вы забиваете такими простейшими вопросами форум. А ведь на форум подписано очень много людей. Представьте, сколько это трафика из за Вашей лени.


OffTop и немного лирики -
Так вот, последние две страницы ваших умозаключений и вопросов уж очень сильно подпадают под ваше же возмущение, не правда ли? А как же последовательность?

fortezza

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

Чтобы помочь с вашим вопросом, проясните, что вы имели ввиду под терминами "связывать" и "ссылки", а лучше, конечно, давайте какой-то пример, рисунок.
Автор: felixon
Дата сообщения: 22.05.2011 12:10
Убрать отступ текста заголовка (Caption) в VerticalGrid, то есть сдвинуть текст к границе

http://img191.imageshack.us/img191/7163/21285240.gif

удалось следующим способом:

в юните: cxVGrid
в методе:

procedure TcxvgPainter.DrawRowHeaderCell(
ACaptionInfo: TcxRowCaptionInfo; ATransparent: Boolean);

после строки:

R := CaptionTextRect;

добавить:

if not ACaptionInfo.FRow.HasChildren then
R.Left := R.Left - ViewInfo.Painter.Painter.ExpandButtonSize - 4; // отступ на 3 пикселя

Решал задачу разными способами, данный способ наилучший. Парился два дня. Может кому пригодится.
Автор: mdid
Дата сообщения: 23.05.2011 14:11
драсте
есть DockPanel и DockSite....так вот эта панель выезжает с тормозами(то есть нет плавности..в общем слайд шоу )..это косяк компонента или я дет галку забыл?
ПС
56 дев
Автор: fortezza
Дата сообщения: 25.05.2011 09:02
vladman,


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


сделать что то вроде:

Код:
TcxGridDBMultiColumn = class(TcxGridDBColumn)
public
Column1 : TcxGridDBColumn;
Column2 : TcxGridDBColumn;
end;
Автор: wbsg
Дата сообщения: 25.05.2011 09:22
fortezza,

Судя по всему, Вам нужен общий заголовок для нескольких столбцов. Смотрите в направлении Bands (демо пример: ViewBandedDemo)
Автор: fortezza
Дата сообщения: 25.05.2011 10:07
wbsg, да вроде не нужен, если совсем уж подробно раскрывать тему:

Есть у меня в таблице поля которые хранят id других таблиц. обычно на них вешают lookupcombobox. Но я хочу реализовать это по-другому. Для этого мне надо три поля: 1 - id, 2 - code (существует не для всех таблиц), 3 - name. В DataSet использую left join чтобы выбрать значения для полей code и name. Пользователь всегда видит только столбец поля name, но может отобразить и скрытые другие поля - id и code (правой кнопкой по столбцу - это первый случай когда нужны ссылки на столбцы). Далее на каждой из трех колонок есть cxButtonEdit при клике на который вызывается форма с фокусом на нужной записи (это второй случай когда нужны ссылки - т.е. на каком поле не щелкнул пользователь передастся значение поля id), выбрав в этом окне нужное значение двойным щелчком форма закрывается и передает 3 соответствующих значения для 3-х столбцов (3 случай кагда нужны ссылки).
Сейчас для меня это очень удобно и по скорости инициализации Grid-а и колонок и по возможностям сортировки и фильтрации (в отличии от lookup), неудобно только по реализации (для этого я пока что использую массивы + функции для их обработки).

Компоненты я ни разу не создавала, и не представляю как это делать для колонок cxGrid, ведь при этом похоже придется переопределить так же сам cxGrid. Поэтому пока интересует вариант без создания компонента. Конкретно код, который я писала выше. Используя такой код и вручную добавляя колонки в грид, у меня например не получается в определенный момент времени определить является ли колонка TcxGridDBMultiColumn или нет (и если да - обратиться к его ссылкам на столбцы), потому что на (Sender is TcxGridDBMultiColumn) всегда выдается false. Не могу сейчас вглублятся в особенности Delphi, может быть конструкцию (... is T...) в моем случае использовать нельзя, а может быть есть другие причины.

Вообщем, слушаю ваши идеи.
Автор: marser
Дата сообщения: 25.05.2011 10:11
fortezza

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

Cоздайте record

Код: PRec = ^TRec;
TRec = record
Column1 : TcxGridDBColumn;
Column2 : TcxGridDBColumn;
end;
Автор: fortezza
Дата сообщения: 25.05.2011 10:15
marser, по-моему это то что нужно. Сейчас попробую.
Автор: marser
Дата сообщения: 25.05.2011 10:26
fortezza
Я только идею написал. Если подробнее, то

Код: type
PRec = ^TRec;
TRec = record
Column1 : TcxGridDBColumn;
Column2 : TcxGridDBColumn;
end;
var
Rec1: PRec;
.....
New(Rec1);
Rec1.Column1 := cxGridDBColumn1;
Rec1.Column2 := cxGridDBColumn2;
cxGridDBColumn3.Tag := Integer(Rec1);
........
// Обратится к Column1, Column2
// PRec(cxGridDBColumn3.Tag)^.Column1
// PRec(cxGridDBColumn3.Tag)^.Column2
.........
Dispose(Rec1);
Автор: fortezza
Дата сообщения: 25.05.2011 10:45
marser, спасибо!!!, все работает!!!
Автор: mdid
Дата сообщения: 25.05.2011 16:29
народ хелп полиз ибо я уже хз что делать
есть TableView в нес колонка типа LookupComboBox к которому прикручена кверина с остатками товара
при открытии сохраненного документа и нажатии на изменение этой колонки..то есть открытии выпадающего меню
(если уже нет этого товара в кверине)
то поле автоматически очищается..как это побороть?уже пробовал и без синкмода

надеюсь понятно пояснил
Автор: X11
Дата сообщения: 25.05.2011 16:36
Никак. Неправильную ты привязку сделал. Откуда в гриде будет значение, если кверя пустая?

В датасете живёт число 1, а за счёт квери грид показывает не 1, а то ,что соответствует этой цифре. Читай про lookup поля в датасетах.
Автор: marser
Дата сообщения: 25.05.2011 18:52
mdid
1. Сделайте в Properties.ListSource.DataSet запрос всех товаров, причем так, чтобы было поле с признаком "это остатки товаров".
2. Добавте колонку в Properties.ListСolumns c полем "это остатки товаров". Установите фиксированную ширину колонки равной нулю (чтобы её сделать невидимой).
3. Используя колонку с полем "это остатки товаров", на событии Properties.OnInitPopup, установите фильтр Properties.Grid.DataController.Filter так, чтобы показывались только остатки товаров.
Автор: mdid
Дата сообщения: 25.05.2011 19:02
почему ж тогда отрабатывает код начального заполнения документа

Код:
GetNomenclature; <-заполнили лукап товаром
for I:=0 to DataSource1.DataSet.RecordCount - 1 do begin
cxGrid1TableView1.DataController.FocusedRecordIndex:=
cxGrid1TableView1.DataController.AppendRecord;

gr_Title.EditValue:=DataSource1.DataSet.FieldByName('Title').AsVariant;<- присваиваем наименование

Автор: marser
Дата сообщения: 25.05.2011 19:24
mdid
У Вас в gr_Title.Properties.KeyFieldNames поле, содержащие наименование? Забавно!
Если так, то нужно использовать СomboBoх.
Автор: fortezza
Дата сообщения: 26.05.2011 07:18
mdid, если правильно тебя поняла, то я решила этот вопрос таким образом: в основном квери сделала left join с той таблицей которая отображается у тебя в лукап и вывела в гриде ещё одну колонку с наименованием (или чем там тебе нужно), сделала ее скрытой. на колонке, где у меня весит лукап, в событии OnGetDisplayText такой код:

if VarToStr(ARecord.Values[лукап_колонка.Index]) = '' then
AText := VarToStr(ARecord.Values[колонка_с_текстом.Index]);

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

p.s. если использовать left join на квери должен висеть апдейтер
Автор: marser
Дата сообщения: 26.05.2011 08:27
mdid
Я никак понять не могу. Если у Вас Properties.KeyFieldNames = Properties.ListFieldNames, то зачем лукап? Что там лукапить? Объясните мне, бестолковому.
Автор: mixerr
Дата сообщения: 26.05.2011 13:34
Разбираюсь с ASPxGridView, В ASP.net заполняю ASPxGridView с помощью коллекции. По нажатию кнопки создается экземпляр коллекции и в ней добавляются значения, далее ASPxGridView1.DataSource = result; /*rezult - коллекция*/ ASPxGridView1.DataBind();. В таблице выводятся значения, но по нажатию кнопок page внизу ASPxGridView, срабатывает сообщение loaging и далее пустой список, даже если вернуться на 1 страницу. Вроде как теряется коллекция, то же самое с сортировкой по нажатию на заголовок. Подскажите что не так?
Автор: volser
Дата сообщения: 27.05.2011 20:01
mixerr
Грузите данные не по кнопке, а в методе Page_Load.
Автор: indapublic
Дата сообщения: 28.05.2011 16:04
Доброго дня всем.
Ситуация:

Есть собственные классы

TcxLookupComboBoxPropertiesExtended = class(TcxLookupComboBoxProperties)
TcxLookupComboBoxExtended = class(TcxLookupComboBox)
TcxEditRepositoryLookupComboBoxExtendedItem = class(TcxEditRepositoryLookupComboBoxItem)

Контрол ведет себя хорошо, все работает.
Необходимо добавить стиль в репозиторий TcxEditRepository.
В рантайме создаю элемент класса TcxEditRepositoryLookupComboBoxExtendedItem и заполняю - все хорошо.

Вопрос:
Когда я в дизайн-тайме добавляю элемент в репозиторий - выводятся стандартные классы DevExpress. Каким образом я могу добавить свой класс в тот список?

Автор: X11
Дата сообщения: 31.05.2011 08:51
Как у строки cxVerticalGrid сделать Caption многострочным?

Добавлено:
Сколько версий прошло уже, а до сих пор не исправили баг с двойным срабатыванием события OnFocusedRecordChanged при первом открытии датасета в cxGrid`е
Автор: BlackVetal
Дата сообщения: 31.05.2011 12:30
X11
по идеи должно быть свойство "Высота" у строки, а в appearance в свойствах текста выстаить переносы
Автор: X11
Дата сообщения: 31.05.2011 12:41
AutoHeight не помогает

Добавлено:
Разве что так

Код: cxVerticalGrid1EditorRow1.Properties.Caption := 'Первая строка' + #13#10 + 'вторая строка';
Автор: G1zm0
Дата сообщения: 01.06.2011 06:24
Бодрого времени суток товарищи, прошу помощи вашей о знатоки :
пишу и использую D2010, DevExpX55
столкнулся с проблемой такого плана : cxEditRepository есть DateEdit, но у этого DateEdit нету свойства .Date а оно очень надо
Автор: marser
Дата сообщения: 01.06.2011 07:11
G1zm0

Цитата:
cxEditRepository есть DateEdit, но у этого DateEdit нету свойства .Date а оно очень надо

Зачем? Напишите подробнее, что Вы хотите сделать?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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