Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
yemets63 Member Откуда: Самара Сообщений: 1387 |
динамически создаю PageControl, на нем несколько TabSheet, динамически перехожу на первый созданный TabSheet, вкладка переключается, а содержимое остается последней вкладки. что нужно обновить, чтобы актуализировать и отобразить содержимое выбранной динамически вкладки??? пробовал REFRESH и REPAINT для PageControl, для динамически выбранного TabSheet, содержимое всзуально все равно остается последней вкладки. потом мышкой всё работает нормально. |
22 фев 21, 05:44 [22284624] Ответить | Цитировать Сообщить модератору |
ъъъъъ Member Откуда: Сообщений: 1770 |
yemets63, ошибка в коде. |
22 фев 21, 09:41 [22284632] Ответить | Цитировать Сообщить модератору |
L_argo Member Откуда: Сообщений: 1386 |
возможно ошибка в Parent или Owner. |
22 фев 21, 10:34 [22284641] Ответить | Цитировать Сообщить модератору |
Док Member Откуда: Казань Сообщений: 6964 |
К сообщению приложен файл. Размер - 31Kb |
|
22 фев 21, 12:04 [22284667] Ответить | Цитировать Сообщить модератору |
yemets63 Member Откуда: Самара Сообщений: 1387 |
L_argo, они привязаны правильно, на всех TabSheet лежат также созданные или загруженные динамически компоненты. ситуация такая, после создания PC1 создаю TS1 parent = PC1 следующий шаг, создаю и накидываю компоненты на TS1, parent соответственно TS1 для компонентов и так иду далее TS2 parent = PC1 компоненты parent = TS2 TS3 parent = PC1 компоненты parent = TS3 закончил создавать вкладки и их содержимое. программно иду на TS1, переключается заголовок вкладки PC1, я вижу активный TabSheet = TS1, а содержиое от TS3 по сути, когда делаем PС1.activepage = TS1, должно быть всё от TS1, но я вижу при активном TS1 содержимоей от TS3 есди я иду мышкой по TS, все отображается правильно, каждое содержимое отображается соответственно в своем TS после того, как я покликал мышкой динамически PS.activepage = TS1 или PS.activepage = TS2 работаетработает безупречно. что нужно сделать после создания PC1 и его TS, чтобы сразу после создания открыть нужный TS ЗЗЗЗЗЗЗЫЫЫЫЫЫЫЫЫ: на самом деле, код простой и старый, я его тупо взял из своего старого проекта, который был скомпилирован в CG2009, рабочая версия EXE файл есть и работает верно. но сейчас нет возможности все прогнать на CG2009, сейчас установлен XE Seattle, и вот на Seattle такая вот беда. PageControl это достаточно простой и стандартный компонент. разницу в исходном коде, что работало раньше и не работает сейчас не вижу, ее просто нет. код мой и все стандартно. такое чувство, что какой то глюк. вкладка переключилась, а содержимое не перерисовалось. |
22 фев 21, 12:12 [22284672] Ответить | Цитировать Сообщить модератору |
Кроик Семён Member Откуда: СПб --> Dortmund Сообщений: 6694 |
yemets63, нда, это явно баг что бы его обойти, попробуйте после создания выставить как ActivePage (или через ActivePageIndex) последнюю вкладку. А потом первую. Просто, что бы контрол по-настоящему переключился. |
22 фев 21, 12:21 [22284674] Ответить | Цитировать Сообщить модератору |
yemets63 Member Откуда: Самара Сообщений: 1387 |
Док, PC создается статически всё прекрасно PC создается динамически тоже всё прекрасно, но пока я не кликну мышкой по нему, содержимое вкладки не прорисовывается остается последнее созданное К сообщению приложен файл. Размер - 9Kb |
22 фев 21, 12:27 [22284678] Ответить | Цитировать Сообщить модератору |
yemets63 Member Откуда: Самара Сообщений: 1387 |
Кроик Семён, я пробовал бегать динамически по всем вкладкам и делал REPAINT и REFRESH, без результатно. пробовал просто по ActivePage ходить и переключать ActivePageIndex. мышкой всё хорошо, динамически плохо. но после того как я мышкой что то сделал, динамически тоже работает хорошо. я как бы в Delphi со второй версии, уже не чайник, :), но может что то в Seattle добавлено такое, что надо дописывать, чего я не знаю. "горит" поставить CG2009 и посмотреть, время нет. |
22 фев 21, 12:32 [22284682] Ответить | Цитировать Сообщить модератору |
ъъъъъ Member Откуда: Сообщений: 1770 |
yemets63, ты понимаешь, что херню несёшь? TPageControl существует уже сто лет, его используют миллиарды кодеров. А проблемы только у тебя. Но код ты не показываешь. procedure TForm1.Button1Click(Sender: TObject); var fL1: TLabel; fL2: TLabel; fPC: TPageControl; fTS1: TTabSheet; fTS2: TTabSheet; begin fPC := TPageControl.Create(self); fPC.Parent := Self; fTS1 := TTabSheet.Create(fPC); fTS2 := TTabSheet.Create(fPC); fTS1.PageControl := fPC; fTS2.PageControl := fPC; fTS1.Name := 'TS1'; fTS2.Name := 'TS2'; fL1 := TLabel.Create(fTS1); fL2 := TLabel.Create(fTS2); fL1.Parent := fTS1; fL2.Parent := fTS2; fL1.Name := 'L1'; fL2.Name := 'L2'; fL2.Left := fL1.Width * 2; fPC.ActivePageIndex := 0 // Показываем первый лист К сообщению приложен файл. Размер - 3Kb |
22 фев 21, 13:06 [22284704] Ответить | Цитировать Сообщить модератору |
yemets63 Member Откуда: Самара Сообщений: 1387 |
ъъъъъ, как грубо, где Вас так учили общаться? код стандартный, просто все выгружается из базы, чессс слово вычищать базу не охота, чтобы показать почти тот же код, что и Вы прислали. и так, очень странно, но если динамически переключить вкладки, а не перейти на нужную, то содержимое TabSheet отображается правильно NewPC.ActivePageindex := NewPC.ActivePageindex + 1; NewPC.ActivePageindex := NewPC.ActivePageindex - 1; просто NewPC.ActivePageindex := 1 или 0 или 2 не дает ни какого эффекта, сама вкладка активная, а содержиое от последней созданной вкладки P.S. на статично созданном PC - ActivePageindex := 1 или 0 или 2 - работает. |
22 фев 21, 13:14 [22284715] Ответить | Цитировать Сообщить модератору |
ъъъъъ Member Откуда: Сообщений: 1770 |
Ну и иди[те] в жопу. |
||||
22 фев 21, 13:15 [22284716] Ответить | Цитировать Сообщить модератору |
Док Member Откуда: Казань Сообщений: 6964 |
речь не о базах, а о минимальном (воспроизводящем проблему) примере. Два тебе показали (на дельфях и лазаре). Дело за тобой |
||||
22 фев 21, 13:28 [22284722] Ответить | Цитировать Сообщить модератору |
yemets63 Member Откуда: Самара Сообщений: 1387 |
кто спорит, предложенный текст стандартнее не бывает, у меня МОЙ старый код написанный наверное году в 2001 работает, и конечно я его просто взял, а он ВОТ раз и не работет и так CG2009 где я последний раз использовал этот код для динамических форм я не нашел, и ставить смысла нет. но я подключился к ПК с XE Berlin, собрал проект там, и вот результат NewPC.ActivePageindex := 0 В Берлине - работает В Сиэтле нет эффекта. переключение есть заголовка есть, содержимое не обновляется NewPC.ActivePageindex := NewPC.ActivePageindex + 1; NewPC.ActivePageindex := NewPC.ActivePageindex - 1; В Берлине - работает В Сиэтле работет P.S. я не хочу грешить на Seattle, потому что так не должно быть, может сборка какая то битая. но брали с офф-сайта году в 2015. Support не покупали и обновления тоже. но особо багов не было, хотя недавно были с CDS и Provider, сервер собирал тоже в Берлине. |
22 фев 21, 13:46 [22284732] Ответить | Цитировать Сообщить модератору |
ъъъъъ Member Откуда: Сообщений: 1770 |
yemets63, что ты хочешь, конкретно? |
22 фев 21, 14:03 [22284738] Ответить | Цитировать Сообщить модератору |
Док Member Откуда: Казань Сообщений: 6964 |
ъъъъъ, думать наверное не хочет. Ему проще другим моск кушать, чем самому 15 строк кода написать ![]() |
24 фев 21, 13:48 [22285668] Ответить | Цитировать Сообщить модератору |
Все форумы / Delphi | ![]() |