end; if nmComp<>'' then ShowMessage(nmComp); //Отладочная строка: fmMain.Caption:= IntToStr(XYPoint.x)+'-'+IntToStr(XYPoint.y)+' / '+ IntToStr(R.Left)+'-'+IntToStr(R.Top)+'-'+ IntToStr(R.Right)+'-'+IntToStr(R.Bottom); end;
Жобаны қайтадан орындауға жіберіңіз және тасымалдау аяқталғаннан кейін программа DBImage компонентінің атының дұрыстығы туралы хабар беретініне көз жеткізіңіз.
Бізге алгоритмнің d) және e) пункттерін іске асыру қалды. Жұмыс сенімді болуы үшін қолданушыға .bmp кеңейтілуі бар файлдарды тасымалдауға рұқсат береміз. Ол үшін мәтінге төменде қалың шрифтпен берілген жолды қосып, (отладочную) жолды алып тастаңыз :
procedure TfmMain.WMDropFiles(var Msg: TMessage);
var j:integer;
R:TRect;
ctr:TControl;
dbIM:TDBImage; begin
nmComp:='';ctr:=nil;dbIm:=nil;
DragQueryFile(THandle(Msg.WParam),0,drFile,SizeOf(drFile));
DragQueryPoint(THandle(Msg.WParam),XYPoint);
DragFinish(THandle(Msg.WParam));
for j := 0 to ComponentCount-1 do begin
if (Components[j] is TDBImage) then begin
ctr:= Components[j] as TControl;
R.Left :=ctr.Left+paLeft.Left;R.Top :=ctr.Top+paLeft.Top;
R.Right := R.Left+ctr.ClientWidth;R.Bottom :=R.Top+ctr.ClientHeight;
With R do
if (XYPoint.x >Left) and(XYPoint.x (XYPoint.y >Top) and(XYPoint.y nmComp:= ctr.Name;Break;
end;
end;
end;