![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Диалоговое окно
Дядя © (2007-06-27 11:00:00)У меня возник такой вот вопрос: что надо сделать, чтобы при нажатии такой-то кнопки появлялось отдельное диалоговое окно, там, с опциями какими нибудь?
Alex721 (2007-06-27 15:47:00) [1]Хорошая идея проги найдена здесь:
http://www.delux-company.narod.ru/files/MsgBoxWizard.rar
{RASkov} (2007-06-27 14:37:00) [2]> А как без переменной? Через with?
procedure TForm1.Button1Click(Sender: TObject);
begin
with TMyDlgForm.Create(nil{self, или еще чего}) do
try
if ShowModal = mrOK then
begin
// Здесь делаем то, что надо делать, если пользователь нажал OK, а не Cancel
end;
finally
Free;
end;
end;
Все тоже самое.... почти :) Просто в данном конкретном случае не вижу смысла вообще в переменной....
....локальной, или в той, которая в модуле с формой.... Для таких окон(Модал) она(var) не нужна.... имхо.
Anatoly Podgoretsky (2007-06-27 13:20:00) [3]> Virgo_Style (27.06.2007 13:15:20) [20]
Так для других типов переменные автоматически не создаются и классы в автокреате тоже не кидаются, а вопросов нет.
Однокамушкин (2007-06-27 13:18:00) [4]
> Virgo_Style © (27.06.07 13:15) [20]
> А вы представьте, сколько было бы вопросов, если б ее не
> было?))
Зато человек спросил бы, прочитал ответ и понял бы, а так - пишут код, а почему он работает, не понимают...
Virgo_Style (2007-06-27 13:15:00) [5]Desdechado © (27.06.07 12:58) [18]
услуга косолапая
Ega23 © (27.06.07 13:01) [19]
Ненужная вещь.
А вы представьте, сколько было бы вопросов, если б ее не было?))
Ega23 (2007-06-27 13:01:00) [6]
> В AutoCreateForms тоже по умолчанию формы кидает, тоже ж
> услуга косолапая.
А вот с этим согласен. Ненужная вещь.
Desdechado (2007-06-27 12:58:00) [7]> Не создавать, а объявлять.
Да, оговорился. Но оговорка интересная, кстати. В AutoCreateForms тоже по умолчанию формы кидает, тоже ж услуга косолапая.
Ega23 (2007-06-27 12:55:00) [8]
> Имхо, это медвежья услуга Борланда - создавать их автоматом.
Э. Не создавать, а объявлять. Это тебе не С++... :)
Desdechado (2007-06-27 12:41:00) [9]> в файле, где класс TMyDlgForm описан, уже переменная есть
Не факт. Я такие глобальные переменные прибиваю сразу. Имхо, это медвежья услуга Борланда - создавать их автоматом.
Ega23 (2007-06-27 12:17:00) [10]
> А как без переменной? Через with? А если локальную переменную,
> которую надо использовать внутри with, захочется назвать
> так же, как поле TMyDlgForm? Запутаться с этим with можно,
> с некоторых пор предпочитаю его не использовать...
Но у тебя же в файле, где класс TMyDlgForm описан, уже переменная есть...
Хотя можно и через with
Однокамушкин (2007-06-27 12:05:00) [11]
> Ega23 © (27.06.07 11:45) [10]
> Я бв поставил Dlg := TMyDlgForm.Create(nil);
На самом деле и я обычно nil ставлю... просто здесь почему-то захотелось написать Self :)))
> Anatoly Podgoretsky © (27.06.07 11:56) [12]
> А вот зачем нужна переменная не пойму
А как без переменной? Через with? А если локальную переменную, которую надо использовать внутри with, захочется назвать так же, как поле TMyDlgForm? Запутаться с этим with можно, с некоторых пор предпочитаю его не использовать...
Anatoly Podgoretsky (2007-06-27 11:57:00) [12]> Desdechado (27.06.2007 11:53:11) [11]
Тот кто создает, тот и хозяин
Anatoly Podgoretsky (2007-06-27 11:56:00) [13]> Ega23 (27.06.2007 11:45:10) [10]
А он тебе мешает?
А вот зачем нужна переменная не пойму
Desdechado (2007-06-27 11:53:00) [14]Ega23 © (27.06.07 11:45) [10]
А я бы поставил Application. Имхо, хозяин должен быть у каждого.
Ega23 (2007-06-27 11:45:00) [15]
> Однокамушкин (27.06.07 11:26) [7]
Одно уточнение:
нафигаDlg := TMyDlgForm.Create( Self);?
Я бв поставилDlg := TMyDlgForm.Create( nil);
Дядя (2007-06-27 11:44:00) [16]Однокамушкин, большое спасибо!
iXT (2007-06-27 11:27:00) [17]> [6] AleksandrR © (27.06.07 11:24)
> Создай новую форму
> В обработке события кнопки пропиши Form2.Show;
Как это не красиво. Ведь низя так поступать с диалоговыми :)
Однокамушкин (2007-06-27 11:26:00) [18]1. Создать в design-time форму, например, TMyDlgForm
2. В опциях компилятора выкинуть эту форму из автозагрузки, чтобы места зря не занимала
3. В uses того модуля, где находится кнопка, добавить модуль, содержищий эту форму
4. Написать такой обрабочик для кнопки:
procedure TForm1.Button1Click(Sender: TObject);
var
Dlg: TMyDlgForm;
begin
Dlg := TMyDlgForm.Create(Self);
try
if Dlg.ShowModal = mrOK then
begin
// Здесь делаем то, что надо делать, если пользователь нажал OK, а не Cancel
end;
finally
Dlg.Free;
end;
end;
AleksandrR (2007-06-27 11:24:00) [19]Создай новую форму
В обработке события кнопки пропишиForm2.Show;
Правильный Вася (2007-06-27 11:20:00) [20]
> потом отпустить не забыть
про это вопроса не было
нотогда еще и на бойню его, в безотходное производство