powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TPageControl, программно поменять вкладки местами
14 сообщений из 14, страница 1 из 1
TPageControl, программно поменять вкладки местами
    #39864488
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал играться с PageIndex, не вышло

When a movie is over, it's a black
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864491
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
20.09.2019 12:02, Квейд пишет:
> Пробовал играться с PageIndex, не вышло

а после того как поменял индексы принудительно перерисовать?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864496
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, это не помогает
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864502
Dmitri Krizhanovski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейд,

CE.
И так и так работает:
Код: pascal
1.
2.
PageControl1.ActivePage.PageIndex := 0;
PageControl1.Pages[3].PageIndex := 1;
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864505
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КвейдПробовал играться с PageIndex, не вышло
Поиграйся получше. У меня сходу вышло.

Код: 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.
type
  TForm14 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    TabSheet5: TTabSheet;
    Panel1: TPanel;
    procedure Panel1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form14: TForm14;

implementation

{$R *.dfm}

procedure TForm14.Panel1Click(Sender: TObject);
begin
  with PageControl1.ActivePage do PageIndex := PageIndex - 1;
end;
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864508
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
20.09.2019 12:08, Квейд пишет:
> нет, это не помогает

странно.
у меня работает.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  if RadioGroup1.ItemIndex = 0 then
    begin
      TabSheet2.PageIndex := 0;
      TabSheet1.PageIndex := 1;
    end
  else
    begin
      TabSheet2.PageIndex := 1;
      TabSheet1.PageIndex := 0;
    end
end;



Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864510
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейд> Пробовал играться с PageIndex, не вышло

Показывай, как пробовал-то. Шо, PageControl1.Pages[0].PageIndex := 1 не работает?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864511
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чую я, он поменял два (2) раза. Минус на минус дал плюс.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864516
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
часть вкладок "прячется", согласно некоей логике
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var
  T, MyTab: TTabSheet;

//…
    MyTab := nil;
    for I := 0 to PageControlCard.PageCount - 1 do
    begin
      T := PageControlCard.Pages[I];
      if Info.FSheetFactory.IsTabOwnedByFactory(T) then
        T.TabVisible := True
      else
        if SameText(T.Name, 'MyTab') then
          MyTab := T;
        T.TabVisible := False
    end;



Мне нужно, чтобы MyTab стала видимой и находилась в самом конце (была последней вкладкой).

Код: pascal
1.
2.
3.
4.
5.
    if Assigned(MyTab) then
    begin
      MyTab.PageIndex := PageControlCard.PageCount - 1; // не уверен что это правильно
      MyTab.TabVisible := True
    end;



все равно эта вкладка всегда первая
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864519
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разбей задачу на две.
отлаживай сперва одно, потом другое.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864525
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упрощаю пример
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
    MyTab := nil;
    for I := 0 to PageControlCard.PageCount - 1 do
    begin
      T := PageControlCard.Pages[I];
      if SameText(T.Name, 'MyTab') then
        MyTab := T;
      T.TabVisible := Info.FSheetFactory.IsTabOwnedByFactory(T)
    end;



MyTab<>nil и имеет произвольный индекс. Как сделать MyTab последней в списке видимых вкладок?
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864527
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КвейдМне нужно, чтобы MyTab стала видимой и находилась в самом конце (была последней вкладкой).

Код: pascal
1.
2.
3.
4.
5.
    if Assigned(MyTab) then
    begin
      MyTab.PageIndex := PageControlCard.PageCount - 1; // не уверен что это правильно
      MyTab.TabVisible := True
    end;


все равно эта вкладка всегда первая
Я не уверен, что можно менять индекс невидимой вкладки. А если наоборот делать?..
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864531
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пятницо же !!!
...
Рейтинг: 0 / 0
TPageControl, программно поменять вкладки местами
    #39864535
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
Код: pascal
1.
2.
3.
4.
    begin
      TabSheet2.PageIndex := 0;
      TabSheet1.PageIndex := 1;
    end


Кажется, я понял, что у него может не работать. Коллеги, имейте в виду, что в VCL многие свойства такого плана (и PageIndex в том числе) реализованы следующим образом: PageControl хранит TList со вкладками, а PageIndex - это индекс в этом TList-е. Соответственно, SetPageIndex выполняется как TList.Move. Это удобное и красивое решение, но как следствие - пытаясь сделать работу по перестановке вкладок "за VCL" легко отменить собственные изменения.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TPageControl, программно поменять вкладки местами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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