Оглавление
Инструкция пользователю
Общие сведения ……………………………………………………………..3
- Работа с игрой ………………………………………………………………..3
Скриншот игры:
Инструкция программисту
- Постановка задачи …………………………………………………………..5
- Принцип работы программы………………………………………………..5
- Процедуры……………………………………………………………………7
- Формы…………………………………………………………………………7
- Переменные…………………………………………………………………..7
- Компоненты…………………………………………………………………..8
- Листинг программы………………………………………………………….9
7.1. About.Pas………….………………………………………………….9
7.2. UgadaiSlovo.Cpp ………….……….………………………………..10
7.3. DialZagSlovo.Cpp ………………….….…………………………….15
7.4. Statistica.Cpp………..…….……..….……….……………………….9
- Используемая литература……………………………………………………18
Инструкция пользователю
- Общие сведения
Эта программа является игрой «Угадай слово», предназначена для познавательных задач, при работе с которой улучшаются знания слов русского языка. Программа имеет русский язык, минимальное количество настроек, и интуитивно понятный интерфейс, с которым легко и приятно работать. В игре «Угадай слово» компьютер автоматически из базы данных или пользователь загадывают слово. После чего оно отображается на экране звездочками, если пользователь правельно отгадал букву в этом слове, то она открывается. Играющий имеет право в любой момент либо назвать слово целиком, либо отказаться от игры.
Как работать с программой будет разобрано в следующих разделах.
Особенности программы:
- Простой интуитивно понятный интерфейс
- Возможность автоматического загадывание слова компьютером из БД
- Возможность пополнения загадываемых слов
- Автоматическое сохранение результатов игры
- Работа с игрой
После запуска программы мы видим окно в котором активны всего 2 группы кнопок, по несколько кнопок в каждой:
- Начать новую игру (слово загадывает компьютер автоматически).
- Начать новую игру (слово загадывает пользователь).
- Просмотреть статистику результатов всех игр.
- Вызов справки.
- Вызов сведений о игре.
- Выход из игры.
Что бы начать новую игру надо нажать соответственно 1 или 2 кнопку. После чего начнется новая игра. Информацию о слове (количество ходов, отгадано букв, всего букв) мы можем узнать в нижнем правом углу в панельке СтатусБар.
После этого у нас появятся новая группа кнопок, и соответственно возможные действия:
- Назвать одну букву.
- Назвать все слово целиком.
- Отказаться от игры.
При выборе 3 кнопки выйдет окошко с подтверждением об отказе от игры, после чего игра прекратится.
При выборе 1 или 2 кнопки выйдет элемент для ввода буквы или слова. После ввода надо нажать кнопку Ок. После чего автоматически увеличатся кол-во ходов, и если такая буква присутствует, то она появится на экране.
После того как слово отгадано появляются поздравления, и открывается окно статистики игры, после чего все стает на первоначальное состояние.
Инструкция программисту
- Постановка задачи
Задача состоит в том, что бы написать программу, которая бы позволяла автоматически загадывать любое слово из перечня, и обеспечить удобное отгадывание его.
Пользователь может совершать следующие действия:
- Назвать одну букву.
- Назвать все слово целиком.
- Отказаться от игры.
Программа должна иметь такие возможности:
- Автоматически загадывание слова из словаря
- Сохранение данных об исходах игр.
- Иметь красивый и интуитивно понятный интерфейс
Плюс к этому программа должна обходить такие ситуации:
- Недолжен иметь значения регистр букв
- Вводимое слово должно быть не больше загаданного
И что тоже очень важно:
- Красивый графический интерфейс
- Интуитивно понятный интерфейс
- Полноценную исчерпывающую справку
- Быструю скорость работы
- Принцип работы программы
Здесь я постараюсь как можно подробно описать теоретически работу программы.
Первое можно сказать о том, что оптимальное решение было бы разделить все видимые функции программы на 3 категории:
- Создание новой игры, просмотр статистика
- В течении игры – назвать букву, слово.
- Справка, о программе, выход
- Что касается первого пункта, сюда входят 3 кнопки, т.е. как бы отдельные процедуры:
1.1 Начать новую игру (слово загадывает компьютер автоматически). При нажатии на эту кнопку происходит считывание из файла всех слов, и выбор одного из него в качестве загадываемого. Работа каждого блока такая:
if (StatusBar1->Panels->Items[3]->Text==»»)
{
— Если сейчас нет игры, то начать новую, в противном случае – сбщ. Завершите игру
FILE *intxt;
char ch;
int i=0, it;
— Обьявление переменных
Edit2->Text=»»;
randomize();
— Меняем счетчик
if ((intxt = fopen(«slova.txt», «rt»)) == NULL) //файл
ShowMessage(«Невозможно открыть файл slova.txt. Проверьте его наличие…..»);
— Открытие файла для чтения
while (!feof(intxt))
{ch=fgetc(intxt);
— Чтение одного символа
if (ch==’_’)
{
— Если символ _, то значит закончилось слово.
— Первое слово является число количества слов в файле, остальные слова.
if (i==0)
it=(rand() % (StrToInt(Edit2->Text)-1))+1;
— Если i=0, то это число, -> считываем его, и загадываем число в этом промежутке.
if (i==it)
Form3->Edit1->Text=Edit2->Text;
Edit2->Text=»»;
i=i+1;
— Номер загаданного и считанного числа совпал – запоминаем его.
}
else Edit2->Text=Edit2->Text + ch;
}
fclose(intxt);
Form3->SpeedButton1->Click();
Lsl=Form3->Edit1->GetTextLen();
— Закрываем файл, эмулируем нажатие кнопки начать новую игру, слово вводит человек, автоматически вводится слово и нажимается Ок.
}
else ShowMessage(«Сначало завершите текущую игру….»);
1.2. Начать новую игру (слово загадывает пользователь). – просто показываем форму ввода слова, после ввода подсчитываем количество букв в слове и начинаем игру.
if (StatusBar1->Panels->Items[3]->Text==»»)
{
Form3->Edit1->Text=»»;
Form3->ShowModal();
Lsl=Form3->Edit1->GetTextLen();
}
else ShowMessage(«Сначало завершите текущую игру….»);
1.3. Просмотреть статистику результатов всех игр. Что бы просмотреть статистику всех игр надо прочитать данные из файла, занести их в форму и т.д., так как мы это уже делали в процедуру GameOver, то просто ее вызываем, с параметрами 0,0,0.
GameOver(0,0,0);
- Во второй пункт входят 3 кнопки, каждая из них является действием играющего, каждая из этих 3 кнопок разделены на 2 части, первая которых разная а вторая у всех трех одинаковая.:
- Назвать одну букву. При нажатии на кнопку, радио кнопку, и выбора меню ссылаются на один код. Который показывает панель GroupBox2, для ввода буквы и ожидает…
RadioButton1->Checked=True;
Label2->Caption=»Ожидание ввода буквы»;
Edit1->Text=»»;
Edit1->Show();
GroupBox2->Show();
Edit1->MaxLength=1;
Edit1->SetFocus();
- Назвать все слово целиком. При нажатии на кнопку, радио кнопку, и выбора меню ссылаются на один код. Который показывает панель GroupBox2, для ввода буквы и ожидает…
RadioButton2->Checked=True;
Label2->Caption=»Ожидание ввода слова»;
Edit1->Text=»»;
Edit1->Show();
GroupBox2->Show();
Edit1->MaxLength=Lsl;
Edit1->SetFocus();
- Отказаться от игры. Также при нажатии на кнопку, радио кнопку, и выбора меню ссылаются на один код, который показывает панель GroupBox2, для подтверждения
RadioButton3->Checked=True;
Label2->Caption=»Ожидание подтверждения»;
Edit1->Hide();
GroupBox2->Show();
- Что касается первого пункта, сюда входят 3 кнопки, т.е. как бы отдельные процедуры:
- Вызов справки. Запускает приложение в котором находится справка.
WinExec(«Help.exe», SW_RESTORE);
- Вызов сведений о игре. Показает форму 2, на которой и находится инфа о программе. Форма2 появляется как модальная, т.е. пока ее не закроешь, не вернешься назад.
Form2->ShowModal();
- Выход из игры. Закрывает главную форму, тем самым прекращает выполнение программы.
Close();
Теперь рассмотрим все переменные, процедуры, компоненты и т.д.
- Процедуры
Что касается процедур, то я создал 2 процедуры, которые облегчают работу программы, значительно уменьшают код проги(так как вызываются каждая раз по 7 из разных частей программы):
- – Obnulenie(). Смысл её в том, что обнуляет все данные таким образом, что бы можно было начать новую игру. Эта процедура вызывается по завершению текущей игры. Обнуляется весь текст StatusBar1, Edit1, Label Устанавливается свойство невидимости для GroupBox1, GroupBox2, MainMenu1-> Items[7,8,9]. В эту процедуру никакие параметры не передаются и не возвращаются.
Листинг процедуры:
Form1->Label1->Caption=»»;
Form3->Edit1->Text=»»;
Form1->GroupBox1->Visible=False;
Form1->GroupBox2->Visible=False;
Form1->RadioButton1->Checked=False;
Form1->RadioButton2->Checked=False;
Form1->RadioButton3->Checked=False;
Form1->StatusBar1->Panels->Items[1]->Text=»»;
Form1->StatusBar1->Panels->Items[2]->Text=»»;
Form1->StatusBar1->Panels->Items[3]->Text=»»;
Form1->Bukv->Enabled=False;
Form1->Slov->Enabled=False;
Form1->Otkaz->Enabled=False;
//Form1->MainMenu1->Items->Items[5]->Items[7]->Enabled=False;
//Form1->MainMenu1->Items->Items[5]->Items[8]->Enabled=False;
//Form1->MainMenu1->Items->Items[5]->Items[9]->Enabled=False;
- – GameOver(int v, int p, int o) Это сложная процедура, цель работы которой заключается в чтении из внешнего файла статистики об предыдущих играх, редактировании их, и запись обратно уже измененных. Разберем работу основных блоков процедуры. Листинг процедуры:
Obnulenie();
Form1->Edit2->Text=»»;
— т.к. игра окончена, то вызываем процедуру обнуления, работа которой уже описана
FILE *inst;
char ch, cv[]=»18_11_03_»;
int i=0;
— обьявляем переменные, типа файл, символ, и интежер.
inst = fopen(«stat.stt», «rt»);
— открываем файл для чтения как текстовый
while (!feof(inst))
{ch=fgetc(inst);
— читаем один символ из файла, если он является _, то значит до этого было число, следовательно смотрим какое оно по счету(счет введет переменная i) и прибавляем к нему значение которое зависит от исхода игры(v – вийгрышей, p – проигрышей, o – отказов от игры), то есть 0 или 1(результат игры может быть 0 или 1 для каждой из переменных). И так считываем все 3 числа, в 3 переменные.
if (ch==’_’)
{
i=i+1;
if (i==1)
v=v+StrToInt(Form1->Edit2->Text);
if (i==2)
p=p+StrToInt(Form1->Edit2->Text);
if (i==3)
o=o+StrToInt(Form1->Edit2->Text);
Form1->Edit2->Text=»»;
}
else Form1->Edit2->Text=Form1->Edit2->Text + ch;
}
fclose(inst);
— Закрываем файл.
Form4->Label8->Caption=IntToStr(v);
Form4->Label9->Caption=IntToStr(p);
Form4->Label10->Caption=IntToStr(o);
Form4->Label7->Caption=IntToStr(v+p+o);
— Заносим значения в форму 4 — статистика игры
// cv=IntToStr(v+p+o)+»_»+IntToStr(v)+»_»+IntToStr(p)+»_»+IntToStr(o)
inst = fopen(«stat.stt», «wt»);
i=0;
— Открываем файл для записи
while (cv[i])
{
fputc(cv[i], inst);
i++;
}
— Записываем все символы посимвольно из переменной cv в файл.
fclose(inst);
Form4->ShowModal();
— Закрывам файл, и отображаем форму со статистикой игры.
- Формы
В программе используются 4 формы, каждая из которых выполняет строго свои действия:
- MainForm – Главная форма, в которой и осуществляются все действия в игре. Из этой формы и вызываются все остальные формы. В этой форме и происходят все операции и управление над процессом загадывания/разгадывания слова. Программный код этой формы можно найти в листинге программы.
- About – Форма которая содержит только окно с информацией о программе, разработчике и лицензии. Эта форма вызывается в 2 случаях: при нажатии на кнопку “О программе”, и при выборе соответствующего меню.
- DialZagSlovo – Это форма, где вводится слово которое впоследствии надо будет разгадать..После ввода слова необходимо нажать на Ок.
- Statistica – Это форма, где куда ввыодится статистика об всех играх Эта форма появляется при завершении игры, либо при нажатии(выборе) соответствующей кнопки(меню).
- Переменные
Переменные – они используются абсолютно в любой программе, поэтому, естественно, здесь они также используются. Их названия и цель использования следующие:
FILE *intxt – Переменная типа файл, служит для обращения к файлу.
char ch – символ, используется для как временная для считывания одного символа из внешнего файла.
int Lsl типа integer – Это постоянная переменная, объявленная как глобальная. В ней хранится значение количества букв в слове.
int i типа integer — она используются как временная переменная, которая принимает разные значения. В всех формах они объявлены как локальные переменные в каждой отдельной процедуре.
- Компоненты
В Builder C++ очень большой мощной являются подключение компонентов. Компоненты – это уже ранее написанные программы, инсталлированные в Delphi, с помощью которых можно реализовывать дополнительные функции, не теряя время на создание собственных обработчиков событий, действий и т.д. В программе использованы только стандартные компоненты:
- TPanel – реализованная панель.
- TMenu – Верхняя(главная) меню.
- TSpeedButton – Кнопки.
- TLabel – Надпись на форме.
- TEdit – Поле для ввода текста.
- TImage – Панелька для отображения рисунка.
- TStatusBar – Строка состояния.
- Листинг программы
- About.Cpp
//—————————————————————————
#include <vcl.h>
#pragma hdrstop
#include «UgadSlovo.h»
#include «About.h»
#include «DialZagSlovo.h»
//—————————————————————————
#pragma package(smart_init)
#pragma resource «*.dfm»
TForm2 *Form2;
//—————————————————————————
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//—————————————————————————
void __fastcall TForm2::SpeedButton1Click(TObject *Sender)
{
Form2->Close();
}
//—————————————————————————
void __fastcall TForm2::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key==13)
SpeedButton1->Click();
}
//—————————————————————————
- UgadaiSlovo.Cpp
//—————————————————————————
#include <vcl.h>
#include <string.h>
#include <stdio.h>
#pragma hdrstop
#include «UgadSlovo.h»
#include «About.h»
#include «DialZagSlovo.h»
#include «Statistica.h»
//—————————————————————————
#pragma package(smart_init)
#pragma resource «*.dfm»
TForm1 *Form1;
int Lsl;
//—————————————————————————
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//—————————————————————————
void __fastcall Obnulenie()
{
Form1->Label1->Caption=»»;
Form3->Edit1->Text=»»;
Form1->GroupBox1->Visible=False;
Form1->GroupBox2->Visible=False;
Form1->RadioButton1->Checked=False;
Form1->RadioButton2->Checked=False;
Form1->RadioButton3->Checked=False;
Form1->StatusBar1->Panels->Items[1]->Text=»»;
Form1->StatusBar1->Panels->Items[2]->Text=»»;
Form1->StatusBar1->Panels->Items[3]->Text=»»;
Form1->Bukv->Enabled=False;
Form1->Slov->Enabled=False;
Form1->Otkaz->Enabled=False;
//Form1->MainMenu1->Items->Items[5]->Items[7]->Enabled=False;
//Form1->MainMenu1->Items->Items[5]->Items[8]->Enabled=False;
//Form1->MainMenu1->Items->Items[5]->Items[9]->Enabled=False;
}
//—————————————————————————
void __fastcall GameOver(int v, int p, int o)
{
Obnulenie();
Form1->Edit2->Text=»»;
FILE *inst;
char ch, cv[]=»18_11_03_»;
int i;
i=0;
inst = fopen(«stat.stt», «rt»);
while (!feof(inst))
{ch=fgetc(inst);
if (ch==’_’)
{
i=i+1;
if (i==1)
v=v+StrToInt(Form1->Edit2->Text);
if (i==2)
p=p+StrToInt(Form1->Edit2->Text);
if (i==3)
o=o+StrToInt(Form1->Edit2->Text);
Form1->Edit2->Text=»»;
}
else Form1->Edit2->Text=Form1->Edit2->Text + ch;
}
fclose(inst);
Form4->Label8->Caption=IntToStr(v);
Form4->Label9->Caption=IntToStr(p);
Form4->Label10->Caption=IntToStr(o);
Form4->Label7->Caption=IntToStr(v+p+o);
// cv=IntToStr(v+p+o)+»_»+IntToStr(v)+»_»+IntToStr(p)+»_»+IntToStr(o)
inst = fopen(«stat.stt», «wt»);
i=0;
while (cv[i])
{
fputc(cv[i], inst);
i++;
}
fclose(inst);
Form4->ShowModal();
}
//—————————————————————————
void __fastcall TForm1::CloseBClick(TObject *Sender)
{
Close();
}
//—————————————————————————
void __fastcall TForm1::NewUserClick(TObject *Sender)
{
if (StatusBar1->Panels->Items[3]->Text==»»)
{
Form3->Edit1->Text=»»;
Form3->ShowModal();
Lsl=Form3->Edit1->GetTextLen();
}
else ShowMessage(«Сначало завершите текущую игру….»);
}
//—————————————————————————
void __fastcall TForm1::AboutClick(TObject *Sender)
{
Form2->ShowModal();
}
//—————————————————————————
void __fastcall TForm1::HelpClick(TObject *Sender)
{
ShowMessage(«Извените, но справка недоступна……..»);
}
//—————————————————————————
void __fastcall TForm1::BukvClick(TObject *Sender)
{
RadioButton1->Checked=True;
Label2->Caption=»Ожидание ввода буквы»;
Edit1->Text=»»;
Edit1->Show();
GroupBox2->Show();
Edit1->MaxLength=1;
Edit1->SetFocus();
}
//—————————————————————————
void __fastcall TForm1::SlovClick(TObject *Sender)
{
RadioButton2->Checked=True;
Label2->Caption=»Ожидание ввода слова»;
Edit1->Text=»»;
Edit1->Show();
GroupBox2->Show();
Edit1->MaxLength=Lsl;
Edit1->SetFocus();
}
//—————————————————————————
void __fastcall TForm1::OtkazClick(TObject *Sender)
{
RadioButton3->Checked=True;
Label2->Caption=»Ожидание подтверждения»;
Edit1->Hide();
GroupBox2->Show();
}
//—————————————————————————
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
GroupBox2->Hide();
}
//—————————————————————————
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
int i,j;
if (RadioButton1->Checked==True)
{
Edit2->Text=»»;
for (i=1; i<=Lsl; i++)
if ((Form3->Edit1->Text[i]==Edit1->Text[1])&&(Label1->Caption[i]==’*’))
{
Edit2->Text=Edit2->Text+Edit1->Text[1];
StatusBar1->Panels->Items[2]->Text=IntToStr(StrToInt(StatusBar1->Panels->Items[2]->Text)+1);
}
else Edit2->Text=Edit2->Text+Label1->Caption[i];
Label1->Caption=Edit2->Text;
StatusBar1->Panels->Items[1]->Text=IntToStr(StrToInt(StatusBar1->Panels->Items[1]->Text)+1);
if (StatusBar1->Panels->Items[2]->Text==StatusBar1->Panels->Items[3]->Text)
{
ShowMessage(«Поздравляем, вы выйграли. Слово из » + IntToStr(Lsl) + » букв угадано за количество ходов: » + StatusBar1->Panels->Items[1]->Text);
GameOver(1,0,0);
}
}
if (RadioButton2->Checked==True)
{
if (Form3->Edit1->Text==Edit1->Text)
{
StatusBar1->Panels->Items[1]->Text=IntToStr(StrToInt(StatusBar1->Panels->Items[1]->Text)+1);
StatusBar1->Panels->Items[2]->Text=IntToStr(Lsl);
Label1->Caption=Form3->Edit1->Text;
ShowMessage(«Поздравляем, вы выйграли. Слово из » + IntToStr(Lsl) + » букв угадано за количество ходов: » + StatusBar1->Panels->Items[1]->Text);
GameOver(1,0,0);
}
else
{
Label1->Caption=Form3->Edit1->Text;
ShowMessage(«Вы проиграли. Загаданное слово следующее — » + Form3->Edit1->Text);
GameOver(0,1,0);
}
}
if (RadioButton3->Checked==True)
{
ShowMessage(«Вы отказались от игры, и тем самым вы проиграли. Загаданное слово следующее — » + Form3->Edit1->Text);
GameOver(0,0,1);
}
Edit1->Text=»»;
//RadioButton1->Checked=False;
//RadioButton2->Checked=False;
//RadioButton3->Checked=False;
//GroupBox2->Visible=False;
}
//—————————————————————————
void __fastcall TForm1::FormShow(TObject *Sender)
{
Obnulenie();
}
//—————————————————————————
void __fastcall TForm1::StatistClick(TObject *Sender)
{
GameOver(0,0,0);
}
//—————————————————————————
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key==13)
SpeedButton2->Click();
}
//—————————————————————————
void __fastcall TForm1::NewCompClick(TObject *Sender)
{
if (StatusBar1->Panels->Items[3]->Text==»»)
{
FILE *intxt;
char ch;
int i, it;
i=0;
Edit2->Text=»»;
randomize;
if ((intxt = fopen(«slova.txt», «rt»)) == NULL) //файл
ShowMessage(«Невозможно открыть файл slova.txt. Проверьте его наличие…..»);
while (!feof(intxt))
{ch=fgetc(intxt);
if (ch==’_’)
{
if (i==0)
it=(rand() % (StrToInt(Edit2->Text)-1))+1;
if (i==it)
Form3->Edit1->Text=Edit2->Text;
Edit2->Text=»»;
i=i+1;
}
else Edit2->Text=Edit2->Text + ch;
}
fclose(intxt);
Form3->SpeedButton1->Click();
Lsl=Form3->Edit1->GetTextLen();
}
else ShowMessage(«Сначало завершите текущую игру….»);
}
//—————————————————————————
- DialZagSlovo.Cpp
//—————————————————————————
#include <vcl.h>
#pragma hdrstop
#include «UgadSlovo.h»
#include «About.h»
#include «DialZagSlovo.h»
#include «string.h»
#include «mbstring.h»
#include «stdlib.h»
//—————————————————————————
#pragma package(smart_init)
#pragma resource «*.dfm»
TForm3 *Form3;
int Lsl;
//—————————————————————————
__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
}
//—————————————————————————
void __fastcall TForm3::SpeedButton2Click(TObject *Sender)
{
Form3->Close();
}
//—————————————————————————
void __fastcall TForm3::SpeedButton1Click(TObject *Sender)
{
if (Edit1->Text!=»»)
{
int i;
Lsl=Form3->Edit1->GetTextLen();
Form1->Label1->Caption=»»;
for (i=1; i<=Lsl; i++)
Form1->Label1->Caption=Form1->Label1->Caption + «*»;
Form1->StatusBar1->Panels->Items[1]->Text=»0″;
Form1->StatusBar1->Panels->Items[2]->Text=»0″;
Form1->StatusBar1->Panels->Items[3]->Text=IntToStr(Lsl);
//Form1->StatusBar1->Panels->Items[0]->Text=»»;
Form1->GroupBox1->Visible=True;
Form3->Close();
Form1->Bukv->Enabled=True;
Form1->Slov->Enabled=True;
Form1->Otkaz->Enabled=True;
// Form1->MainMenu1->Items-
// Form1->MainMenu1->Items->Items[5]->Items[8]->Enabled=True;
// Form1->MainMenu1->Items->Items[5]->Items[9]->Enabled=True;
}
else ShowMessage(«Сначало введите слово….»);
}
//—————————————————————————
void __fastcall TForm3::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key==13)
SpeedButton1->Click();
if (Key==27)
SpeedButton2->Click();
}
//—————————————————————————
- Statistica.Cpp
//—————————————————————————
#include <vcl.h>
#pragma hdrstop
#include «Statistica.h»
//—————————————————————————
#pragma package(smart_init)
#pragma resource «*.dfm»
TForm4 *Form4;
//—————————————————————————
__fastcall TForm4::TForm4(TComponent* Owner)
: TForm(Owner)
{
}
//—————————————————————————
void __fastcall TForm4::SpeedButton1Click(TObject *Sender)
{
Form4->Close();
}
//—————————————————————————
void __fastcall TForm4::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key==13)
SpeedButton1->Click();
}
//—————————————————————————
- Используемая литература
- Бухгалтерский учет – Г.И. Иванов, Е.А. Мизинский.
Москва “Финансы и статистика” 1988
- FAQ for Delphi – Интернет.
Сайты – DelphiKing.ru, MasterDelphy.com
- Самоучитель по Delphi