- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Delphi. Учимся на примерах - Сергей Парижский
Шрифт:
Интервал:
Закладка:
p2.Visible:= False;
p3.Visible:= True;
vopr:= Random(4) + 1;
vars(vopr);
end;
procedure TForm1.p3Click(Sender: TObject);
begin
Label1.Caption:= 'Четвертый вопрос:';
verno();
р3.Visible:= False;
p4.Visible:= True;
vopr:= Random(4) + 1;
vars(vopr);
end;
procedure TForm1.p4Click(Sender: TObject);
begin
Label1.Caption:= 'Пятый вопрос:';
verno();
p4.Visible:= False;
p5.Visible:= True;
vopr:= Random(4) + 1;
vars(vopr);
end;
procedure TForm1.p5Click(Sender: TObject);
begin
//проверяем правильность ответа на последний вопрос
verno() ;
//узнаем, сколько баллов набрал пользователь
ss:= IntToStr(balls);
//делаем почти все компоненты невидимыми
Memo1.Visible:= False;
р5.Visible:= False;
RadioGroup1.Visible:= False;
Label1.Visible:= False;
an1.Visible:= False;
an2.Visible:= False;
an3.Visible:= False;
an4.Visible:= False;
Label2.Visible:=True;//показываем метку с результатом
Label2.Align:= alClient;//растягиваем ее на всю форму
//Отображаем процент правильных ответов
Label2.Caption:= 'Правильных ответов' + IntToStr(balls*(100 div 5))+'%';
end;
procedure TForm1.N4Click(Sender: TObject);
begin
Halt; //выход из программы
end;
procedure TForm1.p1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
p1.BevelInner:= bvLowered;
p1.BevelOuter:= bvRaised;
end;
procedure TForm1.p1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
p1.BevelInner:=bvRaised;
p1.BevelOuter:=bvLowered;
end;
procedure TForm1.p2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
p2.BevelInner:= bvLowered;
p2.BevelOuter:= bvRaised;
end;
procedure TForm1.p2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
p2.BevelInner:=bvRaised;
p2.BevelOuter:=bvLowered;
end;
procedure TForm1.p3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
p3.BevelInner:= bvLowered;
p3.BevelOuter:= bvRaised;
end;
procedure TForm1.p3MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
p3.BevelInner:=bvRaised;
p3.BevelOuter:=bvLowered;
end;
procedure TForm1.p4MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
p4.BevelInner:= bvLowered;
p4.BevelOuter:= bvRaised;
end;
procedure TForm1.p4MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
p4.BevelInner:=bvRaised;
p4.BevelOuter:=bvLowered;
end;
procedure TForm1.p5MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
p5.BevelInner:= bvLowered;
p5.BevelOuter:= bvRaised;
end;
procedure TForm1.p5MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
p5.BevelInner:=bvRaised;
p5.BevelOuter:=bvLowered;
end;
procedure TForm1.N1Click(Sender: TObject);
begin
Randomize;
ss:= zz;
start(); //начало теста
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteFile('c:base.bsd'); //удаляем расшифрованную базу
end
end.
⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter_13.
Глава 14
Генератор шуток
Постановка задачи
Разработать программу, которая будет работать незаметно для пользователя и периодически выполнять выбранную случайным образом шуточную процедуру или функцию.
Разработка формы
Создайте новый проект Delphi. Для того чтобы выполнять периодические действия, нам понадобится компонент Timer категории System. Программа будет выполнять каждую минуту случайно выбранную шутку. Для того чтобы таймер срабатывал каждую минуту, необходимо присвоить свойству Interval значение 60000. Больше никаких свойств ни для формы, ни для таймера изменять не нужно.
Разработка программного кода
Первое, что нужно сделать для шуточной программы, — скрыть ее от глаз пользователя. Для этого достаточно создать обработчик события формы OnPaint и добавить в него следующий код:
procedure TForm1.FormPaint(Sender: TObject);
begin
Form1.Hide; //прячем форму
end;
Здесь мы при каждой прорисовке формы скрываем ее из виду. При этом она не только будет скрыта визуально, но и исчезнет с панели задач, а также не будет отображаться на вкладке Приложения в диспетчере задач Windows.
Еще одно важное действие для нашей программы — реализация автозагрузки вместе с запуском ОС. Для этого создайте обработчик события главной формы OnCreate и добавьте в него следующий код:
procedure TForm1.FormCreate(Sender: TObject);
var
reg:TRegistry;//переменная для работы с реестром
path: string;//содержит путь к нашей программе
begin
Randomize; //генератор случайных чисел
//узнаем путь к программе и ее имя
path:= Application.EXEname;
reg:= TRegistry.Create;//открываем реестр
//ветка текущего пользователя
reg.RootKey:= HKEY_CURRENT_USER;
//открываем раздел автозагрузки
if reg.OpenKey('SoftwareMicrosoftWindows' +
'CurrentVersionRun', True)
then begin
//записываем ссылку на нашу программу в автозагрузку
reg.WriteString('Joker', path);
reg.CloseKey;//закрываем реестр
reg.Free;//освобождаем память
end;
end;
Чтобы это все работало, необходимо добавить в раздел uses ссылку на модуль Registry. Теперь все готово для создания программных шуток . Сначала объявим все глобальные переменные в разделе var:
var
Form1: TForm1;
//для отключения мыши и клавиатуры
Dummy: integer = 0;
OldKbHook: HHook = 0;
//для снятия копии экрана
ВМР1: Graphics.TBitmap;
DC1: HDC;
Image1: TImage;
// для поиска случайного рисунка
fn: TSearchRec;
Finds: integer;
i: integer;
endval: integer;
err_str: string;//вывод ошибки
tm: TSystemTime; //изменение времени
reg: TRegistry; //для работы с реестром
JokeNum: shortint; //номер шутки, которую следует выполнить
curs: TRect; //координаты прямоугольника
Все шутки будут описаны в обработчике события таймера OnTimer.
Добавьте в этот обработчик следующий код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
JokeNum:= Random(10) + 1; //Выбираем случайный номер шутки
case JokeNum of //выполняем шутку
1: begin
//код первой шутки
end;
2:
begin
//код второй шутки
end;
3: begin
//код третьей шутки
end;
4: begin
//код четвертой шутки
end;
5: begin
//код пятой шутки
end;
6: begin
//код шестой шутки
end;
7: begin
//код седьмой шутки
end;
8: begin
//код восьмой шутки
end;
9: begin
//код девятой шутки
end;
10: begin
//код десятой шутки
end;
end;
end;
Это шаблон для генератора шуток. Здесь выбирается случайное число от 1 до 10, которое будет определять, какую из шуток выполнить на этой минуте. Далее будут представлены фрагменты кода, выполняющие определенные действия, которые следует вставлять вместо комментария в соответствующую ветку конструкции case.
Шутка №1 — ограничение диапазона движения мыши
Итак, первая шутка заключается в наложении ограничения на диапазон движения мыши:

