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

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

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

ShIvADeSt (29-01-2007 03:17): идем сюда
http://forum.ru-board.com/topic.cgi?forum=33&topic=7918
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

golkanavt



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

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




 
Сами прирученные компоненты частенько приходят на водопой сюда

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 10:42 08-10-2003 | Исправлено: golkanavt, 15:41 08-09-2006
Alex47



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

Цитата:
 Как добиться, чтобы cxGrid (4.5.2) пропускал на форму нажатие Tab  

 
1. Добавить на форму FormX такой message handler:  
 
 // form declaration, private секция:
 
   procedure CMDialogKey(Var Msg: TWMKey); message CM_DIALOGKEY;
 
 // раздел implementation:
 
   procedure TFormX.CMDialogKey(Var Msg: TWMKEY);
    begin
      If (Msg.Charcode = VK_TAB) then
       begin
            ...что-то делать;
             msg.result := 1;
             Exit;
       end;
      inherited;
    end;
2. KeyPreview Формы = True
 

Цитата:
cxGrid.Focused  той же версии всегда False.  

 
Для установки фокуса на Grid использую
  cxGrid1.SetFocus; - исправно работает во всех версиях, начиная с 4.0.
 
 

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 11:01 04-04-2005 | Исправлено: Alex47, 11:06 04-04-2005
AndreyGuzov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет, Всем.
Вот такой вопрос:
Есть cxGrid (версия 5.3) c двумя уровнями Master -> Detail к гриду прицеплен TdxBarPopupMenu (Bars версия 5)
если выделить запись в Detail уровне и именно из PoppupMenu вызвать  
метод Refresh датасета Master-уровня то далее в обработчике оконных сообщений  
получаем AV либо Abstrac Error. Проблема именно в том что ф-ция вызывается  
из PopupMenu Я конечно понимаю что дочерний уровень это просто клон и он разрушается после обновления мастер - уровня.  Если вызывается этаже ф-ция по кнопке из пенели то всё нормально работает  
пробовал ставить                
btn->UnclickAfterDoing=false;  
Есть какие - нить мысли ?  
С наилучшими пожеланиями  
                                     Андрей

Всего записей: 5 | Зарегистр. 02-08-2004 | Отправлено: 15:44 04-04-2005
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndreyGuzov
1. А если попробовать не напрямую из PoppupMenu вызывать  
Refresh датасета, а через PostMessage...  
 
2. А нужен ли такой Refresh(через PoppupMenu)?

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 16:42 04-04-2005 | Исправлено: Alex47, 17:27 04-04-2005
AndreyGuzov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
>>1. А если попробовать не напрямую из PoppupMenu вызывать  
>>Refresh датасета, а через PostMessage...  
 
Не понял что значит через PostMessage кому и чего отправить мне то данные просто  
нужно обновить.
 
>>2. А нужен ли такой Refresh(через PoppupMenu)?  
>>Нужен так как в Master уровне поля которые считаются на стороне сервера  
 
и зависят того что в Detail т.е. на самом деле обработчик не только efresh но AV именно из - за Refresh т.е. если в обратчике оставить только Refresh то результат тот же.

Всего записей: 5 | Зарегистр. 02-08-2004 | Отправлено: 17:33 04-04-2005
Dimonka



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndreyGuzov
Твоя проблема в том, что меню вызывается обработчиком событий в классе строки в гриде.  
Т.е. последовательность получается такая:
- кликаешь по строке правой кнопкой
- из обработчика строки вызывается меню
- из меню вызывается рефреш
- грид уничтожает старые обьекты строк и создаёт новые (твой старый обьект строки уничтожен)
- после этого выполнение пытаются передать назад в обьект строки, который был только что успешно уничтожен
 
Варианты: вызывать меню через PostMessage или вызывать Refresh через PostMessage

Всего записей: 398 | Зарегистр. 03-01-2002 | Отправлено: 17:41 04-04-2005
AndreyGuzov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В смысле Refresh из Popup нужен потому что узерю лень в верхнюю панель мыша двигать. На обработчике ShortCut есть если давить ShortCut всё путём что - то именно с  
отображением PopupMenu после того как из обрабочика выходишь то подает в обработчике оконных собщений View.
 
Добавлено:
Dimonka

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

Не понял почему из обработчика строки а не View ?
То что разрушается Detail View (потому как он просто клон) я понимаю.
Я пробовал перед DataSet->Refresh ставить Application->ProcessMessages
это не помогает он просто тытается послать MouseUp по идеи или просто WM_PAIN но какого фига я не понимаю ... но нету же объекта по идеи не кому и слать стаким же успехом если я скажу какому - нить контролу ->Free а у него было что - то в очереди то тоже всё должно упасть. Думаю что дело не в этом в OnCellDbl click есть Handled флажок его true ставишь и всё нормально работает. И что то я не понял как послать (PostMessage) сообщение датасету? Или слать самому View и что именно слать ?

Всего записей: 5 | Зарегистр. 02-08-2004 | Отправлено: 17:42 04-04-2005
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndreyGuzov
 
Попробуй вставить в код следующее, (ниже схема - куда и что вставлять):
interface
 
uses
....
const
  CM_REFRESHHEADERS = WM_USER + 1111;
...
type
  TFormXXX = class(TForm) // это твоя форма
....
private
   procedure CMRefreshHeaders(var Msg: TMessage); message CM_REFRESHHEADERS;
...
implementation
...
procedure TFormXXX.CMRefreshHeaders(var Msg: TMessage);
begin
 dataset.refresh; // это refresh твоего dataset
end;
 
А в то место, где у тебя был refresh поставь:
PostMessage(Handle,CM_RefreshHeaders, 0, 0);

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 18:25 04-04-2005
klod_new

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

Цитата:
Цитата:cxGrid.Focused  той же версии всегда False.  
 
 
Для установки фокуса на Grid использую  
  cxGrid1.SetFocus; - исправно работает во всех версиях, начиная с 4.0.

 
Да  с SetFocus все нормально. А вот свойство у Грида Focused всегда False... А с первым ответом, спасибо... Если очень припрет - прокатит...

Всего записей: 73 | Зарегистр. 23-01-2005 | Отправлено: 23:59 04-04-2005
Alex47



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

Цитата:
Да  с SetFocus все нормально.

 
Проверка фокуса на гриде (может пригодится):
   
   cxGrid.isFocused

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 09:01 05-04-2005
AndreyGuzov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex47
Я считаю что этот код ни чего не даст, так как я писал что я перед DataSet.Refresh
Ставил Application.ProcessMessages; Т.е. на момент выполнения Refresh очередь сообщений пуста. Если я поставлю вместо Refresh PostMessage то это сообщение окажется первым в очереди и соответственно будет первым обрабатываться.
Т.е. я не вижу разницы в последовательности выполнения. Вариант очень кривой конечно это таймер.

Всего записей: 5 | Зарегистр. 02-08-2004 | Отправлено: 09:02 05-04-2005
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndreyGuzov
Возможно ты и прав. Но по опыту знаю, что иногда для результата важно не только состояние очереди, но и то место - где стоит конкретный код (в данном случае refresh).
Поэтому - попробуй, это не займет много врнмени. Если не получится, то можно будет посмотреть другие варианты.

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 09:13 05-04-2005 | Исправлено: Alex47, 23:16 09-04-2005
AndreyGuzov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex47
Вроде заработало спасибо хотя я не понимаю от чего

Всего записей: 5 | Зарегистр. 02-08-2004 | Отправлено: 10:28 05-04-2005
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndreyGuzov
 
Есть еще варианты на попробовать:
 
1. View.DataController.RefreshExternalData;
Имеется в виду View твоего Master
 
2. У View.DataController есть свойство SmartRefresh.
   Попробуй менять его (True/False). Меняется в DesignTime.  

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 11:20 05-04-2005
VKab



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос по XtraVerticalGrid
Как при изменении размера VerticalGrid (LayotStyle: SingleRecordView) определить ширину заголовка (HeaderRow) и записи (RecordRow)? Проблема в том, что свойства RowHeaderWidth и RecordWidth обновляются только при ручном изменении ширины заголовка и записи, и события RecordWidthChanged при изменении размера VerticalGrid не возникает
Где-то меня клинит...

Всего записей: 37 | Зарегистр. 17-02-2003 | Отправлено: 14:09 08-04-2005
Alex1978

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ExpressScript Engine, Innerfuse Pascal Script  
кто-нибудь знает что это такое, для чего и т.д.

Всего записей: 306 | Зарегистр. 27-02-2003 | Отправлено: 14:13 12-04-2005
EZH



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex1978
Позволяет вставлять в твои проги маленькие скрипт-интерпретаторы. В основном годится для пользовательских расчетов, можно использовать переменные, на выходе получаешь реальный результат расчёта по выражениям, написанным пользователем в твоей программе.

Всего записей: 1738 | Зарегистр. 02-09-2004 | Отправлено: 23:23 12-04-2005
AnGo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги!
 
Спрашивал в других местах-молчат, как партизаны!
Поэтому спрошу здесь.
Имеется StringGrid, в нее вставлены узлы (nodes), что-то никак не могу въехать-как удалить выбранный узел (selected node)
Желателен кусок кода. Со справки недоходит.
Код на любом языке.

Всего записей: 1078 | Зарегистр. 07-07-2002 | Отправлено: 17:18 13-04-2005
golkanavt



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

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 12:31 14-04-2005
AnGo



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

Цитата:
о каком стринггриде речь??

 
AdvStringGrid от Девок.
 
Сорри, думал из контекста топика понятно.

Всего записей: 1078 | Зарегистр. 07-07-2002 | Отправлено: 16:06 14-04-2005
DipCyti

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У когота есть руский dxPSRes.pas от DevExpress Printing System v3.2.2

Всего записей: 2 | Зарегистр. 10-02-2005 | Отправлено: 16:45 14-04-2005
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress
ShIvADeSt (29-01-2007 03:17): идем сюда
http://forum.ru-board.com/topic.cgi?forum=33&topic=7918


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru