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

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

многопоточность [D7, XP]


Страницы:   1 2

belmol ©   (2009-06-19 07:20:00) 

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

procedure TForm36.eu1Click(Sender: TObject);
var
bmp: TBitmap;
DC: HDC;
qual: integer;
label exit1;
begin
// подключаем библиотеку
if dll_loaded then
//----------------------------------- PS_InitSDK  (активируем sdk)
 if sdk_connect then
//----------------------------------- подключен ли сканер
   if scaner_Connected then
    begin
     while not finger_on do
     begin
     StatusBar1.Panels[0].Text:='Приложите палец к сканеру.';
     diod(1); // мигаем диодом ждем пока приложат палец
     end;
// проверяем наличие отпечатков в базе
                     Form1.fingerset.Active:=false;
                     Form1.fingerset.SelectSQL.Text:='select * from FINGERS where ld=:ld and num=:num';
                     Form1.fingerset.ParamByName('LD').AsInteger:=form1.FindDataSet1LD.AsInteger;
                     if RadioGroup1.ItemIndex>-1 then
                     Form1.fingerset.ParamByName('LD').AsInteger:=RadioGroup1.ItemIndex+1;
                     if RadioGroup2.ItemIndex>-1 then
                     Form1.fingerset.ParamByName('LD').AsInteger:=RadioGroup2.ItemIndex+6;
                     Form1.fingerset.Active:=true;
//------------------------------------------------
         while finger_on do
          begin
             if Capture then
             begin
//////////////////  участок создания темплайта    Form36.Label3.caption:='Качество изображения q = '+IntToStr(form36.image_q);
               if (enrol_fin=1) then
               begin
                 qual:=form36.image_q;
                 Form36.Label3.caption:='Качество изображения q = '+IntToStr(qual);
                 if (qual>80) then
                   begin
                     Form36.Label3.Font.Color:=clBlack;
                     //----сохраняем в базу
                     if (form1.fingersetLD.AsString='') then
                     form1.fingerset.Insert
                     else form1.fingerset.Edit;
                     form1.fingersetLD.AsInteger:=form1.finddataset1ld.AsInteger;
                     // номер пальца...
                     if RadioGroup1.ItemIndex>-1 then
                     form1.fingersetNUM.AsInteger:=RadioGroup1.ItemIndex+1;
                     if RadioGroup2.ItemIndex>-1 then
                     form1.fingersetNUM.AsInteger:=RadioGroup2.ItemIndex+6;
// заливаем "слепок"                      RBlobStream:=form1.fingerset.CreateBlobStream(form1.fingerset.FieldByName('TEMLA TE') ,bmReadWrite);
                     RBlobStream.WriteBuffer(templ, SizeOf(templ));
                     try
                     form1.fingerset.Post;
                     except end;
                   end ELSE begin  
Form36.Label3.caption:='Качество изображения q = '+IntToStr(qual); Form36.Label3.Font.Color:=clRed;  
end;
//------------------------------------------------
                 if Draw_image then // рисуем в большое окно,присваиваем хандл имаджу
                     begin
                       Label5.Caption:='q='+IntToStr(qual);
                       bmp:=TBitmap.Create;
                       bmp.Height:=image_Height;
                       bmp.Width:=image_Width;
                       DC:=GetDC(form36.Handle);  //Дескpиптоp экpана
                       bitblt(bmp.Canvas.Handle, -8, -3, image_Width, image_Height,DC, 0, 0, SRCCOPY);
                       image11.Picture.Assign(bmp);
                       ReleaseDC(0, DC);
                       Imageloaded(bmp);   // отображаем по месту
                       bmp.Free;
                     end;
               end;
               end;
            end;
       end
   else  MessageDlg('Сканер не подключен!!', mtError, [mbOK], 0);
exit1:
Capture_abort;
try
diod(2);
sdk_disconnect;
dll_unloaded;
finally end;
end;


belmol   (2009-06-19 08:20:00) [21]

что сколько??))  мне б  пример а не подрядчика)) или объяснить. куда чего запихать..


Palladin   (2009-06-19 08:00:00) [22]

Сколько?


Страницы:   1 2

Наверх

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