Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2015, 04:19   #1
ProRockX
Пользователь
 
Аватар для ProRockX
 
Регистрация: 26.09.2015
Сообщений: 12
Вопрос Нужен аналог BeginUpdate и EndUpdate для TPageControl

Доброй ночи, форумчане!

Пишу проект на 7 Delphi. На форме есть TPageControl с 3 вкладками, его Align=alClient. На первой странице имеется грид (dbGridEh), в котором можно выделить несколько записей, и они откроются на второй вкладке. На ней, в свою очередь, тоже имеется TPageControl, и для каждой открытой записи динамически формируется страница.

В общем, когда я изначально сделал это, у меня при выделении многих записей происходило мелькание между страницами первого TPageControl, т.е. после открытия на второй странице объекта, открывалась опять первая, происходил переход на следующую запись датасета грида, и снова открывалась 2 вкладка. И так много раз.

Мелькание это смотрится ужасно, и было бы замечательно, если бы у TPageControl был бы метод BeginUpdate и EndUpdate. Чтоб на время скакания по страницам раморозить TPageControl.

Подскажите, что можно сделать в этой ситуации?
ProRockX вне форума Ответить с цитированием
Старый 26.09.2015, 07:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
при выделении многих записей происходило мелькание между страницами
Правильно )
И мифические BeginUpdate и EndUpdate тебя не спасут, потому что нет физичеки механизма определения закончил ты выделение или нет.
Рекомендую следующее: Прилепить кнопульку, которая по нажатию будет активировать новую страницу, и формировать по выделенному из грида новый контент.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.09.2015, 18:35   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Нужен аналог BeginUpdate и EndUpdate для TPageControl
у меня лет стопицот назад тоже возникла эта проблема. мой потомок TPageControl сильно глючил, моргал и тормозил при закрытии нескольких вкладок. Проблему решил так:
Код:
procedure TEditorPageControl.BeginUpdate;
begin
  // Запрет перерисовки
  Self.Perform(WM_SETREDRAW, 0, 0);
end;

procedure TEditorPageControl.EndUpdate;
begin
  // Разрешение перерисовки
  Self.Perform(WM_SETREDRAW, 1, 0);
end;
если нужно, могу выкласть весь модуль.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 26.09.2015, 19:02   #4
ProRockX
Пользователь
 
Аватар для ProRockX
 
Регистрация: 26.09.2015
Сообщений: 12
По умолчанию

Всем большое спасибо, проблему решил правкой логики открытия объектов.
Дело в том, что у меня изначально (пока не было мультиселекта) была 1 процедура, которая и отвечала за редактирование объекта, в конце её как раз и был переход на новую вкладку.

Когда я подключил мультиселект, появилась вторая процедура, которая в цикле для всех выделенных записей грида вызывает первую. И тут мне нужно было бы просто перенести строку с переходом на вкладку для редактирования из старой процедуры в новую, чтоб она не запускалась для каждого выделенного объекта, а только в самом конце, когда все они уже обработаются. А я начал изобретать какие-то костыли и, вставив в начало новой процедуры возврат на первую вкладку ужаснулся мельканию вкладок.

Всё, тема закрыта.
ProRockX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BeginUpdate HTTqp Компоненты Delphi 8 02.05.2014 10:35
Нужен прокси, аналог UserGate Utkin Софт 0 22.12.2012 08:40
Нужен компонент, аналог TChart Мрак Мультимедиа в Delphi 0 19.12.2010 18:51
нужен аналог строковых функций DOS Общие вопросы C/C++ 4 05.01.2008 00:05