Delphi скрывает форму: есть ли разница между Form.Hide и Form.Visible:=False?

Я просматриваю две копии кода, и в одной у меня есть myForm.Hide, а в другой — myForm.Visible := False. Я не могу вспомнить, почему я изменил это, было ли это исправлением ошибки или есть ли вообще какая-то разница.


person Daisetsu    schedule 25.03.2011    source источник
comment
Вам не нужно запоминать, просто запросите у системы управления версиями журнал об этом конкретном файле. На всякий случай в комментарии будет ссылка на ваш трекер ошибок. :)   -  person jachguate    schedule 25.03.2011
comment
У вас есть исходный код VCL в вашей версии Delphi?   -  person David Heffernan    schedule 25.03.2011


Ответы (2)


Для Hide разницы нет. Код VCL:

procedure TCustomForm.Hide;
begin
  Visible := False;
end;

Но Show немного отличается:

procedure TCustomForm.Show;
begin
  Visible := True;
  BringToFront;
end;
person David Heffernan    schedule 25.03.2011

Зависит от того, сколько лет вашему коду Delphi и как далеко он уходит. Form.Hide в одно время (Win95/2000) скрывает форму и ее значок на панели задач, а другое - нет. Конечно, были некоторые исправления и т. д., чтобы исправить проблемы с Delphi, и некоторые видеокарты / цветовые палитры требовали, чтобы вы подумали, как вы хотите скрыть формы. (чувак, я показываю свой возраст). Я видел код, который устанавливал бы форму Left в большое отрицательное число, просто чтобы скрыть форму с экрана из-за проблем с оборудованием (Delphi 1-3 действительно был чувствителен к оборудованию)

Кроме того, в Delphi 3/4 произошла утечка памяти при использовании минимизации вместо скрытия в приложениях MDI (поэтому мы использовали PAgecontrol с стыковкой форм поверх MDI Forms). Итак, если вы смотрите на очень старый код, то эти вещи имеют значение. Если вы компилируете на Delphi 6 или лучше, то разницы особой нет.

person MDV2000    schedule 25.03.2011
comment
Мне трудно поверить в ваш первый абзац. Я не помню ничего подобного. Я был бы поражен, если бы TCustomForm.Hide когда-либо отличался от Visible := False. С другой стороны, возможно, мой мозг стер болезненные воспоминания и оставил только счастливые! - person David Heffernan; 25.03.2011
comment
Да, если бы я не видел и не должен был кодировать это сам около 97/98, я бы тоже не стал! Delphi 1 и 2 были ужасны с памятью и столкнулись со всевозможными проблемами. Delphi 1 была 16-битной Win3.11, а Delphi 2 была первой 32-битной версией с МНОЖЕСТВОМ 16-битных вещей. Просто загрузите Delphi 2 и установите цвет ПК на 16 цветов, и наблюдайте, как ваши программы не загружаются, особенно если они имеют сетки на формах!! - person MDV2000; 25.03.2011
comment
Я тоже пользовался этими версиями, просто не помню такой боли! - person David Heffernan; 25.03.2011
comment
И я нет! Я помню приложение Delphi 1, которое долгое время использовалось на нескольких ноутбуках и настольных компьютерах с Win 31., больше всего мне запомнилось упомянутое странное поведение! - person jachguate; 25.03.2011
comment
Спасибо MDV2000, к счастью, я использую Delphi 6 (скоро планирую перейти на XE) - person Daisetsu; 25.03.2011