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

» MDITab на основе TcxTabControl

Автор: AvGSoft
Дата сообщения: 12.08.2010 11:35
Мерцание это прикол управления MDI окнами в Windows, есть решение но пока не получается с mditab'ом реализовать, пробывал на событие onmdichildactivate, эффект мерцания не уходит.
TAdvOfficeMDITabSet при создании мерцал - этот метод помогал перед созданием LockClientUpdate(), после UnLockClientUpdate(), а при переключении между вкладками мерцания не было.
Автор: regkz
Дата сообщения: 12.08.2010 11:48
ещё нашёл такой вот баг



при задержке нажатия на кнопку закрытия у TAdvOfficeMDITabSet при нескольких открытых окнах появляется меню настройки

Добавлено:

Цитата:
TAdvOfficeMDITabSet при создании мерцал - этот метод помогал перед созданием LockClientUpdate(), после UnLockClientUpdate(), а при переключении между вкладками мерцания не было.

действительно работает, спасибо за решение
Автор: Andryshok
Дата сообщения: 12.08.2010 15:11
Присоединяйтесь к тестам и улучшению
MDITab - компонент для управления MDI окнами со вкладок доделывал я работает только при установленных DevExpress , так как является наследником cxTabControl, для Delphi 2010 под другие версии не сделал т.к. ими не обладаю, при установке появляется на вкладке Express Utilites
ссылка хттп://www.onlinedisk.ru/file/493423/

Очень помог мне с этой темой Frodo_Torbins , ему отдельное спасибо

Пока открыты вопросы в MDITab
- устранение эффекта мерцания
- не получается на него навешать скины - возможно придется дописывать девовские скины и добавлять туда элементы
- нет обработчика события на нажатие кнопки закрыть на табе

Помогайте кто чем может и вместе создадим идеал



Добавлено:
Найду свободную минутку буду пробовать
Цитата:
есть решение но пока не получается с mditab'ом реализовать
, работы подволило много ..
Автор: AvGSoft
Дата сообщения: 12.08.2010 15:29

Цитата:
- не получается на него навешать скины - возможно придется дописывать девовские скины и добавлять туда элементы

У меня скины нормально отрабатывают

Добавлено:
В зависимости от выбранного скина и mditab раскраску меняет

Добавлено:
Вроде мерцание при переключении победил

Код: procedure TMDITab.Change;
var
AChild: TForm;
AParent: TForm;
begin
if TabIndex > -1 then
begin
AChild := TForm(FChilds[TabIndex]);
AParent := TForm(GetParentForm(Self)); // Ссылка на родительскую форму
if FCurrentChild <> AChild then
begin
//FCurrentChild := AChild;
//SendMessage(AChild.Handle, wm_NCActivate, wa_Active, 0);
SendMessage(AParent.ClientHandle, WM_SETREDRAW, 0, 0); // Запрет ее отрисовки
SendMessage(AChild.Handle, WM_CHILDACTIVATE, 0, 0);
//AChild.SetFocus;
//AChild.BringToFront;
if AChild.WindowState = wsMinimized then
begin
if FCurrentChild.WindowState = wsMaximized then
AChild.WindowState := wsMaximized
else
AChild.WindowState := wsNormal;
end;
SendMessage(AParent.ClientHandle, WM_SETREDRAW, 1, 0) ; // После перерисовываем родительскую форму
RedrawWindow(AParent.ClientHandle, nil, 0, RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN or RDW_NOINTERNALPAINT)
end;
end;
end;
Автор: AvGSoft
Дата сообщения: 12.08.2010 17:46
Пока пришел к промежуточному варианту при создании child окон делаем

Код:     LockClientUpdate();
    TfrmChild* frmC = new TfrmChild(this);
    UnLockClientUpdate();
Автор: Andryshok
Дата сообщения: 13.08.2010 07:22

Цитата:
Осталось только теперь при создании нового child окна

Братья, как только кто либо что улучшил - выкладывайте куда нибудь, чтоб другие могли нарабытывать на уже улучшенном коде
Автор: regkz
Дата сообщения: 13.08.2010 07:59
протестировал с изменениями AvGSoft, ищи причину того, что после закрытия всех вкладок, не создаются новые у себя, у меня на делфях всё работает нормально, вкладки создаются
Автор: AvGSoft
Дата сообщения: 13.08.2010 08:31
Если отключить свойство AutoAdd и в ручном режиме вкладки создавать при создании окна и удалять при закрытии окна эфект
Цитата:
при открытии нескольких дочерних окон, а потом их закрытием всех, при попытке открыть дочернее окно оно открывается но не появляется для него закладка,
не наблюдается.
Автор: regkz
Дата сообщения: 13.08.2010 08:46
вот ссылка проекта с изменениями AvGSoft
http://www.onlinedisk.ru/file/494729/

Добавлено:

Цитата:
Если отключить свойство AutoAdd и в ручном режиме вкладки создавать при создании окна и удалять при закрытии окна эффект не наблюдается.

вот в чём дело, я вручную вкладки добавлял, мой пример в архиве с компонентом лежит

Добавлено:
и, кстати, не появляется только первая вкладка, все остальные появляются, при их закрытии первая появляется после закрытия последней видимой вкладки
Автор: AvGSoft
Дата сообщения: 13.08.2010 09:40
regkz
она появляется и если все формы в normal режим перевести и переключиться на ту форму вкладки которой нет, она сразу появляется в общем надо в сторону AutoAdd будет посмотреть. Пока копать не когда.
Автор: regkz
Дата сообщения: 13.08.2010 09:49

Цитата:
надо в сторону AutoAdd будет посмотреть

как раз сейчас этим занимаюсь
Автор: Andryshok
Дата сообщения: 16.08.2010 07:25
Мужик, какие есть у кого соображения по поводу обработки события кнопки закрыть на табах?
Автор: regkz
Дата сообщения: 16.08.2010 10:07

Цитата:
какие есть у кого соображения по поводу обработки события кнопки закрыть на табах?

нужно делать что-то типа этого:

Код: procedure TMainForm.MDITab1CanClose(Sender: TObject; var ACanClose: Boolean);
begin
MDITab1.RemoveTab(MDITab1.ActiveChild);
end;
Автор: Andryshok
Дата сообщения: 17.08.2010 07:36
Так, так.... разгребу работу займусь... попробую ищо добавить и посылку сообщения о закрытии дочерней форме
Автор: regkz
Дата сообщения: 20.08.2010 09:44
тоже пока занят, но функцию закрытия вкладки добавил, скачать можно здесь
http://www.onlinedisk.ru/file/498933/
Автор: Andryshok
Дата сообщения: 24.08.2010 08:13

Цитата:
тоже пока занят, но функцию закрытия вкладки добавил, скачать можно здесь

Да, блин как только начинаешь что нибудь в своих интересах делать, обязательно нагрузят разной фигней
Автор: SIgor33
Дата сообщения: 25.08.2010 08:20

Цитата:
Да, блин как только начинаешь что нибудь в своих интересах делать, обязательно нагрузят разной фигней

Ты конечно извини то хочется как лучше. Чтобы с пользой для всех а то зачем было размещать здесь
Автор: regkz
Дата сообщения: 27.08.2010 06:06
любопытная ссылочка
http://64.237.51.139/blogs/thinking/archive/2010/08/16/vcl-tabbed-mdi-multiple-document-interface.aspx по теме
ждём нового релиза девок...
Автор: Andryshok
Дата сообщения: 27.08.2010 13:33
Да похоже на то..., в net эта фишка есть, видимо разрабы тож ходят на форум и возможно увидели наши телодвижения, ну и как говорится спрос рождает предложение, видимо не зря мы тут ж....пы напрягаем, им тоже не наплевать


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

Страницы: 1

Предыдущая тема: Настройка сканеров штрих-кода


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