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

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

Автор: neznayka3
Дата сообщения: 31.07.2008 07:53
Dennica
у всех стоит false

Добавлено:
один с true затерялся) спасибо.
Автор: Granmer
Дата сообщения: 31.07.2008 08:45
afiget
X11
А может есть какой-нибудь способ отключать всё-таки? А то очень не удобно, у меня есть два проекта один - со скинами (надо чтобы красиво было) и один без (надо, чтобы быстро работало, а лишь подключение скинов на медленных машинах существенно подтармаживает прорисовку).
Автор: jicoff
Дата сообщения: 31.07.2008 08:45
Подскажите, много ли придеться переделывать при переходе на 6 версию грида?
Автор: afiget
Дата сообщения: 31.07.2008 09:58
Granmer
Можно попробовать отключать скиновые пакеты у проекта.
jicoff
Смотря с какой. На сайте разработчиков есть даже апдейтер.
Автор: X11
Дата сообщения: 31.07.2008 10:16

Цитата:
Можно попробовать отключать скиновые пакеты у проекта.

Ага, а на другом компе эти пакеты потом будут требоваться при запуске программы? Ибо из Uses нет возможности убрать (
Автор: jicoff
Дата сообщения: 31.07.2008 10:23
afiget

С 5 на 6, но у меня проекты еще на декабрьской 2006 г. А апдейтер хоть нормально работает?
Автор: afiget
Дата сообщения: 31.07.2008 11:03
jicoff
http://www.devexpress.com/issue=CQ31225
Автор: korobovmax
Дата сообщения: 31.07.2008 11:03
jicoff
В 6 введены только новые фичи, координальных изменений в структуре компонентов нету. Поэтому, наиболее вероятно, что ничего менять не надо. Однако, если вы писали свои компоненты-наследники компонентов cx/dx-библиотек, настоятельно рекомендую внимательно проверить их.
Про апдейтер ничего не знаю.

Добавлено:
afiget
угу, так и есть.
Автор: sldaac
Дата сообщения: 31.07.2008 17:18
Может кто сталкивался,
Выделил часть текста в ячейке Вьюши ( использ. cxGrid1DBTableView1) затем клик на заголовке для создания фильтра, выбираю Выбор , появляется диалоговое окно создания фильтра. В этом окне уже введен выделеный текст в Вьюшке.
Хочу повторить на х37 версии не получается, может где настройки не так сделал, подскажите.
Автор: shulum
Дата сообщения: 31.07.2008 17:31
jicoff

я когда переходил (правда давно это было ), помню точно затронулся экспорт в Excel
а остальное осалось как есть

был приятно удивлен ....
Автор: zver
Дата сообщения: 31.07.2008 18:32
Как в C++Builder вызвать стандартный отрисовщик Заголовка на onCustomDrawColumnHeader

В Delphi это делается так
Sender.Painter.LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds,
Neighbors, Borders, ButtonState, taLeftJustify, vaTop, False, False, Column.Caption, ACanvas.Font, clNone, Color);


А в С++ Builder-e
Sender->Painter->LookAndFeelPainter->
...пишет, что LookAndFeelPainter это TMetaClass и методов у него естесственно нет???
Автор: afiget
Дата сообщения: 31.07.2008 19:12
sldaac

Цитата:
х37

Что за версия такая?



Добавлено:
zver
А если делать через аналог TcxGridDBTableView(Sender).ViewInfo.HeaderViewInfo.Update ?

Или явно указать клас для Sender и Painter.
Автор: sldaac
Дата сообщения: 31.07.2008 19:23

Цитата:
Что за версия такая?

http://forum.ru-board.com/topic.cgi?forum=35&topic=38238&start=1900
Автор: afiget
Дата сообщения: 31.07.2008 21:55
У мну в 6.31 такого нет в том режиме, в котром использую.

А что если выключить OptionSelection.UnselectFucusedrecordOnExit и выключить мультиселект.
Автор: sldaac
Дата сообщения: 01.08.2008 00:48

Цитата:
А что если выключить OptionSelection.UnselectFucusedrecordOnExit и выключить мультиселект.


Спсб, это я уже пробовал, но на другой вариант мысль навел.
Как-бы теперь получить значение в выделеной ячейке, не полнное значение, я только часть данных (допустим половина слова, выделеного мышкой).
Автор: afiget
Дата сообщения: 01.08.2008 01:07

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

TcxCustomTextEdit.SelStart


Добавлено:
Рано отправилось. полностью сообщение выглядит так:


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

Сначала нужно добраться до редактора (например, через View.Controller.EditingController)
TcxCustomTextEdit.SelStart
TcxCustomTextEdit.SelText

В общем, копай TcxCustomTextEdit.
Автор: Ziltoid
Дата сообщения: 01.08.2008 02:52

Цитата:
А может есть какой-нибудь способ отключать всё-таки? А то очень не удобно, у меня есть два проекта один - со скинами (надо чтобы красиво было) и один без (надо, чтобы быстро работало, а лишь подключение скинов на медленных машинах существенно подтармаживает прорисовку).


Я тут несколько страниц назад писал, что озаботившись такой проблемой, смастерил ресурсную ДЛЛ, куда затолкал все девошные скины и теперь горя не знаю
Автор: jicoff
Дата сообщения: 01.08.2008 14:22
zver

К сожалению можно только так:

if(Sender->Painter->LookAndFeelPainter->ClassNameIs("TcxOffice11LookAndFeelPainter"))
TcxOffice11LookAndFeelPainter::DrawHeader(ACanvas, Bounds, ...);
else
if(Sender->Painter->LookAndFeelPainter->ClassNameIs(...)
...

и т.д.

Возможно получиться маленький модуль паскалевский в проект включить, чтобы не делать кучу IF'ов.
Автор: sldaac
Дата сообщения: 01.08.2008 22:37

Цитата:
Сначала нужно добраться до редактора (например, через View.Controller.EditingController)
TcxCustomTextEdit.SelStart
TcxCustomTextEdit.SelText

В общем, копай TcxCustomTextEdit.


Копаю, но что-то плохо копается
var XXX :String;
View: TcxGridDBTableView;
SelectedValue: variant;
begin
View := GGRid.ActiveView as TcxGridDBTableView;
SelectedValue := View.DataController.Values[View.DataController.FocusedRecordIndex,View.Controller.FocusedColumnIndex ];
ShowMessage(VarAsType(SelectedValue, VarString));

XXX:= TcxTextEdit(View.Controller.EditingController.Edit).SelText;

компилиться, но на последней строчке, выскакивает ошибка. Где собака порылась?

Автор: afiget
Дата сообщения: 02.08.2008 14:20

Цитата:
компилиться, но на последней строчке, выскакивает ошибка

ошибку можно самому придумать?
Автор: sldaac
Дата сообщения: 02.08.2008 15:24

Цитата:
ошибку можно самому придумать?

Сча, я че писатель, при запуске приложения на этой строчке ошибка вылетает
Access Violation at adress ..... Read of adress

вот тако вот, если есть что по существу подсказать, спсб, а влудить ненадо.
Автор: korobovmax
Дата сообщения: 02.08.2008 16:04
sldaac
Скорей всего, в такой конструкции у кого-то уже память отчищена, либо он является экземляром другого класса (соответственно, с другим размером).

Надо на этой сточке поставить бряк и посмотреть в Evaluate/Modify, не равно ли View Null'у, не равно ли View.Controller Null'у и так далее. Надо проверить, что TcxTextEdit(View.Controller.EditingController.Edit) в Evaluate/Modify не показывает AV.

Скорей всего, надо давать другой объект для приведения к желаемому типу.

Добавлено:
Вариант (просто придумал только что, не тестил):
TcxTextEdit(View.Controller.Columns[View.Controller.FocusedColumnIndex]).SelText;

Так как не проверил, может каких-то свойств/объектов и не быть. Важна идея
Автор: sldaac
Дата сообщения: 02.08.2008 17:13

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

Надо на этой сточке поставить бряк и посмотреть в Evaluate/Modify, не равно ли View Null'у, не равно ли View.Controller Null'у и так далее. Надо проверить, что TcxTextEdit(View.Controller.EditingController.Edit) в Evaluate/Modify не показывает AV.


cxGrid1DBTableView1.Controller.EditingController.edit =nil

View.Columns[View.Controller.FocusedColumnIndex].Selected говорит False

хотя на офиц сайте
with cxGrid1DBTableView1 do
if DataController.GetItemByFieldName('MYFIELD').Editing then
begin
if TcxTextEdit(Controller.EditingController.Edit).SelLength > 0 then
Caption := TcxTextEdit(Controller.EditingController.Edit).SelText
end
else
Caption := Controller.FocusedRecord.Values[DataController.GetItemByFieldName('MYFIELD').Index
Автор: isz
Дата сообщения: 02.08.2008 17:51
Подскажите как в tcxlabel сделать градиент. Я пробую через cxEditStyleController1, но ничего не получается.
Автор: Dennica
Дата сообщения: 03.08.2008 05:14
isz
Градиент сделать нельзя (во всяком случае штатными средствами). Можно только или однотонный фон либо прозрачный.
Автор: afiget
Дата сообщения: 03.08.2008 09:49
sldaac
А в какой момент (в каком обработчике) ты этот код выполняешь?
Например, грид находится в фокусе?
Автор: sldaac
Дата сообщения: 03.08.2008 12:37

Цитата:
А в какой момент (в каком обработчике) ты этот код выполняешь?
Например, грид находится в фокусе?


cxGrid1DBTableView1CanSelectRecord нет обработки, вернее возвращает пустое значение
cxGrid1DBTableView1FocusedRecordChanged ошибка

была попытка вообще вынести обработку под отдельную кнопку
не нашел в хелпе нигде пояснения,
если к простому TcxTextEdit обратиться, не проблема, все работает
Задача выделить и веделеную информацию поместить хоть в тот-же TextEdit
Автор: afiget
Дата сообщения: 03.08.2008 15:08
sldaac
1. Ты не проверяешь Editing перед тем как получить TcxTextEdit(View.Controller.EditingController.Edit).SelText. Скорее всего, на момент обработки inline-editor уже спрятан (или даже разрушен). Вот и валится ошибка.
2. Отсюда вывод: нужно получить SelText непосредственно до того как фокус переходит на другой элемент. Как это сделать, зависит от твоего кода. Ты предоставил только обрывки, по которым лично у меня больше вопросов, чем ответов.

Можно, например, в TcxCustomGridTableView.OnInitEditValue установить флаг, который включает обработчик нажатия клавиш, например в View.OnKeyPress, в котором ты отслеживаешь выделен ли текст. Если выделен, то куда то его запоминаешь.
При смене фокуса (которую может вызвать клик по заголовку грида), ты уже имеешь в кармане текст, который был выделен в редакторе. Естественно, при смене фокуса, флаг слежения сбрасываешь.

Впрочем, можно и тупо анализировать View.OnKeyPress, если Editing=true
Автор: sldaac
Дата сообщения: 03.08.2008 17:06

Цитата:
Ты не проверяешь Editing перед тем как получить TcxTextEdit(View.Controller.EditingController.Edit).SelText. Скорее всего, на момент обработки inline-editor уже спрятан


Много вариантов перепробовал, Вот в cxGrid1DBTableView1EditKeyDown самое простое
if key=13 then caption :=TcxTextEdit(cxGrid1DBTableView1.Controller.EditingController.Edit).SelText;

работает без проблем,
но мне то надо по смене (потере) форуса получить выделеный текс. Я уже не стал вставлять код проверки Editing, смотрю только в трисировке результат.
Пока самое близкое из обработчиков cxGrid1DBTableView1ColumnHeaderClick, ну а здесь уже обработка что и в какой колонке выделено

Спсб за участие.
Автор: sldaac
Дата сообщения: 04.08.2008 01:26
Может кто подскажет как зафиксировать колонку в cxGrid1DBTableView1, надо что-бы первая колонка всегда была видна, независимо от горизонтального скролинга. Пытался сделать рядом колонку с проперти SpinEdit, не получается.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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