Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Множество Datamodule


Автор: CrazyPiggy 29.9.2011, 15:12
Добрый день. В программе я создаю несколько DataModule динамически. Подскажите пожалуйста как мне Пробежаться по всем эти DataModule. Естьли для DM что то типа для определения списка форм
Код

    for i := Screen.FormCount - 1 DownTo 0 do
      if (Screen.Forms[i].Caption <> Caption) then
    begin
    try
       Screen.Forms[i].Close;
       Result := True;
    except
       Result:=false;
    end;

Автор: AndreyIQ 29.9.2011, 15:37
Код

  for i := 0 to Application.ComponentCount - 1 do
    if Application.Components[i] is TDataModule then
      ShowMessage(Application.Components[i].Name);

Автор: CrazyPiggy 29.9.2011, 15:45
Большое спасибо. 

Дело в том что у меня есть два модуля типа TDataModule. Один основной, а на основе второго я создаю динамически 

Код

     DMPost:=TDMPost.Create(nil);
     DMPost.Tag:=FDataPostID.AsInteger;
     DMPost.DBName:=FDataPostNAME_BASE.AsString;


И хочется обратиться к Датасету этого модуля

Код

 if (Application.Components[i] is TDMPost) then
                      (Application.Components[i] as TDMPost).FIBDataset1.CloseOpen(true)


Но чтото ничего не срабатывает

Автор: CrazyPiggy 29.9.2011, 18:56
Ни у кого нет никаких идей? Просто очень срочно нужно решить эту проблему

Автор: bems 29.9.2011, 19:00
Цитата(CrazyPiggy @  29.9.2011,  15:45 Найти цитируемый пост)
Но чтото ничего не срабатывает

не срабатывает потому что тут
Цитата(CrazyPiggy @  29.9.2011,  15:45 Найти цитируемый пост)
DMPost:=TDMPost.Create(nil);

владельцем указан nil
Или сделай им всем одного владельца (например Application) или вручную добавляй в собственный список при создании

Автор: Frees 29.9.2011, 19:09
Код

 for i := 0 to screen.DataModuleCount - 1 do 
    screen.DataModules[i]

работает даже если владелец nil (проверил)

Автор: CrazyPiggy 29.9.2011, 20:40
Ок, ща проверю. Благодарю

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)