Форум: "Начинающим";
Текущий архив: 2011.01.02;
Скачать: [xml.tar.bz2];
ВнизPageControl и onShow Найти похожие ветки
← →
faiwer © (2010-10-06 19:19) [0]Доброго времени суток. Обнаружил досадный баг в TPageControl, адекватное решение которому я так и не нашёл.
Тестовый вариант: на форме TPageControl с X вкладками. Всем вкладкам назначен обработчик события Show следующего вида:procedure TMainF.TabSheet1Show(Sender: TObject);
begin
Button.Parent:=TWinControl(Sender); // кнопка для примера
end;
При загрузке формы назначается активная вкладка:procedure TMainF.FormCreate(Sender: TObject);
begin
PageControl.ActivePageIndex:=1; // 1 для примера
end;
Проверял поэтапно - Parent меняется, свойства Visible вкладки и компонентов равны true, но они (в примере - кнопка) не отображаются после загрузки формы, только если покликать после загрузки.
Нашёл недо-решение:procedure TMainF.FormCreate(Sender: TObject);
begin
Button1.parent:=PageControl.Pages[1];
PageControl.ActivePageIndex:=1; // 1 для примера
end;
Но это решение меня не устраивает, так как оно не действует на TAdvStringGrid... Остаётся разве что таймером грузить, но хотелось бы более валидный код.
P.S. D2010, W7
← →
faiwer © (2010-10-06 21:55) [1]Ещё 1 особенность. Если перемещаемые компоненты изначально находятся просто на форме, то выскакивает некая "List index out of bounds (1)". Стоит поместить их на какую нибудь левую панельку, как грузится всё без ошибок, но также не отображается... бред какой то.
← →
Anatoly Podgoretsky © (2010-10-06 22:00) [2]> faiwer (06.10.2010 21:55:01) [1]
У тебя ошибка в программе.
← →
faiwer © (2010-10-06 22:07) [3]
> У тебя ошибка в программе.
Ошибка в двух строчках?procedure TForm1.FormCreate(Sender: TObject);
begin
pagecontrol1.ActivePage:=TabSheet2;
end;
procedure TForm1.TabSheet1Show(Sender: TObject);
begin
Button1.Parent:=TWinControl(sender);
end;
Пересоздал проект, две строчки кода, 2 компоненты - PageControl и Button, в PageControl-е две вкладки. На первой кнопка... где ошибка?) Вот сам тестовый проект (6 КБ) http://faiwer.ru/temp/test_pagecontrol.rar
← →
Leonid Troyanovsky © (2010-10-06 22:25) [4]
> faiwer © (06.10.10 22:07) [3]
> Ошибка в двух строчках?
М.б., в двух строках - две ошибки?
--
Regards, LVT.
← →
faiwer © (2010-10-06 22:29) [5]
> М.б., в двух строках - две ошибки?
Чудесно ) Вы бы мне их ещё назвали, а то "моя не понимать", в чём не дело )
Пока решил дело так:procedure TForm1.TabSheet1Show(Sender: TObject);
begin
Button1.parent:=self;
Button1.Parent:=TWinControl(sender);
end;
Идиотское решение, но работает
← →
Leonid Troyanovsky © (2010-10-06 22:44) [6]
> faiwer © (06.10.10 22:29) [5]
> Чудесно ) Вы бы мне их ещё назвали, а то "моя не понимать"
Ну, да.
И в одной строке могут быть две ошибки.
--
Regards, LVT.
← →
faiwer © (2010-10-06 22:46) [7]Я конечно понимаю, что это delphimaster.ru, но можно всё же по существу? :)
← →
И. Павел © (2010-10-07 07:57) [8]> [0] faiwer © (06.10.10 19:19)
Можеь поможет Panel, растянутая на всю вкладку?
В качестве parent будет фигурировать уже она.
D2010 у меня нет, но на Delphi 7 это помогало с TabedNotebook, правда проблема там была другая.
Еще проверьте в TabSheet1Show, действительно ли Sender - то, что вам нужно: (Sender AS T...Sheet)
А так: если это действительно глюк - напишите в embarcodero и ждите обновления.
← →
faiwer © (2010-10-07 11:03) [9]
> Можеь поможет Panel, растянутая на всю вкладку?
> В качестве parent будет фигурировать уже она.
Такого рода решение я уже нашёл ) Дважды заменить Parent в событии OnShow:procedure TForm1.TabSheet1Show(Sender: TObject);
begin
Button1.parent:=self;
Button1.Parent:=TWinControl(sender);
end;
> Еще проверьте в TabSheet1Show, действительно ли Sender -
> то, что вам нужно: (Sender AS T...Sheet)
Проверял, в Sender то, что мне нужно.
> А так: если это действительно глюк - напишите в embarcodero
> и ждите обновления.
Спс, я тоже думаю, что глюк, отпишу
← →
_Юрий (2010-10-07 19:30) [10]TTabSheet.OnShow Event
Occurs when the TabVisible property changes to true.
Description
Write an OnShow event handler to take specific action when the tab sheet appears in its page control after being temporarily hidden.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.01.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c