Форум: "Начинающим";
Текущий архив: 2008.06.15;
Скачать: [xml.tar.bz2];
ВнизОкно подтверждения Найти похожие ветки
← →
snake-as © (2008-05-21 04:11) [0]Здравствуйте. У меня очень простой вопрос. Мне нужно, чтобы когда пользователь хочет, напрмер, что-то создать, вылазило окошко "Введите имя...", если он нажимал Ок, то все проходило, если Cancel, напрмер, то нет. Я думаю, я понятно высказал, что хотел:) Подскажите, пожалуйста.
← →
brother © (2008-05-21 07:23) [1]В орешник... Ошибка в 17 строке...
Автор, умей изъясняться и будет те счастье...
← →
Юрий Зотов © (2008-05-21 08:33) [2]> 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;
← →
Юрий Зотов © (2008-05-21 10:23) [3]Поправка - переменную Name назовите как-нибудь иначе.
← →
han_malign © (2008-05-21 10:39) [4]uses Dialogs;
...
var nameStr: string;
...
if( InputQuery("Ты кто?", "Введите имя", nameStr) )then begin
LetsGo(nameStr);
end;
← →
Mozgan (2008-05-21 11:16) [5]А ещё такое код есть...
Только и правда, в орехи тебя. Сам туда иногда попадаю :))).
Но нужно как следует почитать книжки, хелпы.... и включать голову, экспериментируя.procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
case messagebox(application.Handle,"Завершить работу программы?","Внимание!",mb_okcancel) of
idok: begin application.Terminate; end;
idcancel: exit;
end;
end;
← →
Ega23 © (2008-05-21 11:17) [6]
> Mozgan (21.05.08 11:16) [5]
Убить за такое.
← →
Mozgan (2008-05-21 11:37) [7]Почему убивать ??????
Ведь это тоже выбор.
Если нажата кнопка ОК - действие 1
Если нажата кнопка cancel - другое действие.
В принципе разницы нет, как мне кажется. Каждый решает проблему по-своему.
← →
Ega23 © (2008-05-21 11:43) [8]
> Ведь это тоже выбор.
Не за выбор, а за Application.Terminate в данной ситуации.
← →
Mozgan (2008-05-21 11:54) [9]про Application.terminate я согласен. Лучше Close, но почему тогла у нас с ВУЗе препод то и дело твердит про Application.terminate. Аж "пару" ставит если упоминается Close. Чудак однако :)
← →
Ega23 © (2008-05-21 12:00) [10]
> Лучше 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 не отработает. А на нём много интересного может висеть : закрытие наборов данных, отпись в лог, уничтожение каких-то объектов и т.п.
← →
Ega23 © (2008-05-21 12:01) [11]Преподу передавай привет.
← →
Mozgan (2008-05-21 12:15) [12]Про 10 пост АБСАЛЮТНА согласен! Преподу не только превед, но и пальчиком по виску повертеть! :)))
← →
Ega23 © (2008-05-21 12:21) [13]
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;
← →
Leonid Troyanovsky © (2008-05-21 15:42) [14]
> Ega23 © (21.05.08 12:21) [13]
> Вообще такой код пишется немного не так:
Конечно, не так.
RTFM: WM_QUERYENDSESSION
--
Regards, LVT.
← →
Ega23 © (2008-05-21 15:50) [15]
> RTFM: WM_QUERYENDSESSION
И нафига???
← →
Anatoly Podgoretsky © (2008-05-21 15:52) [16]
> И нафига???
Когда посадишь какую ни будь важную базу, то поймешь.
Он же препятсвывает выключению Виндоус.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.06.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c