Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1211479643
Рома
2008-05-22 22:07
2008.06.15
как сделать перевод с 10-й системы числения в 2-ю, 8-ю и 16-иричн


2-1211215934
ЗфдЗфднсп
2008-05-19 20:52
2008.06.15
вопросик по Oracle


15-1209891636
Kerk
2008-05-04 13:00
2008.06.15
Производительность и PHP


2-1211272132
ekto
2008-05-20 12:28
2008.06.15
Объявить константу-массив


6-1188995111
ЗабылИмя
2007-09-05 16:25
2008.06.15
Как через сеть включить удалённый компьютер?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский