|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.04.2020, 04:58 | #1 |
Новичок
Джуниор
Регистрация: 28.04.2020
Сообщений: 7
|
Нужно добавить окно выхода из программы с кнопками "Да" и "Нет". По кнопке "Нет" окно не закрывается. В чем проблема?
С помощью mrYes кнопка да работает, но не пойму как сделать, чтобы кнопка Нет работала с помощью mrNo
Lazarus unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, Math, Unit2, LMessages; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FormResize(Sender: TObject); private public end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var per0,per: real; //Проценты kred, srok: integer; //Сумма кредита и срок An, perep: real; //Ежемесячный платеж и переплата begin try kred:=StrToInt(Edit1.Text); per0:=StrToFloat(Edit2.Text); srok:=StrToInt(Edit3.Text); per:=per0/(100*12); //ставка по займу в месяц An:=kred*per*power((1+per), srok)/(power((1+per), srok) - 1); perep:=srok*An-kred; Label5.Caption:='Ежемесячный платеж = ' + FloatToStrF(An,ffFixed, 4,2) + #13 + 'Переплата = ' + FloatToStrF(perep,ffFixed, 4,2); except on Err:EConvertError do begin Label5.Caption:='Error: '+ Err.message end; on Err:EInOutError do begin Label5.Caption:='Error: '+ Err.message end; on Err:EZeroDivide do begin Label5.Caption:='Error: '+ Err.message end; {on Err:EMatchError do begin Label5.Caption:='Error: '+ Err.message end;} end end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=form2.ShowModal = mrYes; end; procedure TForm1.FormResize(Sender: TObject); begin Button1.Left:=Form1.Width-145; Button1.top:=Form1.height-175; Button2.Left:=Form1.Width-145; Button2.top:=Form1.height-100; end; end. Последний раз редактировалось Sergio7; 28.04.2020 в 06:17. |
28.04.2020, 06:19 | #2 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|
28.04.2020, 06:43 | #3 |
Новичок
Джуниор
Регистрация: 28.04.2020
Сообщений: 7
|
evg_m,
Не совсем понял как именно я должен в этом месте написать, не судите строго, я учусь Просто пр нажатии на НЕТ ничего не происходит, а по идее должно закрыться окно с самим вопросом о закрытии программы procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=form2.ShowModal = mrYes; end; //здесь написать procedure TForm1.FormResize(Sender: TObject); begin Button1.Left:=Form1.Width-145; Button1.top:=Form1.height-175; Button2.Left:=Form1.Width-145; Button2.top:=Form1.height-100; end; end. Последний раз редактировалось Sergio7; 28.04.2020 в 06:50. |
28.04.2020, 06:57 | #4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
вы написали (ваш код)
можно закрывать (CanClose =true) только если нажата кнопка ДА(Showmodal=mryes) и нельзя (canclose =false) закрывать во всех прочих случаях. если надо закрывать всегда (CanClose:=true; ) если там есть и другие кнопки кроме ДА/НЕТ Код:
программа — запись алгоритма на языке понятном транслятору
|
28.04.2020, 08:19 | #5 |
Новичок
Джуниор
Регистрация: 28.04.2020
Сообщений: 7
|
Извините за несообразительность, но что я делаю не так?
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=form2.ShowModal=mrYes; CanClose:=( ShowModal=mrYes ) or ( ShowModal=mrNo ); end; |
28.04.2020, 08:21 | #6 |
Новичок
Джуниор
Регистрация: 28.04.2020
Сообщений: 7
|
evg_m,
Извините за несообразительность, но что я делаю не так? procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=form2.ShowModal=mrYes; CanClose:=( ShowModal=mrYes ) or ( ShowModal=mrNo ); end; |
28.04.2020, 08:27 | #7 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
у вас ДВА последовательных показа формы и каждый из показов сравнивается с ОДНИМ из вариантов.
1. для сравнения с mrYes;( ShowModal=mryes) 2. для сравнения с mrno (Showmodal=mrno)
программа — запись алгоритма на языке понятном транслятору
|
28.04.2020, 09:11 | #8 |
Новичок
Джуниор
Регистрация: 28.04.2020
Сообщений: 7
|
evg_m,
То есть мы должны показать формы как то так? Но тогда как соотнести mrNo именно с кнопкой НЕТ procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=form2.ShowModal = mrYes; end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=form2.ShowModal = mrNo; end; |
28.04.2020, 09:21 | #9 | |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
Может легче на кнопку закрытия формы повесить MessageBox ?
https://stackoverflow.com/questions/...r-messageboxes Цитата:
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
|
28.04.2020, 10:21 | #10 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
начнем сначала.
Где расположены эти кнопки(ДА/НЕТ) ?на какой форме(Form1 /Form2) ? Что хотим сделать при нажатии НЕТ и и при нажатии ДА ? своими словами (без кода).
программа — запись алгоритма на языке понятном транслятору
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[Delphi] Игра Пятнашки. Помогите пожалуйста добавить окно "Вы выиграли", когда комбинация будет собрана правильно, и добавить кнопку "Новая игра" | Аня20 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 02.06.2017 08:12 |
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" | Бахтиёр1916 | Windows | 1 | 05.04.2017 12:53 |
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") | ZIRASS | PHP | 4 | 15.06.2016 14:23 |
Для заданной строки определить все входящие в неё символ. Например: строка "abccbbabbac" состоит из символов "a", "b" и "c" | Sandakan01 | Помощь студентам | 1 | 24.02.2016 03:20 |