Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как из Thread обращ. к объектам на активной MDI-дочерней форме? [D7, WinXP]


Страницы:   1 2

Billis ©   (2006-06-15 15:40:00) 

Помогите, пож. Есть дочерняя MDI-приложения, на каждой дочерней форме есть кнопка, запускающая процесс. Эти процессы должны заполнять дочернюю форму. Однако, любой из этих процессов заполняет последнюю открытую дочернюю форму, а не ту, с которой был запущен. Как быть?
Процедура процесса:

procedure TMyThread.FullGrid;
VAR i: integer;        
begin

CashCardForm.ADOQuery1.Active:=false;
CashCardForm.ADOQuery1.SQL.Text:=''+
'SELECT DISTINCT Children.ID, Children.Family, Children.Name, Children.HomeID, Home.Title '+
'FROM Home INNER JOIN (Children INNER JOIN (Cash INNER JOIN CashForChildren ON Cash.ID = CashForChildren.IDCash) ON Children.ID = CashForChildren.IDChildren) ON Home.ID=Children.HomeID '+
'WHERE Children.ID NOT IN '+
'(SELECT Children.ID '+
'FROM Home INNER JOIN (Children INNER JOIN (Cash INNER JOIN CashForChildren ON Cash.ID = CashForChildren.IDCash) ON Children.ID = CashForChildren.IDChildren) ON Home.ID=Children.HomeID '+
'WHERE YearCash='+MyMDIForm.cxTextEdit06.Text+') '+
'UNION '+
'SELECT Children.ID, Children.Family, Children.Name, Children.HomeID, Home.Title '+
'FROM Home INNER JOIN Children ON Home.ID=Children.HomeID '+
'WHERE Children.ID NOT IN '+
'(SELECT DISTINCT CashForChildren.IDChildren '+
'FROM CashForChildren)';
CashCardForm.ADOQuery1.Active:=true;
CashCardForm.ProgressBar1.Position:=10;
If CashCardForm.ADOQuery1.RecordCount>0 then
  begin
  CashCardForm.ADOQuery1.First;
  CashCardForm.ADOQuery1.Sort:='ID';
  For i:=1 to CashCardForm.ADOQuery1.RecordCount do
      begin
      CashCardForm.StringGrid1.Cells[0,i]:=CashCardForm.ADOQuery1.FieldValues['ID'];
      CashCardForm.StringGrid1.Cells[1,i]:=CashCardForm.ADOQuery1.FieldValues['Family' ];
      CashCardForm.StringGrid1.Cells[2,i]:=CashCardForm.ADOQuery1.FieldValues['Name'];
      CashCardForm.StringGrid1.Cells[3,i]:=CashCardForm.ADOQuery1.FieldValues['HomeID' ];
      CashCardForm.StringGrid1.Cells[4,i]:=CashCardForm.ADOQuery1.FieldValues['Title'] ;
      CashCardForm.ADOQuery1.Next;
      If i<CashCardForm.ADOQuery1.RecordCount then CashCardForm.StringGrid1.RowCount:=CashCardForm.StringGrid1.RowCount+1;
      CashCardForm.ProgressBar1.Position:=10+(90 div CashCardForm.ADOQuery1.RecordCount)*i;
      end;
  end;
T1.Terminate;
end;


Billis   (2006-06-15 15:56:00) [21]

в спысле thread-поток он же нить


Сергей М.   (2006-06-15 15:47:00) [22]


> кнопка, запускающая процесс


Разницу между "процесс" и "thread" осюсяешь ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо