Читаем Советы по Delphi. Версия 1.4.3 от 1.1.2001 полностью

 destructor Destroy; override;

end;


constructor TMyForm.Create(AOwner: TComponent; var AFormVar: TMyForm);

begin

 FormVar := @AFormVar;

 inherited Create;

 .....

end;


destructor TMyForm.Destroy;

begin

 FormVar^ := nil;

 inherited Destroy;

end;


MyForm := TMyForm.Create(Self, MyForm);

MyOtherForm := TMyForm.Create(Self, MyOtherForm);

Этот код при разрушении окна автоматически сбрасывает все, что вы передаете в AFormVar, в nil.

Как вы, наверное, заметили, частный член FormVar реально является указателем на указатель. Так, читая содержимое памяти, адрес которой содержится в FormVar, мы реально получаем переменную формы. Таким образом мы можем просто установить ее в nil.

– Jeff Fisher 

Условие создания главной формы?

Delphi 2 

Существует ли в Delphi возможность создавать главную форму по условию? Я хочу использовать условие IF (в зависимости от передаваемого параметра) для того, чтобы определить какая форма будет главной при старте приложения. Фактически «другую» форму НЕ нужно будет загружать.

Хитрость здесь заключается в том, что мы предоставляем компилятору весь необходимый для создания форм код, но не допускаем его выполнения (IF FALSE THEN), при этом компилятор не ругается, а мы тем временем (во время выполнения приложения) выбираем и создаем главную форму. Вот пример кода, измененный .DPR-файл, который при старте случайным образом выбирает из друх форм главную:

begin

 IF FALSE THEN BEGIN

  Application.CreateForm(TForm1, Form1);

  Application.CreateForm(TForm2, Form2);

 END;

 Randomize;

 IF Random < 0.5 THEN Application.CreateForm(TForm1, Form1)

 ELSE Application.CreateForm(TForm2, Form2);

 Application.Run;

end.

Пара «подходящих» для CreateForm форм заключено в никогда не выполнимый блок, тем самым приводя компилятор в состояние свинячего восторга.

– Neil Rubenking

Динамическое создание и циклическое связывание форм

Тема: Динамическое создание и циклическое связывание форм

Как сделать простой метод, переключающий между формами?

Как мне добавить возвращаемые результаты к моей ShowModal-форме?

Как мне создавать экземпляры форм во время выполнения приложения?

Необходимый для осуществления этого метод очень прост. В моем примере я использую 3 формы с именами Mainform, Form1 и Form2. На Mainform я установил кнопку, которая выводит Form1, из нее вы можете вызвать любое количество форм (перемещаться между ними) через соответствующие кнопки, расположенные на этих формах. В моем примере "переключение" происходит между формами Form1 и Form2.

Шаг 1. Разместите следующие две строчки в секции interface той формы, которая у вас будет главной:

const

 mrNext = 100;

 mrPrevious = 101;

Шаг 2. Разместите на главной форме кнопку и добавьте следующий код в обработчик события ее нажатия:

var

 MyForm: TForm;

 R, CurForm: Integer;

begin

 R := 0;

 CurForm := 1;

 while R <> mrCancel do begin

  Case CurForm of

  1: MyForm := TForm1.Create(Application);

  2: MyForm := TForm2.Create(Application);

  end;

  try

  R := MyForm.ShowModal;

  finally

  MyForm.Free;

  end;

  case R of

  MrNext : Inc(CurForm);

  MrPrevious : Dec(CurForm);

  end;

  // эти 2 строчки позволят нам не выходить за границы

  if CurForm < 1 then CurForm := 2

  else if CurForm > 2 then CurForm  := 1;

 end; // while

end;

Шаг 3. Добавьте формы 1 и 2 (и любые другие, какие вы хотите иметь) в список используемых модулей формы mainform.

Шаг 4. В форме Form1 и Form2 добавьте MainForm в список используемых модулей (чтобы они видели константы.)

Шаг 5. На форму Form1, Form2, и все последующие, добавьте 2 TBitBtn'а, с заголовками «Next» и «Previous». In the Onclick Events for these buttons add the following line of code.

Если это кнопка Next, добавьте: ModalResult := mrNext;

Если это кнопка Previous, добавьте: ModalResult := mrPrevious;

Как заставить формы минимизироваться на панель задач с анимацией?


Nomadic советует:

Перейти на страницу:

Похожие книги

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT