Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите, пожалуйста, решить задачу с закладками.  (Прочитано 8608 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Tomoyo
Участник

ru
Offline Offline

« : 26-10-2008 18:29 » 

Разместить на форме пять страниц с закладками. Написать процедуру, позволяющую пользователю программы видеть только предыдущую и следующую закладки, помимо закладки на активной странице.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 26-10-2008 18:57 » 

Смотри свойства страниц TabVisible.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Tomoyo
Участник

ru
Offline Offline

« Ответ #2 : 27-10-2008 17:30 » 

Но ведь там можно только задать изначально видимость/невидимость страницы. А мне прогу надо написать. У меня была мысль сделать их изначально все видимыми с помощью TabVisible, а затем путем прибавления и отнимания 1 от i-той страницы задавать видимость предыдущей и последующей.
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 28-10-2008 10:07 » 

задача не понятна. что значит "написать программу"? что эта программа делать будет?

в принципе, можно в OnChange делать видимым Tab с индексом i + 2, невидимым Tab с индексом i, и ставить активным Tab с индексом i + 1.
Записан

Tomoyo
Участник

ru
Offline Offline

« Ответ #4 : 28-10-2008 10:28 » new

Программа во что делает: при нажатии на закладку страницы остается видимой она, предыдущая и последующая. Все остальные невидимые. И так при нажатии на 2,3 и 4.
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #5 : 28-10-2008 11:03 » 

ну так надо перехватить OnChange и в нём нужным индексам указать Visible = FALSE. что конкретно не получается?
Записан

Tomoyo
Участник

ru
Offline 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
Участник

ru
Offline Offline

« Ответ #8 : 29-10-2008 16:01 » 

Мне сегодня препод тоже самое сказал)) Я знаю, как переделать. Спасибо всем.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines