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

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

Не дать показаться форме


Страницы:   1 2

upc ©   (2011-11-17 16:59:00) 

Здравствуйте,
как можно сделать, что бы при OnShow (в случае выполнения определенного условия) форма не могла показаться. Close делать нельзя, так как форма еще не показана и вообще ошибка выдается (Can not change Visible in OnShow or OnHide, или как-то так). Может надо писать код не в OnShow? Но где тогда?


Dennis I. Komarov   (2011-11-19 23:36:00) [1]


> "Бритва" Оккама - "Не множь сущности без необходимости"
> или, в первоисточнике от Аристотеля - "Принцип достаточного
> основания".

Браво! :)


Jeer   (2011-11-18 23:33:00) [2]


> То есть лучше всё-таки переделать на метод Jeer'а?


"Бритва" Оккама - "Не множь сущности без необходимости" или, в первоисточнике от Аристотеля - "Принцип достаточного основания".


upc   (2011-11-18 22:31:00) [3]

Это вы к тому, что я, использовав данную реализацию и не поняв до конца как она работает, могу накосячить где-то или не понять из-за чего потом будут глюки? Пишите пожалуйста подробнее, а не эвфемизмами.
То есть лучше всё-таки переделать на метод Jeer'а?


Dennis I. Komarov   (2011-11-18 09:18:00) [4]


> Омлет ©   (17.11.11 22:18) [21]

Детям спички нельзя давать :)


Jeer   (2011-11-17 23:19:00) [5]


> upc   (17.11.11 23:13) [24]
>
> А вы ведь правы. Надо мне подумать над этим.


См.  Jeer ©   (17.11.11 21:21) [20]


upc   (2011-11-17 23:13:00) [6]

А вы ведь правы. Надо мне подумать над этим.
Но, в любом случае, решение для сабжа которое я хотел - нашел.


Jeer   (2011-11-17 23:01:00) [7]

Остался за кормой вопрос - если форму не надо показывать, может не стоит ее и создавать ?

Хотя.. всяко бывает:
Хамелеон - тот тоже мимикрирует под ситуацию.


upc   (2011-11-17 22:42:00) [8]

Омлет, спасибо большое! То что надо. Я так понял, это реализация того, что посоветовал Юрий Зотов?


Омлет   (2011-11-17 22:18:00) [9]

> upc   (17.11.11 19:25) [18]

type
 TForm1 = class(TForm)
 public
   procedure Show;
 end;

procedure TForm1.Show;
begin
 if A <> B then
   inherited Show;
end;


Jeer   (2011-11-17 21:21:00) [10]

if (A=B) and (B=D) or (E=F) then
with TfmMy.Create(Self) do
  try
    FormStyle := fsNormal;
    Visible := False;
    ShowModal;
  finally
    Release;
  end;

Оформляем (A=B) and (B=D) or (E=F) функцией и вуаля

Function DoFromShow(A,B,C,D,E,F): boolean;


KilkennyCat   (2011-11-17 19:37:00) [11]

что значит не делать новых функций? как-то же условие показа надо обрабатывать?
единственное, что не надо их везде городить, сделать одну универсальную, с параметрами, если необходимо учитывать откуда и как она вызывается. и все.
а то, что забудешь или нет - ну это не решаемая проблема.
помнить и думать придется. И писать комментарии. И техзадание. и план. и т.д.


upc   (2011-11-17 19:25:00) [12]

Не хотелось делать новых функций: вдруг потом забуду через некоторое время, что форму нужно вызывать через какой-нибудь MyShow, а не Show и будут глюки.


upc   (2011-11-17 19:24:00) [13]

Я думаю вы всё же правы, сделаю отдельно функцией, наверное другого выхода нет.


KilkennyCat   (2011-11-17 18:55:00) [14]


> Можно, конечно, везде где делается вызов формы написать
> это условие и в зависимости от него делать или не делать
> Show, но это ведь не рационально!

конечно нет! это просто ужас: вместо myForm.Show придется писать if CanMyFormShow then myForm.Show !
э


> Anatoly Podgoretsky ©   (17.11.11 17:45) [13]

это в паскале есть. а у него гоуту только.


_Юрий   (2011-11-17 18:41:00) [15]

procedure TMyForm.ShowIfCan();
begin
 if (conditional)
   then Show();
end;


Anatoly Podgoretsky   (2011-11-17 17:46:00) [16]

> upc  (17.11.2011 17:20:06)  [6]

Беда, но НЕТ


Anatoly Podgoretsky   (2011-11-17 17:45:00) [17]

> upc  (17.11.2011 17:14:04)  [4]

Ты в курсе что есть такая языковая конструкция, как PROCEDURE


Anatoly Podgoretsky   (2011-11-17 17:44:00) [18]

> upc  (17.11.2011 17:08:02)  [2]

Просто не нужно ее создавать


Юрий Зотов   (2011-11-17 17:44:00) [19]

upc   (17.11.11 17:20) [6]
> было бы в OnShow CanShow, тогда проблема была бы решена.
> Нет ли подобного чего-либо?

Если метод Show виртуальный или динамический, то замещаем его и проблема исчезает.


OW   (2011-11-17 17:41:00) [20]

TCustomForm
CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED;

оттуда вызывается DoShow
откуда OnShow

если сесть на это сообщение и гасить?


Страницы:   1 2

Наверх

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