Как передать форму в качестве параметра функции [решено]

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

Nik писал(а):2dunin
...
Выборка из базы примерно так и делается, но мне мало указать таблицу, надо ещё указать, в контролы какой формы вписывать результаты выборки.

Ну как-то так... Пойдет? Не?

Код: Выделить всё

procedure TAddDohForm.LoadBillsList(TabelName: string; FormName: string);
   var i: unteger;
begin
  for i:= 0 to Application.ComponentCount-1 do begin
    if Application.Component[i].Class = tForm then begin
      if  tForm(Application.Component[i]).Name = FormName then begin
        SQLQuery.SQL.Clear;
        SQLQuery.SQL.Add('select * from '+TabelName);
   ...

зы. Писал сразу в браузере. возможны ошибки/опечатки.
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

У меня в итоге проще получилось:

Код: Выделить всё

procedure LoadCategoryList(xTable: string; xForm: TForm);
...
begin
 (xForm.FindComponent('CatBox') as TComboBox).Clear;

 main_table:=SQL_db.GetTable('SELECT * FROM '+xTable+' WHERE (id!=0) and (parent=-1)');

 for i:=0 to main_table.Count-1 do
  begin
   (xForm.FindComponent('CatBox') as TComboBox).AddItem(main_table.FieldAsString('name'), TObject(main_table.FieldAsInteger('id')));
   ...
  end;
...
end;
daesher
постоялец
Сообщения: 221
Зарегистрирован: 09.03.2010 21:17:14

Сообщение daesher »

Если формы совершенно идентичные по описанию, можно попробовать фокус TAddDohForm(xForm) - проверки никакой, если описания соответствуют, то должно прокатить и для другой формы.
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

daesher писал(а):Если формы совершенно идентичные по описанию, можно попробовать фокус TAddDohForm(xForm) - проверки никакой, если описания соответствуют, то должно прокатить и для другой формы.

Формы не идентичные. У них просто есть некоторое число идентичных (по именам и функциям) полей.
Ответить