Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 7
Всего онлайн: 7
Зарегистрировано юзеров: 7879
Комментариев на сайте: 690
Новый юзер: Egen_M



Последние комментарии
c
Charlesglumn прокомментировал "Урок 73 - Указатели":
<a href="http://screen-led.ru">светодиодный экран</a> <a href="http://screen-led.ru">аренда светодиодного экрана</a> <a href="http://screen-led.ru">светодиодный экран купить</a> <a href="http://screen-led.ru">светодиодный экран цена</a> <a href="http://screen-led.ru">светодиодный экран led</a> <a href="http://screen-led.ru">разрешение светодиодных экранов</a> <a href="http://screen-led.ru">уличный светодиодный экран</a> <a href="http://screen-led.ru">светодиодные экраны москва</a> <a href="http://screen-led.ru">светодиодные экраны типы</a> <a href="http://screen-led.ru">светодиодный экран чтобы помещений</a> <a href="http://screen-led.ru">светодиодные экраны размеры</a> <a href="http://screen-led.ru">hd светодиодные экраны</a> светодиодный экран купить 8-800-550-2316 info@screen-led.ru 150003, РФ, г. ЯРОСЛАВЛЬ, ул. ПОЛУШКИНА РОЩА, д. 9, оф. 4
Arthurneime прокомментировал "Урок 3 - Конструкция IF...THEN...ELSE":
[img]https://avatars.mds.yandex.net/get-pdb/1708639/cc1462cd-ed78-4920-b735-46dd5c06d89d/s375[/img] [b]Как обыграть Казино??? Миф или трудная реальность?[/b] Если и есть что-то, что все знают об азартных играх, так это то, что дом всегда выигрывает. И хотя это правда, что казино всегда приносят прибыль, есть несколько способов обмануть систему – некоторые из которых на самом деле совершенно законны. Полвека назад математик Эдвард Торп опубликовал новаторскую книгу, в которой описал, как игрок может использовать “подсчет карт”, чтобы получить преимущество в игре Блэкджек, отслеживая карты, оставшиеся в колоде. С тех пор казино пытаются искоренить подсчет карт, а счетчики карт становятся все более искусными в том, чтобы не попасться. Так можно ли сегодня переиграть казино? И каково же будет в будущем? Выигрышная Рука В Блэкджеке. Викисклад Казино - это бизнес, и они работают, создавая маржу-часто называемую краем дома. Если вы играете в рулетку и делаете ставку на один номер, то вам будут платить с коэффициентом 35-1, когда истинные шансы составляют 36-1 в Европе и 37-1 в США. Тот факт, что вы получаете меньше, чем истинные шансы, является преимуществом дома и объясняет, почему казино зарабатывают деньги в долгосрочной перспективе. Конечно, некоторые люди должны выигрывать, иначе казино перестанут существовать. Source: https://vk.com/video-195820899_456239021 https://zen.yandex.ru/media/id/5ce017f600ad2100b3939f53/sluchai-v-kazino-5ed8b67b5db2e716a6031ac2 Tags: бит казино играть казино вулкан сайт казино фортуна плей

Диалог в стиле wizard'а

В этой статье на простом примере я покажу, каким образом можно организовать в своей программе диалоговое окно с пошаговым выполнением (уточнением) какой-либо задачи (такое окно обычно называют мастером или визардом (от англ. wizard - волшебник, маг)). Наибольшее распространение мастера получили в программах-инсталляторах, а также в других программах, требующих для выполнения своей задачи строго определенной последовательности действий, которая (последовательность) может оказаться сложной для новичка.

Существует немало способов решить нашу задачу, например, использовать для каждого шага собственную отдельную форму, фрейм, или панель, компонент TNotebook с закладки Win31 или более современный TPageControl. Есть даже готовые инструменты для создания такого рода диалогов. Выбор, в итоге, остается за вами, я же покажу некоторые принципы их построения на примере компонента TPageControl.

Итак, кладем на форму компонент TPageControl и добавляем требуемое количество закладок. Я для примера создал пять закладок:

Первая страница. Особенность: кнопка "Назад" неактивна (куда ж идти то?). Обычно здесь располагается общая информация о задаче (программе);
Вторая страница. Особенность: переход на следующую страницу возможен только при выполнении определенного условия. В программах установки таким условием является согласие пользователя с лицензионным соглашением;
Третья страница. С нее в зависимости от выбора пользователя будет осуществляться переход либо на следующую страницу, либо сразу на пятую (последнюю в нашем примере);
Четвертая страница. Ничего особенного, нужна как "заглушка" для предыдущего шага;
Пятая страница. Конечный этап: кнопка "Далее" отключается, появляется кнопка "Готово".
Первым делом нам предстоит избавиться от закладок: они позволяют произвольно переключаться между страницами, а это противоречит условию нашей задачи. Вот как это можно сделать:

procedure TForm1.FormCreate(Sender: TObject); 
var i: integer; 
begin 
     // Прячем закладки. В принципе эту операцию можно выполнить 
     // и в Инспекторе объектов, но так будет более универсально 
     for i := 0 to PageControl1.PageCount-1 do 
      PageControl1.Pages[i].TabVisible := false; 
     // Делаем активной (видимой) первую страницу 
     PageControl1.ActivePageIndex := 0; 
     // Обновляем элементы управления 
     CheckChange(0); 
end;
Процедура CheckChange(NewIdx: integer) является ключевой в программе: она изменяет состояние элементов управления текущей страницы мастера и вызывается всякий раз, когда пользователь переходит от предыдущей страницы к странице с индексом NewIdx. Вот как она реализована:
procedure TForm1.CheckChange(NewIdx: integer); 
begin 
     // Контролируем "крайние" закладки: 
     btBack.Enabled := NewIdx > 0; 
     btFrwrd.Enabled := NewIdx < PageControl1.PageCount-1; 
     // Кнопка "Готово" видна только на последней странице 
     btend.Visible := not btFrwrd.Enabled; 
     // Метка с сообщением, что предыдущая страница была пропущена 
     Label6.Visible := RadioGroup2.ItemIndex > 0; 

     // дополнительные проверки в зависимости от номера текущей страницы (закладки) 
     case NewIdx of 
      1: btFrwrd.Enabled := btFrwrd.Enabled and (RadioGroup1.ItemIndex > 0); 
      2: btFrwrd.Enabled := RadioGroup2.ItemIndex > -1; 
      3: if RadioGroup2.ItemIndex > 0 then 
          if GoBack then 
           PageControl1.SelectNextPage(false, false) else 
           PageControl1.SelectNextPage(true, false); 
     end; 
end;
Логическая переменная GoBack позволяет определить направление переключения закладок: вперед или назад. Ее значение формируется в обработчиках соответствующих кнопок "Вперед" и "Назад":
procedure TForm1.btFrwrdClick(Sender: TObject); 
begin 
     GoBack := false; 
     PageControl1.SelectNextPage(true, false); 
end; 

procedure TForm1.btBackClick(Sender: TObject); 
begin 
     GoBack := true; 
     PageControl1.SelectNextPage(false, false); 
end;
Теперь посмотрим - когда же необходимо вызвать процедуру CheckChange() для обновления состояния элементов управления.

Во-первых, после смены любым способом активной страницы (TPageControl генерирует при этом событие OnChange):
procedure TForm1.PageControl1Change(Sender: TObject); 
begin 
     CheckChange(PageControl1.ActivePageIndex); 
end;
Во-вторых, при изменении состояния групп радиокнопок (в вашей программе это, конечно, могут быть любые другие элеметы управления):
procedure TForm1.RadioGroup1Click(Sender: TObject); 
begin 
     CheckChange(PageControl1.ActivePageIndex); 
end; 

procedure TForm1.RadioGroup2Click(Sender: TObject); 
begin 
     CheckChange(PageControl1.ActivePageIndex); 
end;
Вот, в принципе, и все. Профессиональные мастера, конечно, используют намного более сложные алгоритмы изменения состояния элементов управления с более сложными переходами между страницами (если даже используют указанные нами страничные компоненты), но нам для получения минимального знания по созданию мастеров этого будет достаточно.

Вот и всё, Удачи!

Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 17 Марта 2014
Просмотров:


Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.