![]() |
|
#1
|
|||
|
|||
![]() Здравствуйте, помогите заставить работать программу, все есть осталось вставить код, не хватает ума запустить готовое
![]() |
#2
|
||||
|
||||
![]() У как запущено. Сюда выложить не судьба?
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() Документ много весит
|
#4
|
||||
|
||||
![]() "Выдирайте" код и выкладывайте.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
![]() Код:
Листинг программы создания главного окна unit mag2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, Mask, ExtCtrls, Menus; type TForm1 = class(TForm) Panel1: TPanel; //Панель, на которой размещены кнопки Lb1: TLabel; //Метка, для вывода комментариев к программе MEd1: TMaskEdit; //Поля с маской ввода - для заполнения квадрата MEd2: TMaskEdit; MEd3: TMaskEdit; MEd4: TMaskEdit; MEd5: TMaskEdit; MEd6: TMaskEdit; MEd7: TMaskEdit; MEd8: TMaskEdit; MEd9: TMaskEdit; Button1: TButton; //Кнопка "Проверить" BitBtn1: TBitBtn; //Кнопка "Close" Button2: TButton; //Кнопка "Начать" MainMenu1: TMainMenu; //Главное меню формы Help1: TMenuItem; //Один пункт меню "Help" N1: TMenuItem; //Пункт подменю "Магический квадрат" N2: TMenuItem; //Пункт подменю "Правила игры" procedure FormActivate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Bitmap:TBitmap; //фоновая картинка implementation uses dialog_mag, dialog_pravila; var x,y:integer; //х - начальное число, с которого заполняем таблицу, //у - номер способа очистки клеток z:boolean; //Индикатор правильности заполнения пользователем пустых клеток {$R *.dfm} procedure TForm1.FormPaint(Sender: TObject); //Процедура рисования фона формы begin Bitmap:=TBitmap.Create; //Создание объекта-битового образа Bitmap.LoadFromFile('ris.bmp'); //Загрузка битового изображения из файла Canvas.StretchDraw(Rect(0, 0, Form1.clientWidth, Form1.clientHeight),Bitmap); //Рисование и заполнение формы рисунком Bitmap end; procedure TForm1.FormCanResize(Sender: TObject; var NewWidth, //Процедура, NewHeight: Integer; var Resize: Boolean); //запрещающая изменение размеров формы begin Resize:=false; end; procedure TForm1.FormActivate(Sender: TObject); //Активизация формы begin Caption:='Магический квадрат'; //Установить заголовок формы "Магический квадрат" Button2.Show; //Показать кнопку "Начать" Button1.Hide; //Спрятать кнопку "Проверить" end; procedure TForm1.Button2Click(Sender: TObject); //Обработка нажатия кнопки "Начать" procedure zapolnenie(x,y:integer);//Процедура заполнения begin MEd1.ReadOnly:=false; //Очищаем поля ввода MEd2.ReadOnly:=false; MEd3.ReadOnly:=false; MEd4.ReadOnly:=false; MEd5.ReadOnly:=false; MEd6.ReadOnly:=false; MEd7.ReadOnly:=false; MEd8.ReadOnly:=false; MEd9.ReadOnly:=false; MEd2.Text:=IntToStr(x); //Заполняем поля ввода числами, MEd9.Text:=IntToStr(x+1); //которые преобразовываем MEd4.Text:=IntToStr(x+2); //к строковому представлению MEd7.Text:=IntToStr(x+3); MEd5.Text:=IntToStr(x+4); MEd3.Text:=IntToStr(x+5); MEd6.Text:=IntToStr(x+6); MEd1.Text:=IntToStr(x+7); MEd8.Text:=IntToStr(x+8); Case y of //Выбираем способ удаления значений некоторых клеток 0:begin MEd4.Text:=''; MEd4.SetFocus; //Удаляем число из поля MEd5.Text:=''; MEd5.SetFocus; //и передаем ему фокус ввода MEd8.Text:=''; MEd8.SetFocus; MEd9.Text:=''; MEd9.SetFocus; MEd1.ReadOnly:=true; //Запрещаем ввод чисел и изменение остальных полей MEd2.ReadOnly:=true; MEd3.ReadOnly:=true; MEd6.ReadOnly:=true; MEd7.ReadOnly:=true; end; 1:begin MEd2.Text:=''; MEd2.SetFocus; MEd5.Text:=''; MEd5.SetFocus; MEd6.Text:=''; MEd6.SetFocus; MEd8.Text:=''; MEd8.SetFocus; MEd1.ReadOnly:=true; MEd3.ReadOnly:=true; MEd4.ReadOnly:=true; MEd7.ReadOnly:=true; MEd9.ReadOnly:=true; end; 2:begin MEd1.Text:=''; MEd1.SetFocus; MEd2.Text:=''; MEd2.SetFocus; MEd4.Text:=''; MEd4.SetFocus; MEd6.Text:=''; MEd6.SetFocus; MEd9.Text:=''; MEd9.SetFocus; MEd3.ReadOnly:=true; MEd5.ReadOnly:=true; MEd7.ReadOnly:=true; MEd8.ReadOnly:=true; end; 3:begin MEd3.Text:=''; MEd3.SetFocus; MEd4.Text:=''; MEd4.SetFocus; MEd6.Text:=''; MEd6.SetFocus; MEd7.Text:=''; MEd7.SetFocus; MEd8.Text:=''; MEd8.SetFocus; MEd1.ReadOnly:=true; MEd2.ReadOnly:=true; MEd5.ReadOnly:=true; MEd9.ReadOnly:=true; end; end; Lb1.Caption:='Заполни пустые клетки магического квадрата'; //Появление соответствующей надписи в метке Button1.Show; //Показать кнопку "Проверить" Button2.Hide; //Спрятать кнопку "Начать" end; BEGIN if z then //Проверка правильности вввода недостающих чисел zapolnenie(x,y) //Заполнение "Попробуй еще раз" старыми значениями х и у else //Заполняем в первый раз и при каждом правильном решении begin y:=random(4); //Выбираем случайным образом способ удаления значений полей x:=Random(100); //Выбираем число, которым начинаем заполнение полей zapolnenie(x,y); //заполняем квадрат end; end; procedure TForm1.Button1Click(Sender: TObject); //Обработка нажатия кнопки "Проверить" var s1,s2,s3,s4,s5,s6,s7,s8:integer; //Суммы в строках, столбцах, диагоналях begin try //Пробуем преобразовать в числовое представление значения полей //и находим соответствующие суммы s1:=StrToInt(Trim(MEd1.Text))+ StrToInt(Trim(MEd2.Text))+ StrToInt(Trim(MEd3.Text)); s2:=StrToInt(Trim(MEd4.Text))+ StrToInt(Trim(MEd5.Text))+ StrToInt(Trim(MEd6.Text)); s3:=StrToInt(Trim(MEd7.Text))+ StrToInt(Trim(MEd8.Text))+ StrToInt(Trim(MEd9.Text)); s4:=StrToInt(Trim(MEd1.Text))+ StrToInt(Trim(MEd4.Text))+ StrToInt(Trim(MEd7.Text)); s5:=StrToInt(Trim(MEd2.Text))+ StrToInt(Trim(MEd5.Text))+ StrToInt(Trim(MEd8.Text)); s6:=StrToInt(Trim(MEd3.Text))+ StrToInt(Trim(MEd6.Text))+ StrToInt(Trim(MEd9.Text)); s7:=StrToInt(Trim(MEd3.Text))+ StrToInt(Trim(MEd5.Text))+ StrToInt(Trim(MEd7.Text)); s8:=StrToInt(Trim(MEd1.Text))+ StrToInt(Trim(MEd5.Text))+ StrToInt(Trim(MEd9.Text)); If (s1=s2) and (s2=s3) and (s3=s4) and (s4=s5) and (s5=s6) and (s6=s7) and (s7=s8) then //Если все суммы равны begin Lb1.Caption:='Молодец! Все верно!' ; //Выводим в метке //соответствующую надпись z:=false; //z определяет, что заполнение следующих значений квадрата //нужно начать с новой генерации начального значения х и способа удаления у Button2.Show; //Показать кнопку "Начать" Button1.Hide; //Спрятать кнопку "Проверить" end else //Если хоть одна сумма отлична от других begin Lb1.Caption:='Попробуй еще раз'; //Выводим в метке соответствующую надпись z:=true; //z определяет, что заполнение квадрата //нужно произвести старыми значениями х и у Button2.Show; //Показать кнопку "Начать" Button1.Hide; //Спрятать кнопку "Проверить" end; Except //Если преобразовать в числовое представление значения полей // не удалось (какое-то поле осталось не заполнено) MessageBeep(mb_Ok); //Звуковой сигнал ShowMessage('Не все клетки заполнены!'); //Вывод окна сообщения Exit; //Выход из процедуры end; end; procedure TForm1.N1Click(Sender: TObject); //Выбор меню "Магический квадрат" begin OKBottomDlg.Show; //Показ диалогового окна "Магический квадрат" end; procedure TForm1.N2Click(Sender: TObject); //Выбор меню "Правила игры" begin OKBottomDlg1.Show; //Показ диалогового окна "Правила игры" end; end. Листинг модуля вызова диалогового окна «Магический квадрат» unit dialog_mag; interface uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Buttons, ExtCtrls, Grids; type TOKBottomDlg = class(TForm) OKBtn: TButton; //Кнопка "ОК" Bevel1: TBevel; //Кромка Memo1: TMemo; //Текстовое поле StringGrid1: TStringGrid; //Текстовая таблица procedure OKBtnClick(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } public { Public declarations } end; var OKBottomDlg: TOKBottomDlg; Bitmap1:TBitmap; //фоновая картинка StringGrid1:TStringGrid; implementation {$R *.dfm} procedure TOKBottomDlg.FormPaint(Sender: TObject);//Процедура рисования фона формы procedure zapoln; begin StringGrid1.Cells[0,0]:='8'; //Заполнение таблицы числами StringGrid1.Cells[0,1]:='1'; StringGrid1.Cells[0,2]:='6'; StringGrid1.Cells[1,0]:='3'; StringGrid1.Cells[1,1]:='5'; StringGrid1.Cells[1,2]:='7'; StringGrid1.Cells[2,0]:='4'; StringGrid1.Cells[2,1]:='9'; StringGrid1.Cells[2,2]:='2'; end; BEGIN Bitmap1:=TBitmap.Create; //создание объекта-битового образа Bitmap1.LoadFromFile('fon.bmp'); //Загрузка битового изображения из файла Canvas.StretchDraw(Rect(0, 0, OKBottomDlg.clientWidth, OKBottomDlg.clientHeight),Bitmap1); //Рисование и заполнение формы рисунком Bitmap zapoln; //Вызов процедуры заполнения таблицы числами end; procedure TOKBottomDlg.OKBtnClick(Sender: TObject); begin OKBottomDlg.Close; //Закрытие окна по щелчку кнопки "OK" end; end. Листинг модуля вызова диалогового окна «Правила игры» unit dialog_pravila; interface uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Buttons, ExtCtrls; type TOKBottomDlg1 = class(TForm) OKBtn: TButton; //Кнопка "ОК" Bevel1: TBevel; //Кромка Memo1: TMemo; //Текстовое поле procedure OKBtnClick(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } public { Public declarations } end; var OKBottomDlg1: TOKBottomDlg1; Bitmap2:TBitmap; //фоновая картинка implementation {$R *.dfm} procedure TOKBottomDlg1.FormPaint(Sender: TObject);//Процедура рисования фона формы begin Bitmap2:=TBitmap.Create; //создание объекта-битового образа //Загрузка битового изображения из файла Bitmap2.LoadFromFile('fon.bmp'); Canvas.StretchDraw(Rect(0, 0, OKBottomDlg1.clientWidth, OKBottomDlg1.clientHeight),Bitmap2); //Рисование и заполнение формы рисунком Bitmap end; procedure TOKBottomDlg1.OKBtnClick(Sender: TObject); begin OKBottomDlg1.Close; //Закрытие окна по щелчку кнопки "OK" end; end. |
#6
|
||||
|
||||
![]() И чего? Создаёте новый проект, кидаете на форму те контролы, что перечислены в коде, создаёте те события, что нужны для контролов и вставляете нужный код из приведённого здесь. Повторяете для второй формы. Не торопясь, за полчаса справитесь.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
|||
|
|||
![]() За такой код руки надо отрывать.
|
#9
|
||||
|
||||
![]() Цитата:
![]() Были бы dfm-файлы - восстановление проекта было бы тривиальной задачей. Впрочем и так никаких сложностей нет, да ещё и комментарии сильно помогают. |
#10
|
|||
|
|||
![]() Цитата:
|
#11
|
|||
|
|||
![]() что то у меня не получается ошибки всякие выдает
|
#12
|
||||
|
||||
![]() Экстрасенсы в отпуске.
Какие ошибки то? Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#13
|
|||
|
|||
![]() Создала 3 формы, вставила код на ждую форму пытаюсь делать по инструкции, вылазит ошибка: Error in module dialog_mag: Declaration of class TForm2 is missing or incorect.
|
#14
|
|||
|
|||
![]() Теперь пишет [Error] mag2.pas(188): Undeclared identifier: 'Show'
|
#15
|
|||
|
|||
![]() Приложила файл может кто поможет
|