Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Диалоговое окно


Страницы:   1 2

Дядя ©   (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]


> потом отпустить не забыть

про это вопроса не было
нотогда еще и на бойню его, в безотходное производство


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо