![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Окно подтверждения
snake-as © (2008-05-21 04:11:00)Здравствуйте. У меня очень простой вопрос. Мне нужно, чтобы когда пользователь хочет, напрмер, что-то создать, вылазило окошко "Введите имя...", если он нажимал Ок, то все проходило, если Cancel, напрмер, то нет. Я думаю, я понятно высказал, что хотел:) Подскажите, пожалуйста.
Anatoly Podgoretsky (2008-05-21 15:52:00) [1]
> И нафига???
Когда посадишь какую ни будь важную базу, то поймешь.
Он же препятсвывает выключению Виндоус.
Ega23 (2008-05-21 15:50:00) [2]
> RTFM: WM_QUERYENDSESSION
И нафига???
Leonid Troyanovsky (2008-05-21 15:42:00) [3]
> Ega23 © (21.05.08 12:21) [13]
> Вообще такой код пишется немного не так:
Конечно, не так.
RTFM: WM_QUERYENDSESSION
--
Regards, LVT.
Ega23 (2008-05-21 12:21:00) [4]
procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
case messagebox(application.Handle,'Завершить работу программы?','Внимание!',mb_okcancel) of
idok: begin application.Terminate; end;
idcancel: exit;
end;
end;
Вообще такой код пишется немного не так:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := (MessageBox(Handle, PChar('Завершить работу?'), PChar('Ахтунг!'),
MB_OKCANCEL or MB_ICONINFORMATION)=IDOK);
end;
Mozgan (2008-05-21 12:15:00) [5]Про 10 пост АБСАЛЮТНА согласен! Преподу не только превед, но и пальчиком по виску повертеть! :)))
Ega23 (2008-05-21 12:01:00) [6]Преподу передавай привет.
Ega23 (2008-05-21 12:00:00) [7]
> Лучше Close, но почему тогла у нас с ВУЗе препод то и дело
> твердит про Application.terminate. Аж "пару" ставит если
> упоминается Close. Чудак однако :)
Ну вот, например:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ShowMessage('Do something');
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
Close;
end;
В случае Application.Terminate событие TForm.OnClose не отработает. А на нём много интересного может висеть : закрытие наборов данных, отпись в лог, уничтожение каких-то объектов и т.п.
Mozgan (2008-05-21 11:54:00) [8]про Application.terminate я согласен. Лучше Close, но почему тогла у нас с ВУЗе препод то и дело твердит про Application.terminate. Аж "пару" ставит если упоминается Close. Чудак однако :)
Ega23 (2008-05-21 11:43:00) [9]
> Ведь это тоже выбор.
Не за выбор, а за Application.Terminate в данной ситуации.
Mozgan (2008-05-21 11:37:00) [10]Почему убивать ??????
Ведь это тоже выбор.
Если нажата кнопка ОК - действие 1
Если нажата кнопка cancel - другое действие.
В принципе разницы нет, как мне кажется. Каждый решает проблему по-своему.
Ega23 (2008-05-21 11:17:00) [11]
> Mozgan (21.05.08 11:16) [5]
Убить за такое.
Mozgan (2008-05-21 11:16:00) [12]А ещё такое код есть...
Только и правда, в орехи тебя. Сам туда иногда попадаю :))).
Но нужно как следует почитать книжки, хелпы.... и включать голову, экспериментируя.
procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
case messagebox(application.Handle,'Завершить работу программы?','Внимание!',mb_okcancel) of
idok: begin application.Terminate; end;
idcancel: exit;
end;
end;
han_malign (2008-05-21 10:39:00) [13]uses Dialogs;
...
var nameStr: string;
...
if( InputQuery('Ты кто?', 'Введите имя', nameStr) )then begin
LetsGo(nameStr);
end;
Юрий Зотов (2008-05-21 10:23:00) [14]Поправка - переменную Name назовите как-нибудь иначе.
Юрий Зотов (2008-05-21 08:33:00) [15]> snake-as © (21.05.08 04:11)
Делаем форму (например, класс TForm2). На ней Edit1 (куда вводится имя) и 2 кнопки (ОК и Отмена). Настройки:
Форма.BorderStyle = bsDialog
OK.Default = True
Oтмена.Cancel = True
Oтмена.ModalResult = mrCancel
Пишем обработчик события OК.OnClick:
if Edit1.Text = '' then
ShowMessage('Необходимо ввести имя')
else
ModalResult := mrOK;
В другой форме есть кнопка (пункт меню и т.п.) "Создать". В обработчике события OnClick пишем:
var
Name: string;
begin
with TForm2.Create(nil) fo
try
if ShowModal = mrOk then
begin
Name = Edit1.Text; // Получаем строку, которую ввел юзер
... // Здесь создаем то, что хотели
end;
finally
Free;
end;
end;
brother (2008-05-21 07:23:00) [16]В орешник... Ошибка в 17 строке...
Автор, умей изъясняться и будет те счастье...