powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / динамически созданный PageControl не обновляет содержимое TabSheet
15 сообщений из 15, страница 1 из 1
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047814
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
динамически создаю PageControl, на нем несколько TabSheet, динамически перехожу на первый созданный TabSheet, вкладка переключается, а содержимое остается последней вкладки.

что нужно обновить, чтобы актуализировать и отобразить содержимое выбранной динамически вкладки???

пробовал REFRESH и REPAINT для PageControl, для динамически выбранного TabSheet, содержимое всзуально все равно остается последней вкладки.

потом мышкой всё работает нормально.
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047820
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yemets63,

ошибка в коде.
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047828
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно ошибка в Parent или Owner.
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047845
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
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.
procedure TForm1.FormCreate(Sender: TObject);
begin
  FPgCtrl:= TPageControl.Create(Self);
  with FPgCtrl do
  begin
    Left:= 10;
    Top:= 10;
    width:= Self.Width - 10;
    Height:= Self.Height - 20;
    Parent:= TWinControl(Self);
    AddTabSheet;
    Page[0].Caption:= '0001';

    FBtn:= TButton.Create(Self);
    with FBtn do begin
      Parent:= TWinControl(Page[0]);
      Left:= 10;
      Top:= 10;
      Caption:= 'Button';
    end;

    AddTabSheet;
    Page[1].Caption:= '0002';
    fLbl:= TLabel.Create(Self);
    with fLbl do
    begin
      Parent:= TWinControl(Page[1]);
      Caption:= 'Label';
      Left:= 10;
      Top:= 10;
    end;

    AddTabSheet;
    Page[2].Caption:= '0003';

    fMemo:= TMemo.Create(Self);
    with fMemo do
    begin
      Parent:= TWinControl(Page[2]);
      Top:= 10;
      Left:= 10;
      Width:= 100;
      Height:= 100;
      Text:= 'memo';
    end;

    PageIndex:= 0;
  end;
end;                                      

...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047847
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 это достаточно простой и стандартный компонент. разницу в исходном коде, что работало раньше и не работает сейчас не вижу, ее просто нет. код мой и все стандартно.
такое чувство, что какой то глюк. вкладка переключилась, а содержимое не перерисовалось.
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047848
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

нда, это явно баг

что бы его обойти, попробуйте после создания выставить как ActivePage (или через ActivePageIndex) последнюю вкладку. А потом первую. Просто, что бы контрол по-настоящему переключился.
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047850
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

PC создается статически всё прекрасно

PC создается динамически тоже всё прекрасно, но пока я не кликну мышкой по нему, содержимое вкладки не прорисовывается
остается последнее созданное
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047853
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён,

я пробовал бегать динамически по всем вкладкам и делал REPAINT и REFRESH, без результатно.
пробовал просто по ActivePage ходить и переключать ActivePageIndex.

мышкой всё хорошо, динамически плохо.
но после того как я мышкой что то сделал, динамически тоже работает хорошо.
я как бы в Delphi со второй версии, уже не чайник, :), но может что то в Seattle добавлено такое, что надо дописывать, чего я не знаю.

"горит" поставить CG2009 и посмотреть, время нет.
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047861
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yemets63,

ты понимаешь, что херню несёшь? TPageControl существует уже сто лет, его используют миллиарды кодеров.
А проблемы только у тебя. Но код ты не показываешь.

Код: pascal
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.
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 // Показываем первый лист
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047871
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

как грубо, где Вас так учили общаться?

код стандартный, просто все выгружается из базы, чессс слово вычищать базу не охота, чтобы показать почти тот же код, что и Вы прислали.

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

Код: pascal
1.
2.
  NewPC.ActivePageindex := NewPC.ActivePageindex + 1;
  NewPC.ActivePageindex := NewPC.ActivePageindex - 1;



просто
NewPC.ActivePageindex := 1 или 0 или 2 не дает ни какого эффекта, сама вкладка активная, а содержиое от последней созданной вкладки

P.S.
на статично созданном PC - ActivePageindex := 1 или 0 или 2 - работает.
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047872
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yemets63
вычищать базу не охота, чтобы показать почти тот же код

Ну и иди[те] в жопу.
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047878
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63
PC создается динамически тоже всё прекрасно, но пока я не кликну мышкой по нему, содержимое вкладки не прорисовывается
остается последнее созданное


речь не о базах, а о минимальном (воспроизводящем проблему) примере. Два тебе показали (на дельфях и лазаре). Дело за тобой
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047887
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто спорит, предложенный текст стандартнее не бывает,
у меня МОЙ старый код написанный наверное году в 2001 работает, и конечно я его просто взял, а он ВОТ раз и не работет

и так CG2009 где я последний раз использовал этот код для динамических форм я не нашел, и ставить смысла нет. но я подключился к ПК с XE Berlin, собрал проект там, и вот результат

Код: pascal
1.
  NewPC.ActivePageindex := 0


В Берлине - работает В Сиэтле нет эффекта. переключение есть заголовка есть, содержимое не обновляется

Код: pascal
1.
2.
  NewPC.ActivePageindex := NewPC.ActivePageindex + 1;
  NewPC.ActivePageindex := NewPC.ActivePageindex - 1;


В Берлине - работает В Сиэтле работет

P.S.
я не хочу грешить на Seattle, потому что так не должно быть, может сборка какая то битая. но брали с офф-сайта году в 2015. Support не покупали и обновления тоже.
но особо багов не было, хотя недавно были с CDS и Provider, сервер собирал тоже в Берлине.
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40047891
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yemets63,

что ты хочешь, конкретно?
...
Рейтинг: 0 / 0
динамически созданный PageControl не обновляет содержимое TabSheet
    #40048364
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

думать наверное не хочет. Ему проще другим моск кушать, чем самому 15 строк кода написать
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / динамически созданный PageControl не обновляет содержимое TabSheet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]