Перейти к содержанию
Fire Monkey от А до Я

Лидеры

Популярный контент

Показан контент с высокой репутацией 04.08.2014 во всех областях

  1. > Я решила пока оставить свой код как есть, наверное, он правильный. Ну как он может быть правильным? После создания и отображения форма сразу уничтожается (по коду), но продолжает отображаться на экране и нормально функционировать... В голове не укладывается, это из разряда - удивительно, но факт! Ярослав, пролейте свет на этот вопрос, самому уже интересно стало. А я бы сделал так: unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, Unit2, FMX.StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; f: TForm2; implementation {$R *.fmx} procedure TForm1.Button1Click(Sender: TObject); begin f := TForm2.Create( nil ); f.Show; end; end. unit Unit2; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls; type TForm2 = class(TForm) Label1: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.fmx} uses Unit1; procedure TForm2.Button1Click(Sender: TObject); begin Close; end; procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin f := nil; end; end. То есть закрывающаяся форма сама уничтожает экземпляр объекта, связанного с ней (в момент закрытия формы мы точно знаем, что она нам больше не нужна). Это тоже не самый изящный код, но по сравнению с вашим этот мне кажется немного правильнее...
    1 балл
  2. Не синен я в плюсах, а на Delphi делаю так procedure TForm1.Button1Click(Sender: TObject); var f: TForm2; begin f := TForm2.Create( nil ); f.Show; f.Free; // или f.Destroy end; 1. В плюсах вместо nil скорее всего надо писать NULL 2. Из за использования в мобильной платформе автоматического подсчета ссылок (ARC), удалять возможно следует так f := nil // или NULL в плюсах (без delete Form2, но тут пусть лучше разработчики скажут)
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...