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

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

Автор: DShtorm
Дата сообщения: 15.02.2008 21:56
Такой вопрос
редактируется вообщем ячейка . Нажимаем ентер в конце .
Из редактирования вышли фокус остался на ячейке .

Пишем код в EditKeyDown
var
GoForward: Boolean;
begin
// заставлюя грид перепрыгивать в следующую ячейку если нажать влево вправо
if (AEdit is TcxCustomEdit) and
((Key = VK_LEFT) or (Key = VK_RIGHT)) then
begin
GoForward := (Key = VK_RIGHT);
Key := 0;
Sender.Controller.FocusNextCell(GoForward, True, False);
end;
end;

Болезнь вылечилась фокус переходит на следующую ячейку когда нажимаем стрелочку влево ( вправо )

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

Никто не занет как это сделать ??


Автор: clear2121
Дата сообщения: 16.02.2008 04:23
Привет ВСЕМ!
Поставил CodeGear 2007 C++ Builder. Взял рабочий прект из BDS2006. И начались проблемы. Кое какие я решил, но не могу понять вот, что (все в TcxTreeList):

1. В BDS2006 код
if ( (String)GR_OBR->FocusedNode->Values[6] == "ДА " ) был необходим, а в 2007 уже выходит сообщение об ошибке:
[BCC32 Error] main.cpp(605): E2015 Ambiguity between '_fastcall System::AnsiString::AnsiString(const System::AnsiString &) at c:\program files\codegear\rad studio\5.0\include\vcl\dstring.h:70' and '_fastcall System::AnsiString::AnsiString(const wchar_t *) at c:\program files\codegear\rad studio\5.0\include\vcl\dstring.h:72'
[BCC32 Error] main.cpp(605): E2031 Cannot cast from 'Variant' to 'AnsiString'

2. Тоже и с присвоением:
из 2006
String tmp = (String)GR_OBR->FocusedNode->Values[6];
проходило нормально, здесь выдает ошибку.

3. Все время использовал в начале проги СПЛЭШ форму. В Source
Application->Initialize();
Application->Title = "Цех NGN.";
Form10 = new TForm10( Application );
Form10->PB->Properties->Max = 30;
Form10->Show();
а в проге в создании Form1
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    Form10->PB->Position = 7;
    Application->ProcessMessages();
    ShowCursor( true );

    Form10->cxLabel1->Caption = "Инициализация программы...";
    Application->ProcessMessages();
...

Компилится нормально, но при запуске проги первые две строки пролазят нормально, а на лайбел ругается ACCES ... (ошибка доступа). В чем дело?

Вообщем хотелось бы перейти на CodeGear2007, но если такая хрень непонятная с Девками, то придется остаться на BDS2006/

СПАСИБО!
Автор: Widoms
Дата сообщения: 16.02.2008 05:47
подскажите про cxLookupComboBox
при выборе из справочника при вводе нового значения автоматически добавлялось в DB.
Автор: DShtorm
Дата сообщения: 16.02.2008 12:45
Делаем навигацию по Гриду а-ля Ексел ( завершаем редактирование
как стрелками так и ентером )

uses
cxTextEdit;

обработчик EditKeyDown

var
GoForward: Boolean;
begin
// заставлюя грид перепрыгивать в следующую ячейку если нажать влево вправо
// а-ля Excel
if (AEdit is TcxCustomEdit) and
((Key = VK_LEFT) or (Key = VK_RIGHT)) and
// сравниваю равна ли позицию курсора в тексте последнему символу
(TcxTextEdit(Sender.Controller.EditingController.Edit).CursorPos =
Length(TcxTextEdit(Sender.Controller.EditingController.Edit).Text))
and
// проверяю есть ли какое-нибудь выделение текста
(Length(TcxTextEdit(Sender.Controller.EditingController.Edit).SelText) = 0)
then
begin
GoForward := (Key = VK_RIGHT);
Key := 0;
// TcxCustomDropDownEditAccess(Sender.Controller.EditingController.Edit).CloseUp(crEnter);
Sender.Controller.FocusNextCell(GoForward, True, False);

end;
end;

Пользуйтесь )))
Автор: TarasX
Дата сообщения: 16.02.2008 14:39
X11

Цитата:
Вопрос по сохранению закладок датаконтроллера. Мне нужно переоткрыть набор данных. Подскажите, как правильно сохранить и восстановить позицию курсора TcxGridDBTableView?

Это не поможет?
http://www.devexpress.com/kbA2279


Автор: X11
Дата сообщения: 16.02.2008 22:33
TarasX, вроде оно, спасибо!
Автор: DShtorm
Дата сообщения: 17.02.2008 12:43
Хотел узнать
как можно в поля грида передавать в RunTime
различные виды редакторов с настройками

Нашел такую тему как Repository , только как им пользоваться
еще не разобрался

+ чтобы выглядело типа ФормаСоздать ( Поле1 , поле2 )

а поле1 типа как record со всеми настройками ;

Подумал должно быть чего-то такого

ФормаСоздать ( Наш репозитарий.профиль Х ) )))
и желательно чтобы репозитарий можно было в Дизайнере покрутить


Автор: TarasX
Дата сообщения: 17.02.2008 18:35
DShtorm

Цитата:
Хотел узнать
как можно в поля грида передавать в RunTime
различные виды редакторов с настройками

Если я правильно понял - наверное, копать надо в сторону обработки сообщения OnGetContentStyle для View или ячейки грида. В нём присваиваешь стиль исходя из своих настроек.
Автор: RostY
Дата сообщения: 18.02.2008 08:48
[удалено]
Автор: DShtorm
Дата сообщения: 18.02.2008 13:23

Цитата:
Если я правильно понял - наверное, копать надо в сторону обработки сообщения OnGetContentStyle для View или ячейки грида. В нём присваиваешь стиль исходя из своих настроек.


Тут другой момент создаю Run Time обычный грид
с обычными Editami

а мне хочется чтобы в какой-то строке выпадал LookupCombobox
и вот надо заменить Edit LookupCombobox ))

получается есть Repository
в нем можно насоздовать заготовок столбцов с настройками
и в гриде подменять Edit нашими заготовками ..

В общем такая метода ...
Автор: Dronton2
Дата сообщения: 18.02.2008 13:39
Widoms
Посмотри OnNewLookupDisplayText для LookupComboBox

Добавлено:
DShtorm
У любой колонки в гриде есть события OnGetProperties и OnGetPropertiesForEdit. Нужно копать в этом направлении. В демках к квантумгриду есть такая демка ColumnsMultiEditorsDemo. Посмотри её.
Автор: DShtorm
Дата сообщения: 18.02.2008 15:08

Цитата:
демка ColumnsMultiEditorsDemo


спасибо , но не то
там всего лишь происходит отображение / неотображение
кнопки выбора в ячейки

см. мое решение на прошлой странице ...


Автор: DShtorm
Дата сообщения: 21.02.2008 20:48
Есть еще вопрос как подключать столбцы из Repository RunTime

У меня вышло пока так :

во первых надо прицепить
RepositoryItem
во вторых установить
PropertiesClassName ( последнее непонятно за чем , но без него не работает)

cxGrid1DBTableView1.Columns[cxGrid1DBTableView1.DataController.GetItemByFieldName(MyColumns[i][a,ColumnXName]).Index].RepositoryItem := TcxEditRepositoryItem(MyColumns[i][a,ColumnValue]);
cxGrid1DBTableView1.Columns[cxGrid1DBTableView1.DataController.GetItemByFieldName(MyColumns[i][a,ColumnXName]).Index].PropertiesClassName := 'TcxLookupComboBoxProperties';

в третьих я передаю свойство как "строку" и надо ее каждый раз как-то приводить ??
типа TcxEditRepositoryItem(MyColumns[i][a,ColumnValue]);
+ 'TcxLookupComboBoxProperties';
нет более простого решения ??

Автор: DmitryZzz
Дата сообщения: 22.02.2008 13:25
Добрый день.
Вопрос по TcxGrid (6)
Не могу найти, как определить кол-во записей в гриде после применения фильтров

Сорри, исправляюсь:
В датасете := GV.DataController.GetRecordCount;
После фильтров := GV.ViewData.RecordCount;
Физически на экране := GV.ViewInfo.VisibleRecordCount
Автор: StdNet
Дата сообщения: 22.02.2008 19:26
Доброго времени.
подскажите как в Гриде сделать поле переключателем.
НО база под 1С и в самой 1с для реквизита с флажком ставиться тип данных число длинной 1 знак... на форму выводит флажок и все ок.
а вот как в грид сделать флажком хз. по идееж что бы был флажок ната тип данных ставить Бит, но 1с стаавит число.. вообще можно как то научить грид чтобы он в определенное поле ставил флажек(при обновлении данных в таблицу 1С он должен записать 1 или 0
Автор: DShtorm
Дата сообщения: 22.02.2008 21:32

Цитата:
при обновлении данных в таблицу 1С он должен записать 1 или 0


Вроде не вопрос
столбцу ставишь тип Чекбокс
и настраиваешь
Чекед / Анчекед byte
value - 1/0
Автор: DShtorm
Дата сообщения: 23.02.2008 13:31
Выручайте

есть елемент типа TcxEditRepositoryItem
я передаю его имя как String
тупое TcxEditRepositoryItem(String) не проходит ...

такая же беда есть со строкой итогов
Kind = 'skSum' не канает ....

Общий вопрос такой
как преобразовать String в нужный тип ( универсальное решение );

Пока отбой
переделал передачу данных в массив записей ;
Автор: afiget
Дата сообщения: 25.02.2008 15:58
DShtorm

Код: Kind:=TcxSummaryKind(1);
Автор: DShtorm
Дата сообщения: 26.02.2008 00:40
afiget
Круто
А я уже переделал
массив строк в массив записей ,
но будем знать
Автор: neznayka3
Дата сообщения: 26.02.2008 12:03
Есть TcxDBVerticalGrid с полем TcxButtonEditProperties у которого FieldName не установлено, тк хочу писать туда сам. Но у TcxButtonEditProperties нет ни Text ни Value. Как самому занести текст?
Автор: Czechoslovak
Дата сообщения: 26.02.2008 16:19
neznayka3

OnGetDisplayText
Автор: X11
Дата сообщения: 26.02.2008 23:31
Мне нужно пробежаться по отфильтрованному гриду и с выделенными записями что-то сделать, как это сделать правильнее и рациональнее?
думаю, что так не совсем правильно

Код:
for i := 0 to dbgReklama.ViewData.RecordCount - 1 do begin
if dbgReklama.ViewData.Records[i].Selected then begin
DM.SP_SET_EXPIREDATE.ParamByName('IN_DATE').AsDate := fmSelDate.cxDateEdit1.EditValue;
DM.SP_SET_EXPIREDATE.ParamByName('IN_ID').AsInteger := dbgReklama.ViewData.Records[i].Values[dbgReklamaID.Index];
DM.SP_SET_EXPIREDATE.ExecProc;
end;
end;//for
Автор: neznayka3
Дата сообщения: 27.02.2008 06:11
Czechoslovak
Работает, но только тогда, когда едитор не находиться в фокусе
Автор: greenpc
Дата сообщения: 27.02.2008 07:27
X11
with tvGrid.DataController do begin
BeginUpdate;
for I := 0 to GetSelectedCount - 1 do begin
KeyId := tvGrid.Controller.SelectedRows[i].Values[tvGridId.Index];
Автор: Czechoslovak
Дата сообщения: 27.02.2008 08:17
neznayka3
Запрети редактирование этой ячейки
Автор: X11
Дата сообщения: 27.02.2008 09:15
greenpc, а ничего страшного, что используется и DataController, и Controller, можно сказать, одновременно?
Автор: greenpc
Дата сообщения: 27.02.2008 09:20
X11
DataController - данные
Controller - это то что видишь
Автор: X11
Дата сообщения: 27.02.2008 09:34
а ViewData и ViewInfo нельзя использовать? Для чего их можно использовать? Или для чего их лучше использовать?

Добавлено:
greenpc
а если датаконтроллер отфильтрован или сгруппирован, твой код нормально сработает?
Автор: neznayka3
Дата сообщения: 27.02.2008 12:40

Цитата:
Но у TcxButtonEditProperties нет ни Text ни Value. Как самому занести текст?

У TcxMemoProperties нет ни Lines ни Text. Снова использовать OnGetDisplayText, неужели нет другого способа?
Автор: X11
Дата сообщения: 27.02.2008 15:09

Цитата:
with tvGrid.DataController do begin
BeginUpdate;
for I := 0 to GetSelectedCount - 1 do begin
KeyId := tvGrid.Controller.SelectedRows[i].Values[tvGridId.Index];

greenpc, твой код работает, СПАСИБО

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

Предыдущая тема: Язык программирования на русском языке


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