Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2024, 16:42   #1
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,552
По умолчанию очистить файл данных, предварительно спросив пользователя уверен ли он, да или нет, Yes - No

Дельфи - 7 , ежели что.
Вопрос простой, как лопата: очистить файл данных, предварительно подумав: "Are You shure?"
Пролистав несколько выданных Гугулем источников, остановился на самом простом, как показалось:
Код:
procedure TForm1.MessageDlgButtonClick(Sender: TObject);
  var  rez : TModalResult;
  begin  rez := MessageDlg('Перед вами пример использования функции MessageDlg?', mtError, [mbOk, mbNo], 0); 
// выводим сообщение об ошибке с кнопками OK и NO 
 if rez = mrOk then ShowMessage('Вы согласились');
 // если нажали ОК, то появляется сообщение о том что мы согласились 
 if rez = mrNo then ShowMessage('Вы не согласились');
 // если нажали NO, то появляется сообщение о том что мы не согласились  end;
Но каким боком присобачить его к обработчику моей кнопки - не могу сообразить. Видно, порог вхождения уже высоковат для меня. Накропал такую убогую:
Код:
procedure TForm1.Button5Click(Sender: TObject);
begin
 But_Y.Visible := True ;
 But_N.Visible := True ;
end;

procedure TForm1.But_YClick(Sender: TObject);
begin
//  тут очистка файла данных
 But_Y.Visible := False ;
 But_N.Visible := False ;
end;

procedure TForm1.But_NClick(Sender: TObject);
begin
 But_Y.Visible := False ;
 But_N.Visible := False ;
end;
Изначально кнопки Yes No невидимы.
Работает, но ведь это - чистый колхоз. Кстати, пробовал эти две кнопки закинуть в GroupBox, но тоже облом: при свойстве этого бокса Visual False он-то невидим, но кнопки видны хучь убей. Видно, от простого перетаскивания он их не воспринимает своими, нужны какие-то манипуляции.
В общем, если бы кто пролил свет на этот Хатуль Мадан ShowModal - был бы ему очень благодарен.
Для ясности - прогу делал не для коммерческого использования, а чтоб наглядно отображать профиль АД своего ушатанного здоровья.
Изображения
Тип файла: jpg 1.jpg (3.3 Кб, 30 просмотров)

Последний раз редактировалось digitalis; 12.04.2024 в 16:56.
digitalis вне форума Ответить с цитированием
Старый 12.04.2024, 23:22   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Дельфи - 7 , ежели что.
Вопрос простой, как лопата: очистить файл данных, предварительно подумав: "Are You shure?"
есть форма (TForm1)
на ней есть кнопка "очистить" (buttonClear)
при нажатии хотим задать вопрос ("подумать")
и выполнить действия в соответствии с выбором варианта (yes|no)
ТАК ?

Код:
procedure TForm1.buttonClearClick(sender: TObject);
var
  res: integer;
begin
 // задаем вопрос ждем и получаем ответ res
  res:=MessageDlg('что хотим спросить'....);
   
 // после этого (здесь же) анализируем и действуем
  case res of 
  mrok, mryes: // при согласии
  mrno, mrcancel: // и при отказе
  else // и во всех прочих случаях
  end;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 12.04.2024, 23:29   #3
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Так вопрос с модальными окнами или обработкой результата от MessageDlg?
Если нужно использовать MessageDlg, то
Код:
procedure TFrmMain.Your_buttonClick(Sender: TObject);
var
  mr:Cardinal;
begin
//на onclick вашей кнопки:
  mr:= MessageDlg('Вы уверены?', mtConfirmation, [mbYes, mbNo], 0);
//где mr- переменная которая принимает modal result от MessageDlg
//mtConfirmation - тип сообщения (mtConfirmation,mtWarning,mtError, и тп)
//[mbYes, mbNo] массив кнопок, в зависимости от него резульат будет принимать
// соответсввенно mrYes или mrNo или
  case mr of
    mrYes:begin
             //была нажата кнопка yes
          end;
    mrNo: begin
             //была нажата кнопка no
          end;
    mrCancel: begin
             //диалог просто закрыт
           end;
  end;
end;
Если нужно обработать результат от показа модальной формы, то как в прикреплении
Вложения
Тип файла: 7z Modal Forms.7z (47.4 Кб, 0 просмотров)

Последний раз редактировалось DIONISKA; 12.04.2024 в 23:31.
DIONISKA вне форума Ответить с цитированием
Старый 13.04.2024, 09:31   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,552
По умолчанию

Цитата:
Сообщение от DIONISKA Посмотреть сообщение
Так вопрос с модальными окнами или обработкой результата от MessageDlg?
Я в этом не сильно копенгаген, для меня это всё едино - надо лишь заменить этот мой сельхозпосёлок на что-то общепринятое. MessageDlg - это системная функция? Компонент? В каком unit оно uses ? Или оно "само приползёт", достаточно лишь сформировать вызов функции?
Спасибо отозвавшимся. Материал для размышления есть, буду стараться вникнуть и прокачать свои старческие skills.
----------------
Вот ответили - и нашлось в сети боле-мене внятное описание вместо того бормотания, что получал ранее по ссылкам. Чудеса!

Последний раз редактировалось digitalis; 13.04.2024 в 09:43. Причина: уточням
digitalis вне форума Ответить с цитированием
Старый 13.04.2024, 09:41   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Как вариант лучше использовать виндовый MessageBox
FaTaL вне форума Ответить с цитированием
Старый 13.04.2024, 11:58   #6
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
В каком unit
для D6/D7/Lazarus юнит Dialogs, для версий поновее Vcl.Dialogs. В обоих случаях они обычно уже подключены в пустом VCL проекте.
DIONISKA вне форума Ответить с цитированием
Старый 13.04.2024, 16:31   #7
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

digitalis, вы посмтоянно возмущаетесь как новички называют свои темы, а сами даже пример не показали, мне пришлось переименовывать на то как я понял ваш вопрос.
Alar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Qt очистить файл SAMOUCHKA Qt и кроссплатформенное программирование С/С++ 1 16.10.2017 19:44
Напишите программу на языке Си расчета y и z по формулам. Предусмотрите ввод исходных данных с экрана дисплея. Предварительно вычислите ожидаемые значения y и z с помощью калькулят Владимир20178 Помощь студентам 4 29.06.2017 05:46
как очистить файл??? Shahzod Общие вопросы C/C++ 1 13.12.2013 10:38
Открытие файла, предварительно загруженного в файл ресурсов Win32 приложения alexandersson Win Api 1 16.04.2011 21:54
Очистить файл С++ noob_11 Помощь студентам 1 13.05.2010 22:41