Tomoyo
Участник
Offline
|
|
« : 26-10-2008 18:29 » |
|
Разместить на форме пять страниц с закладками. Написать процедуру, позволяющую пользователю программы видеть только предыдущую и следующую закладки, помимо закладки на активной странице.
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #1 : 26-10-2008 18:57 » |
|
Смотри свойства страниц TabVisible.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Tomoyo
Участник
Offline
|
|
« Ответ #2 : 27-10-2008 17:30 » |
|
Но ведь там можно только задать изначально видимость/невидимость страницы. А мне прогу надо написать. У меня была мысль сделать их изначально все видимыми с помощью TabVisible, а затем путем прибавления и отнимания 1 от i-той страницы задавать видимость предыдущей и последующей.
|
|
|
Записан
|
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #3 : 28-10-2008 10:07 » |
|
задача не понятна. что значит "написать программу"? что эта программа делать будет?
в принципе, можно в OnChange делать видимым Tab с индексом i + 2, невидимым Tab с индексом i, и ставить активным Tab с индексом i + 1.
|
|
|
Записан
|
|
|
|
Tomoyo
Участник
Offline
|
|
« Ответ #4 : 28-10-2008 10:28 » |
|
Программа во что делает: при нажатии на закладку страницы остается видимой она, предыдущая и последующая. Все остальные невидимые. И так при нажатии на 2,3 и 4.
|
|
|
Записан
|
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #5 : 28-10-2008 11:03 » |
|
ну так надо перехватить OnChange и в нём нужным индексам указать Visible = FALSE. что конкретно не получается?
|
|
|
Записан
|
|
|
|
Tomoyo
Участник
Offline
|
|
« Ответ #6 : 29-10-2008 15:37 » |
|
Извините за беспокойство)Я уже сделала. И понимаю, что можно было сделать намного короче.
unit Unit7;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;
type TForm7 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: TTabSheet; TabSheet4: TTabSheet; TabSheet5: TTabSheet; Button1: TButton; Button2: TButton; Button3: TButton; procedure PageControl1Change(Sender: TObject); procedure PageControl1Enter(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form7: TForm7;
implementation
{$R *.dfm}
procedure TForm7.PageControl1Change(Sender: TObject); begin case Pagecontrol1.ActivePageIndex of 0: begin Tabsheet2.TabVisible:=true; Tabsheet3.TabVisible:=false; end;
1: begin Tabsheet1.TabVisible:=true; Tabsheet3.TabVisible:=true; Tabsheet4.TabVisible:=false;
end;
2: begin Tabsheet1.TabVisible:=false; Tabsheet2.TabVisible:=true; Tabsheet4.TabVisible:=true; Tabsheet5.TabVisible:=false; end;
3: begin Tabsheet2.tabVisible:=false; Tabsheet3.TabVisible:=true; Tabsheet5.TabVisible:=true; end;
4: begin Tabsheet2.TabVisible:=false; Tabsheet3.TabVisible:=false; Tabsheet4.TabVisible:=true; end; end; end;
procedure TForm7.PageControl1Enter(Sender: TObject); begin Pagecontrol1.ActivePageIndex:=0; Tabsheet3.TabVisible:=false; Tabsheet4.TabVisible:=false; Tabsheet5.TabVisible:=false; end;
procedure TForm7.Button1Click(Sender: TObject); begin button2.Visible:=false; button3.Visible:=true; end;
procedure TForm7.Button2Click(Sender: TObject); begin button3.Visible:=false; button1.Visible:=true; end;
procedure TForm7.Button3Click(Sender: TObject); begin button1.Visible:=false; button2.Visible:=true; end;
end.
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #7 : 29-10-2008 15:40 » |
|
Tomoyo, очень криво. Подумай, а если бы закладок было 100, представь сколько кода надо писать. Попробуй найти более красивое решение (оно есть).
|
|
|
Записан
|
|
|
|
Tomoyo
Участник
Offline
|
|
« Ответ #8 : 29-10-2008 16:01 » |
|
Мне сегодня препод тоже самое сказал)) Я знаю, как переделать. Спасибо всем.
|
|
|
Записан
|
|
|
|
|