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

» Использование DevExpress

Автор: Alex1978
Дата сообщения: 22.09.2006 14:14
X11
MultiSelect включи у TableView. и как обычно работают Ctrl и Shift

Или не успел, или лоханулся. Предыдущий пост.

Блин пока писал, думал как же все-таки хорошо англоязычным и русским - все-то две раскладки, а нам украинцам то сортировка в гриде не та, то запаришься с переключением раскладки.
Автор: golkanavt
Дата сообщения: 22.09.2006 15:06
Alex1978

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



дык вы эта, того, сделайте русский государственным
Автор: vavavol
Дата сообщения: 22.09.2006 17:45
Не могу найти. Подскажите, пожайлуста, как пользоваться ини-файлами cxIntl_rus.ini для руссификации грида
Автор: vcrank
Дата сообщения: 24.09.2006 15:39
Имеется TcxTreeList. В данной ситуации сложно назвать "деревом", т.к. все ноды 0 уровня. Подскажите пожалуйста как переместить выбранный элемен вверх/вниз на одну позицию
Автор: RayZ
Дата сообщения: 25.09.2006 03:10
ПО идее, это должно добавлять в NewItemRecord поле в колонку GetColumnByFieldName('contagent'), которая скрытая значение, указанное в cxLookupComboBox1.EditValue.
Райзит экзепшн.


Код: procedure TMainForm.tblFlatsFocusedRecordChanged(Sender: TcxCustomGridTableView;
APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
var
CAIndex : Integer;
begin
if ANewItemRecordFocusingChanged then begin
CAIndex := TcxGridDBTableView(Sender).GetColumnByFieldName('contagent').Index;
AFocusedRecord.Values[CAIndex] := cxLookupComboBox1.EditValue;
end;
end;
Автор: X11
Дата сообщения: 25.09.2006 08:58
Alex1978, Вы наверное не поняли меня.
я знаю как включить MultiSelect и выделить несколько записей подряд с пом. шифта, мне не понятно, можно ли как в гриде EhLib выделять записи через одну, а НЕ подряд.

Добавлено:
JackOff, в опциях TableView MultiSelect и CellMultiSelect установлено в True, а выделение с помощью клавиши Ctrl и мышки не работает.

установлен Express QuantumSuite 5.14

Добавлено:
ага, дошло, CellMultiSelect должно быть установлено в False

Добавлено:
Идиотизм. Зато теперь не работает множественное выделение ячеек
а может можно как-то реализовать и множественное выделение ячеек, и выделение записей "через одну"

Добавлено:
Вопрос "в догону": а как же теперь можно мышкой выделять несколько записей? Ибо множественное выделение работает только с Shift`ом %(
Автор: vavavol
Дата сообщения: 25.09.2006 09:49
Подскажите всё-таки же!! Скачал с http://www.freedevexpressaddons.com/ русский .ini для грида. А дельше что с ним делать?
Автор: X11
Дата сообщения: 25.09.2006 09:56
наверное нужно закинуть его в папку с гридом и перекомпилировать
Автор: vavavol
Дата сообщения: 25.09.2006 10:04
Полностью все пакеты?
Автор: X11
Дата сообщения: 25.09.2006 10:09

Цитата:
русский .ini для грида

думаю, что только пакеты грида
Автор: vavavol
Дата сообщения: 25.09.2006 10:18
X11
Странно. Насколько я понимаю, то вообще то русские ресурсы в cxGridStrs.pas. Как переинсталляция подцепит cxIntl_rus.ini?
Автор: X11
Дата сообщения: 25.09.2006 10:21
есть процедура, в которую передаю TcxGridDBTableView, как параметр
Внимание, вопрос: как "пробежаться" по всем ВЫДЕЛЕННЫМ строкам FromGrid?
Требуется все выделенные записи грида скопировать в другой датасет.

procedure TfmMain.OtborByCxGrid(FromGrid:TcxGridDBTableView;ToGrid:TDBGridEh);
begin
...

заранее благодарен за ответ.


vavavol
странно, у меня cxIntl_rus.ini вообще нет на диске
тебе, наверное, нужно заново запустить установку и быбрать русский язык
Автор: vavavol
Дата сообщения: 25.09.2006 10:31
X11
for i:=0 to FromGrid.DataController.GetSelectedCount-1 do
begin

ARowIndex := FromGrid.DataController.GetSelectedRowIndex(i);
ARowInfo := FromGrid.DataController.GetRowInfo(ARowIndex);

ID:=FromGrid.DataController.GetRecordId(ARowInfo.RecordIndex);

end;
Автор: X11
Дата сообщения: 25.09.2006 10:47
vavavol, спасибо




Уважаемые знатоки, какой код, по Вашему мнению, правильный, а если и тот, и тот правильный, то какой наиболее прапвильный, где могут быть зарыты грабли?

Код1
for i := 0 to FromGrid.Controller.SelectedRecordCount-1 do begin
ToGrid.DataSource.DataSet.Append;
for f := 0 to ToGrid.DataSource.DataSet.FieldCount-1 do begin
ToGrid.DataSource.DataSet.Fields[f].Value :=
FromGrid.Controller.SelectedRecords[i].Values[FromGrid.GetColumnByFieldName(ToGrid.DataSource.DataSet.fields[f].name).index];
end;
ToGrid.DataSource.DataSet.post;
end;

Код2
for i:=0 to FromGrid.DataController.GetSelectedCount-1 do
begin
ARowIndex := FromGrid.DataController.GetSelectedRowIndex(i);
ARowInfo := FromGrid.DataController.GetRowInfo(ARowIndex);
id := FromGrid.DataController.GetRecordId(ARowInfo.RecordIndex);
if FromGrid.DataController.DataSet.Locate('ID',id,[]) then begin
ToGrid.DataSource.DataSet.Append;
for f := 0 to ToGrid.DataSource.DataSet.FieldCount-1 do
ToGrid.DataSource.DataSet.Fields[f].Value :=
FromGrid.DataController.DataSet.FieldByName(ToGrid.DataSource.DataSet.Fields[f].name).AsVariant;
ToGrid.DataSource.DataSet.post;
end;
end;//for i:=0 to FromGrid.DataController.GetSelectedCount-1 do


Добавлено:
vavavol, в этой строке вываливается исключение

id := FromGrid.DataController.GetRecordId(ARowInfo.RecordIndex);

что невозможно конвертировать Variant(null) into Integer

Добавлено:
Var
id : Variant;
id := FromGrid.DataController.GetRecordId(ARowInfo.RecordIndex);
во время выполнения дебагер показывает
id = null
Автор: jicoff
Дата сообщения: 25.09.2006 12:07
X11

Вообще-то это нормальное явленте, NULL к Int не преобразуется. Возможно не задано свойство KeyFieldNames.
Автор: Alex47
Дата сообщения: 25.09.2006 12:22
vavavol

Цитата:
Подскажите всё-таки же!! Скачал с http://www.freedevexpressaddons.com/ русский .ini для грида. А дельше что с ним делать?

Для начала надо прочитать, что на той странице написано.
К русскому ini требуется инсталлировать компонент CXINTL 5.0.0.
Процесс описан в Readme.txt
В поставке, похоже, есть примеры.
Возможно, для использования придется писать что-то типа:
cxIntl.LoadFromFile(Extractfilepath(Application.ExeName) + 'LanRussian.Ini')
Автор: X11
Дата сообщения: 25.09.2006 12:46
jicoff, нет, не заполнено, и не собираюсь, попробую использовать GetValue
Автор: vavavol
Дата сообщения: 25.09.2006 12:49
Alex47
Спасибо, действительно невнимательно прочитал . Всё в порядке

Добавлено:
X11
Почему не хочешь в KeyFieldNames поставить ID? Нет необходимого поля?
Автор: X11
Дата сообщения: 25.09.2006 13:14


Код: DataSet := ToGrid.DataSource.DataSet;
for i:=0 to FromGrid.DataController.GetSelectedCount-1 do
begin
ARowIndex := FromGrid.DataController.GetSelectedRowIndex(i);
ARowInfo := FromGrid.DataController.GetRowInfo(ARowIndex);
id := FromGrid.DataController.GetValue(ARowInfo.RecordIndex,FromGrid.GetColumnByFieldName('ID').Index);

if FromGrid.DataController.DataSet.Locate('ID',id,[]) then begin
DataSet.Append;
for f := 0 to DataSet.FieldCount-1 do
тут исключение -> DataSet.Fields[f].Value := FromGrid.DataController.GetValue(ARowInfo.RecordIndex,FromGrid.GetColumnByFieldName(DataSet.Fields[f].name).Index);
DataSet.post;
end;
end;//for i:=0 to FromGrid.DataController.GetSelectedCount-1 do
Автор: jicoff
Дата сообщения: 25.09.2006 13:27
X11

Что-то какой-то сумбур наблюдается. Если ты по исходному DataSet'у делаешь Locate, тогда и данные напрямую присваивай, минуя грид:

DataSet.Fields[f].Value := FromGrid.DataController.DataSet.Fields[...]

Кстати, ты уверен, что FromGrid.GetColumnByFieldName(DataSet.Fields[f].name) возвращает не NULL?
Автор: X11
Дата сообщения: 25.09.2006 13:45
тоже вызывает AV, может из-за DataSet.Fields[f].name ???
хотя в DataSet`е дебагер показывает 45 полей, всё верно - 45

Код: ShowMessage(VarToStr(FromGrid.DataController.GetValue(ARowInfo.RecordIndex,FromGrid.GetColumnByFieldName(DataSet.Fields[f].name).Index)));
Автор: RayZ
Дата сообщения: 25.09.2006 13:55
X11, а какой тип данных у колонки Fields[f] в гриде?
TcxGridTableView(FromGrid.FocusedView).Columns[f].DataBinding.ValueType?
Автор: X11
Дата сообщения: 25.09.2006 14:09
дык... самые азные типы: intger, string, TDateTime, в основном

Добавлено:
Короче, если без Locate, как "пробежаться" по выделенным строкам и узнать значения полей?

Добавлено:
Помоему доходит

DataSet.Fields[f].Value :=
FromGrid.DataController.Values[ARowInfo.RecordIndex,
FromGrid.GetColumnByFieldName(DataSet.Fields[f].name).Index];

DataSet.Fields[f].name возвращает ИмядатасетаИмяполя
а нужно просто Имяполя, поэтому и AV
Автор: jicoff
Дата сообщения: 25.09.2006 15:08
X11

Ну так писал же, что FromGrid.GetColumnByFieldName(DataSet.Fields[f].name) NULL возвращает, правда такой подвох с путаницей свойств не заметил.
Автор: X11
Дата сообщения: 25.09.2006 15:10
дело в том, что в одном гриде (исходном cxGrid) колонок меньше
здесь вылазит AV, скорее всего, когда передаю имя поля, которого нет в FromGrid
ii := FromGrid.GetColumnByFieldName(DataSet.FieldDefs[f].name).Index;

Добавлено:
народ, направьте на путть истинный

Добавлено:
вопрос в догонку: есть ли у грида фонкция, типа cxGrid.Columnexists?
Автор: jicoff
Дата сообщения: 25.09.2006 15:56
X11

А чем не устраивает сравнение
if Grid.GetColumnByFieldName(DataSet.FieldDefs[f].FieldName) <> nil then
...
Автор: X11
Дата сообщения: 25.09.2006 16:09
да, сделал, всё без ошибок
только теперь таблица назначения (DataSet) пустая, т.е. добавляются записи пустыми ячейками

Код:
DataSet := ToGrid.DataSource.DataSet;
for i:=0 to FromGrid.Controller.SelectedRecordCount-1 do begin
DataSet.Append;
for f := 0 to DataSet.FieldCount-1 do begin
cxGridDBColumn := FromGrid.GetColumnByFieldName(DataSet.Fields[f].Name);
if cxGridDBColumn <> nil then
DataSet.Fields[f].Value := FromGrid.Controller.SelectedRecords[i].Values[cxGridDBColumn.Index];
end;
DataSet.post;
end;//for i:=0 to FromGrid.DataController.GetSelectedCount-1 do

Автор: jicoff
Дата сообщения: 25.09.2006 16:32
X11

Что ты так упорно свойство Field.Name используешь. Это имя объекта, а не имя поля таблицы. Пиши так DataSet.Fields[f].FieldName).
Автор: X11
Дата сообщения: 25.09.2006 16:35
опять забыл, что нужно использовать DataSet.FieldDefs[f].Name
Автор: ChiefPilot
Дата сообщения: 25.09.2006 16:47
Подскажите, кто знает, пожалуйста, что это такое может быть? При установке компонента ExpressPrinting System (версия 3) при компиляции dxPScxGrid4linkD7.dpk выдаётся ошибка о несовместимости типов TcxGridLevel и TcxCustomGridRecord (установлен QuantumGrid версии 5.17). Спасибо!

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Kylix


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