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

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

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

ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

golkanavt



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

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




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

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 10:31 07-02-2009 | Исправлено: vladman, 14:36 24-10-2009
Radio_Kat

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volser, при попытке в новигаторе нажать "+"  
первый раз нажимается но нечего не происходит
второй раз: Exception EAccessViolation in module ... at 001D19EC
 
если обнулить DataSource дерева, то инсерт в грид проходит без ошибок

Код:
 
  if RadioButton1.Checked then
  begin
    dbtr_spr_mat_.DataController.DataSource := ds_spr_mat;
    cxGrid1DBTableView1.DataController.DataSource := nil;
  end
  else
  begin
    dbtr_spr_mat_.DataController.DataSource := nil;
    cxGrid1DBTableView1.DataController.DataSource := ds_spr_mat;
  end
 

Всего записей: 26 | Зарегистр. 02-06-2006 | Отправлено: 12:34 22-09-2009
vladman

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

Цитата:
пример проекта вот тут  

Выложите скрипт вашей БД, а не сам файл. Или сделайте перемещаемый бекап базы.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 14:29 22-09-2009
Radio_Kat

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman: скрипт БД

Код:
 
 
CREATE GENERATOR GEN_SPR_MAT_ID;
 
CREATE TABLE SPR_MAT (
    ID_MAT    INTEGER DEFAULT 0,
    NAME      VARCHAR(50),
    ID_UPPER  INTEGER
);
 
 
ALTER TABLE SPR_MAT ADD CONSTRAINT UNQ1_SPR_MAT UNIQUE (ID_MAT);
 
/* Trigger: SPR_MAT_BI */
CREATE OR ALTER TRIGGER SPR_MAT_BI FOR SPR_MAT
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID_MAT IS NULL) THEN
    NEW.ID_MAT = GEN_ID(GEN_SPR_MAT_ID,1);
END;
 
 


Всего записей: 26 | Зарегистр. 02-06-2006 | Отправлено: 14:42 22-09-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Radio_Kat
К сожалению сейчас помочь не смогу. У  меня, на версии 5.45, ваш пример работает без ошибок.
 
Добавлено:
Скорее всего, действительно. проблема в версии DevExpress. Но по этому поводу нет никаких сообщений в их Support Center. Хотя, по логике вещей, должны были уже появится, если этот баг действительно присутствует в 46 версии.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 15:04 22-09-2009
Radio_Kat

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman, я написала в сапорт. если ответят напишу в чем было дело.

Всего записей: 26 | Зарегистр. 02-06-2006 | Отправлено: 05:55 23-09-2009
Postscriptum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Совсем ламерский вопрос - как узнать порядковый номер строки в девовском DBGride (именно в гриде, а не текущий RecNo от датасета). Чтоб можно было при перемещении по записям видеть текущий номер. Сделал на обработке TableAfterScroll так:

Код:
 
Stat1.Caption := ' Запись ' + IntToStr(GridDBTableView1.Controller.FocusedRowIndex) + ' из ' + IntToStr(GridDBTableView1.ViewData.RecordCount);
 

Почему-то GridDBTableView1.Controller.FocusedRowIndex не всегда правильный номер показывает.

Всего записей: 464 | Зарегистр. 31-01-2004 | Отправлено: 16:03 23-09-2009 | Исправлено: Postscriptum, 16:08 23-09-2009
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что значит не всегда правильный? Подробнее. Как это проявляется.

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 17:09 23-09-2009
vladman

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

Цитата:
как узнать порядковый номер строки в девовском DBGride

Разобраться в тонкостях реализации индексов строк/записей в Controller/DataController поможет отличная статья и пример к ней - Row/record index confusion
Для вашего случая используйте вместо Controller.FocusedRowIndex -> DataController.FocusedRowIndex
 
Добавлено:
Но! Если у вас возможны группировки в этом View, то нужны дополнительные обработки по вычислению порядкового номера записи, и, более того, этот номер будет зависеть от того как вы захотите нумеровать записи внутри группы: в каждой группе своя нумерация или сквозная нумерация по всем группам.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 17:11 23-09-2009
Postscriptum



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

Цитата:
Для вашего случая используйте вместо Controller.FocusedRowIndex -> DataController.FocusedRowIndex


Цитата:
Что значит не всегда правильный? Подробнее. Как это проявляется.

Та же песня. Ну вот если я кликаю мышкой на 1 записи - показывает "Запись 0 из 1115", курсором перемещаюсь на строку ниже (2 строка) - опять  "Запись 0 из 1115", опять курсором возвращаюсь на 1 строку - уже  "Запись 0 из 1115".  Если кликнуть, допустим, на 8 строку - пишет "Запись 6 из 1115". Курсором вверх - нормально - "Запись 7 из 1115", опять курсором вниз   -  "Запись 6 из 1115". Получается - что когда двигаешься курсором вниз - неправильно отображает, курсором вверх - правильно. Или это AfterScroll у Table так отрабатывает непонятно?

Всего записей: 464 | Зарегистр. 31-01-2004 | Отправлено: 18:13 23-09-2009
vladman

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

Цитата:
Или это AfterScroll у Table так отрабатывает непонятно?

Легко проверить. Поставьте ваш код в обработчик onFocusedRecordChanged вашего TableView

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 20:45 23-09-2009
Postscriptum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
Точно. Так верно отрабатывает. Спасибо

Всего записей: 464 | Зарегистр. 31-01-2004 | Отправлено: 01:31 24-09-2009
Chukotka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Создаю простейшее приложение: форма + DockingManager + DockSite.
 
У DockingManager'a установлены опции doTabContainerCanClose и doFreeOnClose;
 
В рантайме создаю DockPanel, вот текст процедуры:

Код:
 
const
  Id: integer = 0;
var
  Dck: TdxDockPanel;
begin
  Dck := TdxDockPanel.Create(Self);
  Dck.Name := Format('Name%d', [Id]);
  Dck.Caption := Format('Dock panel %d', [Id]);
  Inc(Id);
  Dck.MakeFloating;
end;
 

Запускаю прогу, создаю две панели, перетаскиваю одну на другую - формируется TabContainer в отдельной форме. И вот тут, если попытаться закрыть эту форму - вылетает ошибка "Index out of bounds". Вылетает здесь (dxDockControl.pas, строка 6599):

Код:
 
procedure TdxTabContainerDockSite.DoClose;
var
  I: Integer;
begin
  if (doTabContainerCanClose in ControllerOptions) then
  begin
    BeginUpdateLayout;
    try
      for I := ChildCount - 1 downto 0 do
      begin
        if Children[ I ].Visible then <--------- тут идет обращение при ChildCount = 0
           Children[ I ].DoClose;
 

 
Delphi 2007, DevX 42
Теперь вопрос: кто-то в курсе - в более поздних версиях девок это пофиксено? Больно неохота сейчас переустанавливать все, работа горит.
Или может кто сможет протестить это у себя на более поздних версиях девок - сообщите результат и номера версий Delphi & Devx, буду весьма признателен.

Всего записей: 428 | Зарегистр. 01-11-2006 | Отправлено: 05:32 24-09-2009 | Исправлено: Chukotka, 13:28 24-09-2009
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется TcxGridDBCardView  у него соотвествено TcxGridDBCardViewRow который представляет собой TcxTextEdit у него использую обработчик PropertiesEditValueChanged
Когда он вызывается я пытаюсь получить вот таким путем значение поля ...FieldByName('Fam').AsString но мне выдает старое значение еще доизменения. Подскажите как получить измененое значение

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 11:14 24-09-2009
f3ka

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

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 11:19 24-09-2009
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
 Не хотелось бы использовать ImmediatePost так он сразу пытается сделать post для таблицы а нужно оставаться в режиме edit  

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 11:33 24-09-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SIgor33
не совсем правильно... попробовать поставить ImmediatePost не у DataController'a, а у конкретного TcxTextEdit...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 11:42 24-09-2009
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
А я что-то не нашел TcxTextEdit свойства ImmediatePost поскажи где рыть

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 12:02 24-09-2009
Radio_Kat

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пожалуйста, отзовитесь у кого стоит FireBird 2.5 и  TcxDBTreeList 5.46  
 
support пишет что не могут повторить ошибку с AV на моем примере из  
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123&start=1520#20
 
хотя у меня она стабильно вылетает

Всего записей: 26 | Зарегистр. 02-06-2006 | Отправлено: 12:11 24-09-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Radio_Kat
А можно сслыку на ваш пост в суппорте, если не секрет, конечно.
Может дело в компонентах доступа к БД? FireBird 2.5 вторая бета еще по-моему.
 
Добавлено:
Chukotka

Цитата:
Создаю простейшее приложение: форма + DockingManager + DockSite.


Цитата:
формируется TabContainer в отдельной форме

Не понятно, одна форма или все же их две?
что в операторе Dck := TdxDockPanel.Create(Self); представляет собой Self? Та, отдельная, форма, или какая-то другая? Иными словами в какой форме у вас выполняется код создания DockPanel. Давайте код приложения которое у вас не работает, посмотрим что не так.
 
Добавлено:
SIgor33

Цитата:
Подскажите как получить измененое значение

Используйте вместо FieldByName('Fam').AsString оператор TcxCustomEdit(Sender).EditingValue

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 12:16 24-09-2009
Chukotka

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

Цитата:
Не понятно, одна форма или все же их две? Иными словами в какой форме у вас выполняется код создания DockPanel.
В приложении одна форма, она же главная.  

Цитата:
что в операторе Dck := TdxDockPanel.Create(Self); представляет собой Self? Та, отдельная, форма, или какая-то другая?
Self - указатель на главную форму. Доп. формы в рантайме образуются после вызова DockPanel.MakeFloating из приведенной в предыдущем посте процедуры.
Т.е. повторю еще раз: одна главная форма, в которой по клику на кнопке идет вызов процедуры с приведенным в предыдущем посте кодом. Формируются FloatForm, из которых вручную перетаскиванием мышкой формируем TabContainer. После этого при попытке закрыть форму с контейнером происходит ошибка.
Источник ошибки тоже указан в предыдущем посте (dxDockControl, процедура DoClose)

Всего записей: 428 | Зарегистр. 01-11-2006 | Отправлено: 13:26 24-09-2009 | Исправлено: Chukotka, 13:32 24-09-2009
   

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 3)
ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru