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

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

Автор: Vixoid
Дата сообщения: 23.11.2010 12:54
vcrank
а после
Код: dsMain.DataSet.Refresh
Автор: vcrank
Дата сообщения: 23.11.2010 12:58
tanaseduard
Проблема решилась. Непонятным мне способом, но решилась
Убрал значение из свойства cxGridDBTableMain.DataController.KeyFielNames
Вроде работает и косяков сходу не заметил

И чтобы 2 раза не ходить...
Напомните пожалуйста, как сделать так, чтобы отображалась только одна дочерняя сетка? По дефолту видны все дочерние сетки, но данные отображаются только в текущей. Хотелось бы скрывать все пустые сетки
Автор: vladman
Дата сообщения: 23.11.2010 16:41
Sufferer

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

Дитейл нужно сортировать по ключу-связке с мастером - это правило железное, и многие очень часто это забывают. Давайте пример, посмотрим что и как у вас не так.
Автор: tanaseduard
Дата сообщения: 23.11.2010 19:30
vcrank
Поддержываю vladman.
Хочеться взглянуть на обьекты и их параметры.
Автор: Sufferer
Дата сообщения: 24.11.2010 08:21

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

А вот это мысль похоже верная оказалась. Спасибо за подсказку. Т.е. получается, что деталь выбирается не запросом по полю - ключу, а последовательным чтением от первого вхождения ключа до несовпавшего. Не знал.
Автор: vladman
Дата сообщения: 24.11.2010 10:56
Sufferer

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

Запросом выбираются все записи всех дитейлов. А "привязка" записей дитейла к записи мастера осуществляется уже непосредственно датаконтроллером. И это все спрведливо только для режима DetailInSQLMode = False.
Автор: tanaseduard
Дата сообщения: 24.11.2010 11:13
Sufferer
Если выставить DetailInSQLMode = True. то можно будет раскрывать только 1 уровень, что не всегда есть хорошо.
Автор: junik
Дата сообщения: 24.11.2010 15:32
Добрый день.

Столкнулся вот с такой проблемкой.
В EhLib есть возможность настройки редактора колонки как комбобокса с отображаемыми значениями по PickList и ключевыми по KeyList.
В cxGrid я такого не нашел что-то. Есть ли возможность такое реализовать?
Автор: linker_2009
Дата сообщения: 24.11.2010 15:39
junik
А колонка со свойством Propeties=LookupComboBox не то?
Автор: tanaseduard
Дата сообщения: 24.11.2010 15:48
junik
MRUEdit, LookupCombobox в Properties?
Автор: junik
Дата сообщения: 24.11.2010 16:34
Дело в том, например, что в таблице есть обычное строковое поле, значения которого например С или N или R могут быть.
В гриде нужно отобразить эти значения нормально, т.е. расшифровать пользователю.

LookupCombobox - ему нужен ListSource, которого нет.
MRUEdit мог бы помочь для числового поля.
Автор: linker_2009
Дата сообщения: 24.11.2010 16:39
junik
ImageComboBox, без картинок
Автор: tanaseduard
Дата сообщения: 24.11.2010 16:43
junik

dxMemData. Пишешь там. Потом вяжешь ComboBox.
Удобно быстро и сердито.
Автор: linker_2009
Дата сообщения: 24.11.2010 16:51
junik
Еще вариант: на событие OnGetDisplayText у колонки менять AText
Автор: junik
Дата сообщения: 24.11.2010 16:57
tanaseduard, linker_2009

Ок, бум пробовать.
С OnGetDisplayText не получится, т.к. в редакторе не будет отображаться измененный текст.
Автор: chydachok
Дата сообщения: 25.11.2010 13:41
Подскажите, пожалуйста, как можно при экспорте экспортировать только открытые группы? ExpandAll - раскрывает все группы, как заставить экспортировать именно только открытые группы?
Автор: tanaseduard
Дата сообщения: 25.11.2010 14:13
chydachok
Тесть не экспортировать вообще закрытые группы, или при экспорте не раскрывать их?
Также куда экспортируете и как?
Какая степень вложенности?
Автор: chydachok
Дата сообщения: 25.11.2010 14:21
tanaseduard

Цитата:
Тесть не экспортировать вообще закрытые группы, или при экспорте не раскрывать их?

При экспорте не раскрывать

Цитата:
Также куда экспортируете и как?

в pdf

Цитата:
Какая степень вложенности?

степень 2 и выше

С печатью все просто, указываю MyView.OptionsPrint.ExpandAllGroups=False, после чего выводятся на печать группы и группы мною раскрытые, с экспортом так не выходит.

Автор: tanaseduard
Дата сообщения: 25.11.2010 15:58
chydachok


Цитата:
Цитата:Также куда экспортируете и как?


в pdf


Подскажите пожалуйста как вы экспортируете.
Автор: chydachok
Дата сообщения: 25.11.2010 16:06
tanaseduard

Цитата:
Подскажите пожалуйста как вы экспортируете.



Код: DevExpress.XtraPrinting.PrintingSystem ps = new DevExpress.XtraPrinting.PrintingSystem();
DevExpress.XtraPrinting.PrintableComponentLink link = new DevExpress.XtraPrinting.PrintableComponentLink(ps);
link.Component = myGridControl;
link.Landscape = true;
link.CreateDocument();
link.PrintingSystem.ExportToPdf("Count.pdf");
Автор: fitget
Дата сообщения: 26.11.2010 13:07
А что, 6 грид так и не научился отображать заголовки колонок по вертикали?
Автор: tanaseduard
Дата сообщения: 26.11.2010 13:16
Вроде нет, делаю сам через перерисовку.
Хотя хотелось бы....
Автор: fitget
Дата сообщения: 26.11.2010 15:05
А собственная перерисовка при экспорте в Excel остается или грид ее игнорирует?
Автор: tanaseduard
Дата сообщения: 26.11.2010 18:17
fitget
Непробывал.
Но насколько читал, то он ее киляеет.
На выходных попробую, отпишусь.
Автор: VitOs2
Дата сообщения: 28.11.2010 12:32
Привет всем!
Прошу помочь в следующем.
Есть TcxDBCheckComboBox = checkCB
Нужно сохранять значения в базе в таком формате: (1,45,345,500). То-есть, ID-шники из справочника через запятую.

Пробую делать так:
При заполнении chB позиций присваиваю tag=id и название.
Обрабатываю OnEditValueToStates и OnStatesToEditValue.

procedure Frm.checkCBPropertiesEditValueToStates(
Sender: TObject; const AValue: Variant; var ACheckStates: TcxCheckStates);
var I, J: integer;
tsl: TStringList;
begin
if checkCB.EditValue = null then Exit;
tsl := TStringList.Create;
Try
tsl.CommaText := checkCB.EditValue;
for I := 0 to checkCBServices.Properties.Items.Count - 1 do
for J := 0 to tsl.Count - 1 do
if StrToInt(tsl[J]) = checkCB.Properties.Items[i].Tag then
checkCB.States[i] := cbsChecked
else
checkCB.States[i] := cbsUnchecked;
Finally
tsl.Free;
End;

procedure TfmTrvlClientsFrm.checkCBPropertiesStatesToEditValue(
Sender: TObject; const ACheckStates: TcxCheckStates; out AValue: Variant);
var I: integer;
tsl: TStringList;
begin
tsl := TStringList.Create;
try
for I := 0 to checkCB.Properties.Items.Count - 1 do
if checkCB.States[I] = cbsChecked then
tsl.Add(intToStr(checkCB.Properties.Items[I].Tag));
checkCB.EditValue := tsl.CommaText;
finally
tsl.Free;
end;
end;

Но чего-то не работает... В чём может быть ошибка? Может не втом направлении копаю?
Автор: dimm78
Дата сообщения: 28.11.2010 14:51

Цитата:
VitOs2

1. procedure TfmTrvlClientsFrm.checkCBPropertiesStatesToEditValue(
Sender: TObject; const ACheckStates: TcxCheckStates; out AValue: Variant);
var I: integer;
tsl: TStringList;
begin
tsl := TStringList.Create;
try
for I := 0 to checkCB.Properties.Items.Count - 1 do
if checkCB.States[I] = cbsChecked then
tsl.Add(intToStr(checkCB.Properties.Items[I].Tag));
checkCB.EditValue := tsl.CommaText;
finally
tsl.Free;
end;
end;

Этот обработчик возвращает AValue в качестве значения EditValue TcxDBCheckComboBox. По коду видно что вы заполняете локальный TStringList а затем просто грохаете его. присвойте строку TStringList значению AValue и все должно заработать.

2. procedure Frm.checkCBPropertiesEditValueToStates(
Sender: TObject; const AValue: Variant; var ACheckStates: TcxCheckStates);
var I, J: integer;
tsl: TStringList;
begin
if checkCB.EditValue = null then Exit;
tsl := TStringList.Create;
Try
tsl.CommaText := checkCB.EditValue;
for I := 0 to checkCBServices.Properties.Items.Count - 1 do
for J := 0 to tsl.Count - 1 do
if StrToInt(tsl[J]) = checkCB.Properties.Items[i].Tag then
checkCB.States[i] := cbsChecked
else
checkCB.States[i] := cbsUnchecked;
Finally
tsl.Free;
End;

почти та же проблема. При присвоении TcxDBCheckComboBox значения EditValue (вашей строки) срабатывает этот обработчик. в AValue уже есть ваша строка вот ее и разбирайте.
Сейчас нет Делфей под руками иначе набросал бы побыстрому рабочий вариант.

Да, забыл добавить. Изменять и считывать состояния лучше через ACheckStates это тоже параметр процедуры.
Автор: VitOs2
Дата сообщения: 28.11.2010 21:42
dimm78, большое спасибо!

Я чего-то сразу не понял значения параметров AValue и ACheckStates (плохо хелп читал).
TStringList использовал, для удобного формирования строки id-шникаов через запятую.
Если ими пользоваться, то все работает, как часы! Если кому еще надо будет, реализация следующая:

procedure TfmTrvlClientsFrm.checkCB1PropertiesEditValueToStates(Sender: TObject;
const AValue: Variant; var ACheckStates: TcxCheckStates);
var I, J: integer;
tsl: TStringList;
begin
if AValue = null then Exit;
tsl := TStringList.Create;
Try
tsl.CommaText := AValue;
for I := 0 to checkCB1.Properties.Items.Count - 1 do
ACheckStates[i] := cbsUnchecked;
for I := 0 to checkCB1.Properties.Items.Count - 1 do
for J := 0 to tsl.Count - 1 do
if StrToInt(tsl[J]) = checkCB1.Properties.Items[i].Tag then
ACheckStates[i] := cbsChecked;
Finally
tsl.Free;
End;
end;

procedure TfmTrvlClientsFrm.checkCB1PropertiesStatesToEditValue(Sender: TObject;
const ACheckStates: TcxCheckStates; out AValue: Variant);
var I: integer;
tsl: TStringList;
begin
tsl := TStringList.Create;
try
for I := 0 to checkCB1.Properties.Items.Count - 1 do
if checkCB1.States[I] = cbsChecked then
tsl.Add(intToStr(checkCB1.Properties.Items[I].Tag));
AValue := tsl.CommaText;
finally
tsl.Free;
end;
end;
Автор: projection120
Дата сообщения: 29.11.2010 09:48
Добрый день.
У меня есть грид в котором одно из полей lookupcombobox
пользователь выбирает из этого lookupcomboboxа улицу, при вводе начальных букв улицы данные в lookupcomboboxе сортируются, необходимо чтобы при отсутствии необходимых данных пользователю предлагалось добавить свой варинт. Пробовал постоянно проверять
FilteredrecordCount но он не меняется.
Помогите куда ковырять, сам не могу разобраться
Автор: tanaseduard
Дата сообщения: 29.11.2010 10:10
projection120
Может так подойдет?
DropDownListStyle=lsEditFixedList
Автор: vcrank
Дата сообщения: 29.11.2010 10:33
Можно ли настроить грид так, что бы выделенная сетка не отображалась? (т.е. была видна только одна дочерняя сетка)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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