Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
ВнизActivePage в TPageControl Найти похожие ветки
← →
Катерина (2002-07-03 11:27) [0]Объястиье, пожалуйста, почему, когда я до открытия формы настраиваю ее составляющие, в частности, TPageControl, устанавливая PageControl1.ActivePageIndex на определенную вкладку, то при открытии формы (OnShow) открыта вкладка действительно та, которая указана, а компоненты на ней - из той вкладки, что последней была открыта при редактировании формы. Перещелкнешь вкладки - всё нормально. Не смертельно, конечно, но довольно неприятно.
← →
Skier (2002-07-03 11:31) [1]>Катерина
А зачем тебе ActivePageIndex может просто обойтись
через ActivePage ?
Т.е. в OnShow пишешь :
PageControl1.ActivePage := YourTabSheet;
← →
Катерина (2002-07-03 11:44) [2]То же самое. Показана на указанная вкладка, а компоненты - с другой
← →
Игорь Шевченко (2002-07-03 11:51) [3]Код привести нельзя, чтобы убедиться в этом странном эффекте ?
← →
Skier (2002-07-03 11:52) [4]>Катерина
Страшные вещи ты рассказываешь :)
Т.к. твоя проблема не очень сложна в описании, то всё это
очень похоже на глюк делфийского PageControl-a.
Попробуй так что ли :
- брось на форму ещё один PageControl
- создай на нём нужное кол-во страниц
- скопируй всё элементы со старых страниц на новые
(копируешь) с удалением
- прибей старый PageControl
- переимену страницы на новом PageControl-е
Может поможет...А в общем всё это довольно странно.
← →
Катерина (2002-07-03 12:14) [5]>>Игорь Шевченко
Я отправила 3 файла: форма, unit и проект Вам на e-mail
← →
Катерина (2002-07-03 12:28) [6]Привожу пример этой ситуации:
Unit1.dfm
object Form1: TForm1
Left = 123
Top = 158
Width = 320
Height = 240
Caption = "Form1"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
OnShow = FormShow
PixelsPerInch = 120
TextHeight = 16
object PageControl1: TPageControl
Left = 16
Top = 8
Width = 289
Height = 193
ActivePage = TabSheet2
TabIndex = 1
TabOrder = 0
object TabSheet1: TTabSheet
Caption = "TabSheet1"
object Label1: TLabel
Left = 16
Top = 120
Width = 41
Height = 16
Caption = "Label1"
end
end
object TabSheet2: TTabSheet
Caption = "TabSheet2"
ImageIndex = 1
OnShow = TabSheet2Show
object Label2: TLabel
Left = 40
Top = 32
Width = 41
Height = 16
Caption = "Label2"
end
end
end
end
Unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Label1: TLabel;
Label2: TLabel;
procedure FormShow(Sender: TObject);
procedure TabSheet2Show(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
PageControl1.ActivePageIndex
end;
procedure TForm1.TabSheet2Show(Sender: TObject);
begin
PageControl1.ActivePage := TabSheet1;
end;
end.
Project1.dpr
program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
← →
Skier (2002-07-03 12:38) [7]>Катерина
Ежели заремить код,
procedure TForm1.FormShow(Sender: TObject) и
procedure TForm1.TabSheet2Show(Sender: TObject)
то вроде бы работает...
← →
Skier (2002-07-03 12:40) [8]>Катерина
Но лучше так :
procedure TForm1.FormShow(Sender: TObject);
begin
//PageControl1.ActivePageIndex;
PageControl1.ActivePage := TabSheet1;
end;
procedure TForm1.TabSheet2Show(Sender: TObject);
begin
//PageControl1.ActivePage := TabSheet1;
end;
end.
← →
Катерина (2002-07-03 12:55) [9]Спасибо! Вроде работает...
← →
Игорь Шевченко (2002-07-03 12:59) [10]Катерина © (03.07.02 12:14)
Так нельзя делать :-)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c