В моей программе Delphi мне нужны две формы. Один с основной программой и один с настройками для первой формы. В форме настроек мне нужно переписать переменные из основной формы, а в основной форме мне нужно знать значения переменных и объектов (таких как кнопки, переключатели, флажки) из формы настроек. Как я могу объявить обе формы?
Delphi: как работать с двумя формами
comment
Для всей информации, совместно используемой двумя формами, создайте тип записи, содержащий данные. Заполните запись в основной форме и передайте ее через метод или свойство формы настройки перед вызовом showmodal формы настроек. Метод/свойство настройки заполняет форму настройки значениями записи. Если модальный результат в порядке в настройке формы события OnClose, поместите полученные значения обратно в запись. Доступ к записи теперь можно получить из главной формы до того, как форма настроек будет уничтожена.
- person LU RD   schedule 08.05.2014
Ответы (1)
Вы можете объявить единицы измерения после ключевого слова «реализация».
Например
unit Unit1;
interface
uses Classes, Forms ...;
type
TForm1=class(TForm)
.....
end;
implementation
uses Unit2;
TForm1.Method;
begin
Form2.value := something;
end;
во втором блоке
unit Unit2;
interface
uses Classes, Forms ...;
type
TForm2=class(TForm)
.....
end;
implementation
uses Unit1;
TForm2.Method;
begin
Form1.value := something;
end;
person
SyWo
schedule
07.05.2014
Это совершенно неправильно. Жестко закодировав конкретную переменную
Form2
в методах TForm1
и конкретную переменную Form1
в TForm2
, вы сделаете невозможным использование любой из них из любой другой формы или места в вашем коде. Никогда не привязывайте методы класса к конкретным глобальным переменным. Вопрос, который я связал как дубликат, имеет гораздо лучшее решение проблемы, чем этот.
- person Ken White; 08.05.2014
Конечно, но вопрос был на очень базовом уровне, поэтому в ответе также есть базовое решение. Я работаю над большими проектами, поэтому знаю, что такое решение не может быть использовано в таком случае.
- person SyWo; 08.05.2014
Извините, но плохое решение не является ответом только потому, что это простой способ. Этот ответ просто неверен. Единственная причина, по которой я еще не проголосовал за это, заключается в том, что вы здесь новичок, и я пытался быть милым. :-)
- person Ken White; 08.05.2014
Я тебя понимаю на сто процентов! Не знаю, подходящее ли это место для обсуждения. Конечно, на эту тему, наверное, можно написать книгу. Вам не кажется, что лучше сначала понять программирование на простых примерах? В любом случае спасибо за совет. Это правда, что я новичок в stackoverflow. Но программирую в Delphi и не только Delphi с 18 лет :-).
- person SyWo; 08.05.2014