создание формы лазаря - PullRequest
       5

создание формы лазаря

0 голосов
/ 04 октября 2011

Следующий код от http://wiki.freepascal.org/MySQLDatabases

procedure TFormTryMySQL.OpenQueryButtonClick(Sender: TObject);
begin
 ShowQueryForm := TShowQueryForm.Create(self);
 ShowQueryForm.Datasource1.DataSet := SQLQuery1;
 SQLQuery1.SQL.Text := CommandEdit.Text;
 SQLQuery1.Open;
 ShowQueryForm.ShowModal;
 ShowQueryForm.Free;
 SQLQuery1.Close;
end;

Я новичок в Lazarus.Может кто-нибудь, пожалуйста, объясните строку ShowQueryForm: = TShowQueryForm.Create (self); ?Мне особенно любопытно:

  1. Зачем нам нужно СОЗДАТЬ форму программно?
  2. Что такое TShowQueryForm?
  3. Моя форма без T. Почему элемент управления SQLQuery1 может получить доступ к данным в новой форме?

Извините, если это не хорошо сформулированный вопрос, ноЯ смущен здесь: (

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 октября 2011
 1.    Why do we need to CREATE a form programmatically?

Это необязательно. Вы можете разрешить автоматическое создание форм, как говорит vfclists, когда разработчик добавляет создание формы в LPR. (так же, как Delphi кстати).

 2. What is the TShowQueryForm? My form is without a T. 

Тип формы. Таким образом, у вас есть имя переменной xxxsomeForm с типом Txxxsomeform.

 3. How come the SQLQuery1 control can access the data on the new form?

Другой способ. Сетки или другие элементы управления с поддержкой db, находящиеся в showqueryform, получают свои данные из объекта источника данных. Во 2-й строке:

 ShowQueryForm.Datasource1.DataSet := SQLQuery1;

компонент sqlquery текущей формы назначается набору данных во вновь созданной форме.

0 голосов
/ 08 октября 2011

Если форма автоматически создается в проекте |Автоматическое создание форм sas, автоматически созданное при запуске приложения, создавать его не нужно.

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

...