Tpagecontrol

valentofer

Active member
10.11.2007
38
0
#1
И еще вопросик. Сразу извеняюсь за его тупость :)
Как узнать, какая из вкладок(tabsheet) в PageControl активна в данный момент???
 
S

Silver Wind

#2
Запоминай алгоритм.
В таких случаях пишешь в исходнике TPageControl становишься на эту надпись и жмешь Ctrl+F1. В итоге попадаешь в раздел справки по этой компаненте и только природная лень или полное незнание англиского языка может тебе помешать догадаться что искомые свойства называются ActivePage или ActivePageIndex.
 

valentofer

Active member
10.11.2007
38
0
#4
попробовал, на buttonclick:
label1.caption:= inttostr(pagecontrol1.activepageindex);

В результате в лэйбл выводится не индексы вкладок, а какаета "порнография" )))
по нажатии на кнопку в лэйбле "4444888" ))) Бред какойто :rolleyes:
 
S

Silver Wind

#5
Просто привычка от какой-то другой среды, но работает и так, так что както не задумывался.

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

valentofer

Active member
10.11.2007
38
0
#6
вылаживаю:
Код:
TabInd:integer;
begin
TabInd:= TOtgruzkaViewFrame(CurrentFrame).sPageControl1.ActivePageIndex;
Label1.Caption:=inttostr(TabInd);
все вроде правильно :rolleyes:
 
S

Silver Wind

#7
Видимо все дело в этом:
1. Ты уверен что CurrentFrame имеет тип TOtgruzkaViewFrame?
Посмотри что вернет (CurrentFrame is TOtgruzkaViewFrame)
2. Ты уверен что переменная CurrentFrame при данном обращении уже создана или еще создана?
Проверь так Assigned(CurrentFrame)

P.S. В обоих случаях результат логический.
 

valentofer

Active member
10.11.2007
38
0
#8
точно, не выполняестся:
Код:
procedure TOtgruzka_Frame.sBitBtn1Click(Sender: TObject);
var
RecNom, TabInd:integer;
begin
if assigned(CurrentFrame) and (CurrentFrame is TOtgruzkaViewFrame) then
TabInd:= TOtgruzkaViewFrame(CurrentFrame).sPageControl1.ActivePageIndex; // не выполняется почемуто?!
RecNom := OtgruzkaConnect.ADOTable1_Mashine.RecNo;
Label1.Caption:=inttostr(TabInd);
//OtgruzkaEditForm.ShowModal;
end;
А почему??
вот так создается у меня фрэйм:
Код:
 if Assigned(CurrentFrame) then FreeAndNil(CurrentFrame);
CurrentFrame := TOtgruzkaViewFrame.Create(MainForm);
MainForm.UpdateFrame(Sender);
поидее в CurrentFrame будет TOtgruzkaViewFrame, но почему тогда не проходит IF в предыдущем коде???
 

valentofer

Active member
10.11.2007
38
0
#9
Потому что вам еще рано программы писать. Надо сначала на кошках тренироваться, тогда вопросы глупые перестанете задавать и все больше ответы находить будете.
Модератор: удалено. // вы себе помочь не пожете, о какой помощи другим вы говорите? успокойтесь.

Silver Wind, вам спасибо, наставили на путь истинный :rolleyes: Ошибку нашел, она заключалась в том что CurrentFrame была обьявлена 2 раза (в разных юнитах), поэтому перед выполнением вышеизложенного кода происходило переопределение CurrentFrame.

P.S. Тему считаю решенной.