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

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

Автор: X11
Дата сообщения: 16.03.2011 16:53
Отправляю на печать cxGrid.
cxGrid уже связан в дизайне с dxComponentPrinter.

Код отправки на печать, а вернее в предварительный просмотр.

Код: dxComponentPrinter1.CurrentLink := dxComponentPrinter1Link1;
dxComponentPrinter1.Preview(true);
Автор: JohnSilver182
Дата сообщения: 17.03.2011 09:41
В шапке DLL со скинами из библиотеки dxSkins

а) А есть что то для 5-ой версии ??????????
б) может как то типа dxSkin*.res подключить ??
в) А почему нет свежих скинов ????????
Автор: SIgor33
Дата сообщения: 17.03.2011 09:47
подскажите какой метод надо перекрыть у TcxDBLookupComboBox чтобы проводить фильтрацию в выпадающем списке на по первым символам а по контексту, например
ввод символов
па
в списке
партия
спартак
ит.д
Автор: X11
Дата сообщения: 17.03.2011 11:00
Есть cxGrid1TableView1 из 14 колонок и 14 строк одинакового размера. Нет привязки к базе. Наложена картинка чёрного цвета через Styles.Content.Bitmap. Т.е. я получил черный квадрат размером примерно 600х600, квадрат разделён на клеточки равного размера.

Мне по таймеру, каждые 2 секунды нужно поочереди делать так, чтобы определённая ячейка грида была белая. Что посоветуете, как закрашивать ячейку белым. Какие события использовать?
Автор: alex3645724
Дата сообщения: 17.03.2011 12:47
Как в cxgridbandedtableview заблокировать ввод нечисловых значений? Пытался с помощью события OnEditValueChanged, но этому событию не передается управление. Причем раньше работало. Надо поменять какое-о свойство?
Автор: Cryogen2003
Дата сообщения: 17.03.2011 12:53
cxgridbandedtableview или cxgriddbbandedtableview ?
Если второе, то просто указываешь, поле какого типа в нужной колонке.
А так, я часто люблю делать так - указываю у нужной мне колонки Properties типа SpinEdit или можно даже TextEdit, а там уже обрабатываю через event onValidate.
А можно и тогда просто и KeyPress ловить там же ))))
Автор: alex3645724
Дата сообщения: 17.03.2011 13:06
cxgridbandedtableview. Но раньше же все работало. Странно как-то
Автор: marser
Дата сообщения: 17.03.2011 13:55
SIgor33

Цитата:
подскажите какой метод надо перекрыть у TcxDBLookupComboBox чтобы проводить фильтрацию в выпадающем списке на по первым символам а по контексту

Properties.DropDownListStyle := lsEditList, Properties.IncrementalSearch := False и в событии Properties.OnChange устанавливаем фильтр. И свойство cxDBLookupComboBox.ModifiedAfterEnter нужно проверять.

Добавлено:
Properties.IncrementalSearch - public, а не published свойство
Автор: brookson
Дата сообщения: 17.03.2011 16:04
X11
Сделайте так, как я закрашивал ячейки, только событие
CustomDrawCell
Меняйте фон, а потом tview.Invalidate(true);

Добавлено:
marser

Цитата:
событии Properties.OnChange устанавливаем фильтр

Интересно, а не тормозит это дело?
Остальные свойства можно установить и в дизайнере.

И что именно фильтровать - грид или сам датасет? А то тоже висит такая же задача, руки так и не дошли
Автор: X11
Дата сообщения: 17.03.2011 16:50
я уже сделал с помщью двух TImage
Автор: JohnSilver182
Дата сообщения: 17.03.2011 22:57
Я ломал стекло как шоколад в руке .....
Автор: NatNiM
Дата сообщения: 18.03.2011 08:38
Здравствуйте.

Имеется GridControl, где одна из колонок типа ItemCheckEdit.
Мне нужны только 2 состояния (1 и 0), тип grayed не нужен, я его отключила.
Но при запуске формы у всех записей проставлены статусы grayed, хотя группировка по этому столбцу проходит так, будто значения вытянуты правильно.

Подскажите, пожалуйста, что еще нужно сделать?
Автор: marser
Дата сообщения: 18.03.2011 09:10
brookson

Цитата:
И что именно фильтровать - грид или сам датасет?

Грид, конечно.

Цитата:
А то тоже висит такая же задача, руки так и не дошли

И хорошо, что не дошли. Хлопотно это. Ухандокаешся пока добъешься более-менее безглючной работы. [more=Пример обработчиков событий]
procedure TForm1.LookupComboBoxOnChange(Sender: TObject);
var
AEdit: TcxCustomLookupComboBox;
begin
AEdit := TcxCustomLookupComboBox(Sender);
if AEdit.ModifiedAfterEnter then
begin
with AEdit.ActiveProperties.Grid do
begin
DataController.Filter.BeginUpdate;
try
DataController.Filter.Root.Clear;
if (AEdit.EditingText <> '') and (AEdit.PopupWindow.Visible or (Tag = 1)) then
begin
DataController.Filter.Root.AddItem(Columns[0], foLike, '%' + AEdit.EditingText + '%',
AEdit.EditingText);
DataController.Filter.Active := True;
end
else
DataController.Filter.Active := False;
finally
DataController.Filter.EndUpdate;
end;
Tag := 0;
FocusedRowIndex := TopRowIndex;
SyncSelected(True);
end;
end;
end;

procedure TForm1.LookupComboBoxOnCloseUp(Sender: TObject);
begin
TcxCustomLookupComboBox(Sender).ActiveProperties.Grid.DataController.Filter.Clear;
end;

procedure TForm1.LookupComboBoxOnInitPopup(Sender: TObject);
var
AEdit: TcxCustomLookupComboBox;
begin
AEdit := TcxCustomLookupComboBox(Sender);
AEdit.ActiveProperties.Grid.Tag := 1;
with AEdit.ActiveProperties.Grid.DataController.Filter do
begin
Options := Options + [fcoCaseInsensitive];
Clear;
end;
end;

procedure TForm1.LookupComboBoxOnValidate(Sender: TObject; var DisplayValue: Variant;
var ErrorText: TCaption; var Error: Boolean);
var
AEdit: TcxLookupComboBox;
begin
AEdit := TcxLookupComboBox(Sender);
if VarToStr(DisplayValue) = '' then
AEdit.EditValue := Null;
if not VarIsType(AEdit.EditValue, [varEmpty, varNull]) then
DisplayValue := VarToStr(AEdit.Properties.ListSource.DataSet.Lookup(AKeyFieldName,
AEdit.EditValue, AEdit.Properties.ListFieldNames));
end;[/more]
Автор: SIgor33
Дата сообщения: 18.03.2011 09:22
marser

Цитата:
Properties.DropDownListStyle := lsEditList, Properties.IncrementalSearch := False и в событии Properties.OnChange устанавливаем фильтр

Спасибо за совет. Но подскажите еще у меня происходит автоматическая подстановка первого значения из списка. т. е набрав например
пар нахотиться сзначение спартак и свойство TEXT становиться равным спартак с выделеными последними символами ртак как исключить для дальнейший фильтрации из свойства TEXT это окончание а оставить только пар
Автор: marser
Дата сообщения: 18.03.2011 09:37
SIgor33
Точно Properties.IncrementalSearch := False?


Добавлено:
SIgor33
Я делал на TcxLookupComboBox, а не на TcxDBLookupComboBox, но мне кажется, не должно быть большой разницы

Код: with cxLookupComboBox.Properties do
begin
DropDownListStyle := lsEditList;
IncrementalSearch := False;
IncrementalFiltering := False;
ImmediatePost := True;
end;
Автор: SIgor33
Дата сообщения: 18.03.2011 12:17
marser
Спасибо все заработало
Автор: NatNiM
Дата сообщения: 18.03.2011 12:18
Уточню. В базе данное значение имеет тип number(3).
В гриде при использовании CheckEdit можно еще формат выставить. Но я перепробовала вроде бы все, что можно. Флаги не отображаются.

Автор: SIgor33
Дата сообщения: 18.03.2011 12:55
marser
Спасибо все заработало
Автор: brookson
Дата сообщения: 18.03.2011 15:08
marser
А не слышно - не планирует DevExpress реализовать такую фичу? Хоть в гриде, хоть в комбо?
Автор: Figaro2000
Дата сообщения: 18.03.2011 15:15
NatNiM
поподробней -
1. что за тип number(3), в какой СУБД?
2. для описания вашей проблемы лучше всего просто показать кусок dfm файла со свойствами этого объекта
Автор: NatNiM
Дата сообщения: 18.03.2011 15:59
Figaro2000,

1. Oracle.
Number(3) - целочислнный тип, хотя в этом поле хранятся булевские данные.
2. Среда разработки VisualStudio 2010.

this.AKTPRM.Caption = "P+";
this.AKTPRM.ColumnEdit = this.repositoryItemCheckEdit8;
this.AKTPRM.FieldName = "AKTPRM";
this.AKTPRM.Name = "AKTPRM";
this.AKTPRM.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;
this.AKTPRM.Visible = true;
this.AKTPRM.VisibleIndex = 0;
//
// repositoryItemCheckEdit8
//
this.repositoryItemCheckEdit8.AutoHeight = false;
this.repositoryItemCheckEdit8.Name = "repositoryItemCheckEdit8";
this.repositoryItemCheckEdit8.ValueChecked = ((byte)(1));
this.repositoryItemCheckEdit8.ValueUnchecked = ((byte)(0));

Автор: Figaro2000
Дата сообщения: 18.03.2011 16:33
Я сам пишу на Delphi. Вот фрагмент из примера, идущего в составе библиотек -
object tvCustomersCustomer: TcxGridDBColumn
AlternateCaption = 'Customer'
Caption = 'Customer (CheckBox)'
DataBinding.FieldName = 'Customer'
PropertiesClassName = 'TcxCheckBoxProperties'
Properties.ValueChecked = 'Y'
Properties.ValueUnchecked = 'N'
Width = 79
end
Так, у вас тут еще и репозиторий вмешался. Может быть настройки в репозитории перекрывают настройки в колонке грида?
Автор: f3ka
Дата сообщения: 18.03.2011 16:50

Цитата:
Может быть настройки в репозитории перекрывают настройки в колонке грида?

именно так... какие бы настройки не были выставлены у колонки, настройки в репозитарии их перекрывают!
Автор: NatNiM
Дата сообщения: 18.03.2011 17:25
Простите, не поняла, репозитарий - это что?
Автор: JohnSilver182
Дата сообщения: 18.03.2011 17:45
А мне кажеться что меня никто нелюбит
Автор: andreyims
Дата сообщения: 18.03.2011 20:18
Народ, подскажите плиз, как у TcxGridBandedTableView сохранить порядок колонок не юзая стандартные SaveToStream и.тд
Я сохраняю параметры Колонки:
GroupIndex
Index
SortIndex
SortOrder
Visible
Width

Position.BandIndex
Position.ColIndex
Position.LineCount
Position.RowIndex

Но при восстановлении когда назначаю Position.ColIndex, Index каждой колонке, то порядок предыдущих постоянно пересчитывается.
В итоге все, кроме порядка колонок, восстановлено корректно, а порядок... ну никаик

Добавлено:
Есть такое подозрение, что если установить TcxCustomGridView.IsRestoring то этот "пересчет" прекратится))
Автор: NatNiM
Дата сообщения: 19.03.2011 11:57
И как сделать, чтобы настройки действовали те, которые я выставляю?
Автор: frumych
Дата сообщения: 20.03.2011 19:58
Вопрос по cxTableView. Как узнать значение, введенное в добавляемой (новой) записи до Post-а? Values и cxGridColumn.EditValue выдают пусто.
Автор: X11
Дата сообщения: 20.03.2011 20:38
у девовских контролов ещё есть EditingValue
И, недавно обсуждали (поищи здесь) твой вопрос, ЕМНП, в событии OnValidate
Автор: frumych
Дата сообщения: 20.03.2011 21:27

Цитата:
у девовских контролов ещё есть EditingValue

tcxButtonEdit(cxGridTableView1Column1.Properties).EditingValue - выдает ошибку Access violation... Похоже что то не так пишу


Цитата:
И, недавно обсуждали (поищи здесь) твой вопрос, ЕМНП, в событии OnValidate

- не нашел(( Да и вряд ли onValidate поможет. Немного подробней про проблему - в новой записи грида пользователь вводит некое текстовое значение, затем жмет кнопку ButtonEdit и нужно обработать что он там навводил. При нажатии на эту кнопку onValidate не срабатывает

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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