Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress 2

Модерирует : ShIvADeSt

ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DevExpress

Обмен опытом, обсуждение нюансов и решение проблем возникающих при использовании библиотеки компонент Developer Express




 
Сами прирученные компоненты частенько приходят на водопой сюда
 
DLL со скинами из библиотеки dxSkins, автор Ziltoid Подробнее... линк обновлен
Продолжение, начало тут
 

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:16 29-01-2007 | Исправлено: VitaliM, 15:47 24-11-2008
zver

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как в 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 и методов у него естесственно нет???

Всего записей: 66 | Зарегистр. 07-06-2004 | Отправлено: 19:32 31-07-2008 | Исправлено: zver, 19:32 31-07-2008
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sldaac

Цитата:
х37

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

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 20:12 31-07-2008
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

http://forum.ru-board.com/topic.cgi?forum=35&topic=38238&start=1900

Всего записей: 757 | Зарегистр. 15-06-2005 | Отправлено: 20:23 31-07-2008
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У мну в 6.31 такого нет в том режиме, в котром использую.
 
А что если выключить OptionSelection.UnselectFucusedrecordOnExit и выключить мультиселект.

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 22:55 31-07-2008
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

Всего записей: 757 | Зарегистр. 15-06-2005 | Отправлено: 01:48 01-08-2008
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

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

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

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 02:07 01-08-2008
Ziltoid

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

 
Я тут несколько страниц назад писал, что озаботившись такой проблемой, смастерил ресурсную ДЛЛ, куда затолкал все девошные скины и теперь горя не знаю

Всего записей: 24 | Зарегистр. 30-05-2008 | Отправлено: 03:52 01-08-2008
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zver
 
К сожалению можно только так:
 
  if(Sender->Painter->LookAndFeelPainter->ClassNameIs("TcxOffice11LookAndFeelPainter"))
    TcxOffice11LookAndFeelPainter::DrawHeader(ACanvas, Bounds, ...);
  else
  if(Sender->Painter->LookAndFeelPainter->ClassNameIs(...)
    ...
 
и т.д.
 
Возможно получиться маленький модуль паскалевский в проект включить, чтобы не делать кучу IF'ов.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 15:22 01-08-2008
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Сначала нужно добраться до редактора (например, через 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;
 
компилиться, но на последней  строчке, выскакивает ошибка. Где собака порылась?
 

Всего записей: 757 | Зарегистр. 15-06-2005 | Отправлено: 23:37 01-08-2008
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 15:20 02-08-2008
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

Всего записей: 757 | Зарегистр. 15-06-2005 | Отправлено: 16:24 02-08-2008
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
sldaac
Скорей всего, в такой конструкции у кого-то уже память отчищена, либо он является экземляром другого класса (соответственно, с другим размером).
 
Надо на этой сточке поставить бряк и посмотреть в Evaluate/Modify, не равно ли View Null'у, не равно ли View.Controller Null'у и так далее. Надо проверить, что TcxTextEdit(View.Controller.EditingController.Edit) в Evaluate/Modify не показывает AV.
 
Скорей всего, надо давать другой объект для приведения к желаемому типу.
 
Добавлено:
Вариант (просто придумал только что, не тестил):
TcxTextEdit(View.Controller.Columns[View.Controller.FocusedColumnIndex]).SelText;
 
Так как не проверил, может каких-то свойств/объектов и не быть. Важна идея

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 17:04 02-08-2008
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

Всего записей: 757 | Зарегистр. 15-06-2005 | Отправлено: 18:13 02-08-2008 | Исправлено: sldaac, 01:59 03-08-2008
isz

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как в tcxlabel сделать градиент. Я пробую через cxEditStyleController1, но ничего не получается.

Всего записей: 2 | Зарегистр. 07-07-2008 | Отправлено: 18:51 02-08-2008
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
isz
Градиент сделать нельзя (во всяком случае штатными средствами). Можно только или однотонный фон либо прозрачный.

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 06:14 03-08-2008 | Исправлено: Dennica, 06:15 03-08-2008
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sldaac
А в какой момент (в каком обработчике) ты этот код выполняешь?
Например, грид находится в фокусе?

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 10:49 03-08-2008
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

 
cxGrid1DBTableView1CanSelectRecord нет обработки,  вернее возвращает пустое значение
cxGrid1DBTableView1FocusedRecordChanged ошибка
 
была попытка вообще вынести обработку под отдельную кнопку
не нашел в хелпе нигде пояснения,  
если к простому TcxTextEdit обратиться, не проблема, все работает
Задача  выделить и веделеную информацию поместить хоть в тот-же TextEdit

Всего записей: 757 | Зарегистр. 15-06-2005 | Отправлено: 13:37 03-08-2008
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sldaac
1. Ты не проверяешь Editing перед тем как получить TcxTextEdit(View.Controller.EditingController.Edit).SelText. Скорее всего, на момент обработки inline-editor уже спрятан (или даже разрушен). Вот и валится ошибка.
2. Отсюда вывод: нужно получить SelText непосредственно до того как фокус переходит на другой элемент. Как это сделать, зависит от твоего кода. Ты предоставил только обрывки, по которым лично у меня больше вопросов, чем ответов.
 
Можно, например, в TcxCustomGridTableView.OnInitEditValue установить флаг, который включает обработчик нажатия клавиш, например в View.OnKeyPress, в котором ты отслеживаешь выделен ли текст. Если выделен, то куда то его запоминаешь.
При смене фокуса (которую может вызвать клик по заголовку грида), ты уже имеешь в кармане текст, который был выделен в редакторе. Естественно, при смене фокуса, флаг слежения сбрасываешь.
 
Впрочем, можно и тупо анализировать View.OnKeyPress, если Editing=true

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 16:08 03-08-2008
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

 
Много вариантов перепробовал,  Вот в cxGrid1DBTableView1EditKeyDown самое простое
if key=13 then caption :=TcxTextEdit(cxGrid1DBTableView1.Controller.EditingController.Edit).SelText;
 
работает  без проблем,  
но мне то надо по смене (потере) форуса  получить выделеный текс. Я уже не стал вставлять код проверки Editing, смотрю только в трисировке результат.
Пока  самое близкое из обработчиков cxGrid1DBTableView1ColumnHeaderClick, ну а здесь уже обработка что и в какой  колонке выделено
 
Спсб за участие.

Всего записей: 757 | Зарегистр. 15-06-2005 | Отправлено: 18:06 03-08-2008 | Исправлено: sldaac, 18:16 03-08-2008
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто подскажет как зафиксировать колонку в cxGrid1DBTableView1, надо  что-бы первая колонка всегда была видна, независимо от горизонтального скролинга. Пытался сделать рядом колонку с проперти SpinEdit,  не получается.

Всего записей: 757 | Зарегистр. 15-06-2005 | Отправлено: 02:26 04-08-2008
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress 2
ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru