Құрастырушы: аға оқытушы Алимова Ж. С



жүктеу 3,39 Mb.
Pdf просмотр
бет59/64
Дата20.01.2020
өлшемі3,39 Mb.
#27116
түріБағдарламасы
1   ...   56   57   58   59   60   61   62   63   64

 if Not(dlgSaveImage.Execute) then Exit;
 dbIm:=nil;
 With MenuClip do
 if PopupComponent is TDBImage then  dbIM:=(PopupComponent as 
TDBImage);
 try
  if dbIm<>nil then dbIM.Picture.SaveToFile(dlgSaveImage.FileName);
 except
  ShowMessage('Ошибка записи в 
файл:'+#13#10+dlgSaveImage.FileName);
 end;
end;
procedure TfmMain.mcClearClick(Sender: TObject);
var  dbIM:TDBImage;nmField:string;
begin
 dbIm:=nil;
 With MenuClip do
 if PopupComponent is TDBImage then  dbIM:=(PopupComponent as 
TDBImage);
 if dbIm<>nil then begin
    nmField:=dbIM.DataField;
    if dbIM.DataSource.State <> dsEdit then dbIM.DataSource.Edit;
    dbIM.DataSource.DataSet.FieldByName(nmField).Clear;
    dbIM.DataSource.DataSet.Post;
 end;
end;
6. МҚ-ын  суреттермен толтыру үшін сонымен қатар әлемдегі елдердің
туларын ..\STUDENT\Заготовки\DataWorld   папкасынан іздеуге болады. 
 4
 4
-қадам. 
-қадам. 
 –Drag&Drop
 –Drag&Drop
 технологиясы бойынша  графикалық 
 технологиясы бойынша  графикалық 
файлдарды тасымалдау
файлдарды тасымалдау
.
.
Егер қолданушы проводниктен немесе біздің жобаға басқа 
Егер қолданушы проводниктен немесе біздің жобаға басқа 
программадан графикалық файлдарды тышқын арқылы тасымалдауға 
программадан графикалық файлдарды тышқын арқылы тасымалдауға 
мүмкіндік болса жақсы болар еді. Бұл тәсіл 
мүмкіндік болса жақсы болар еді. Бұл тәсіл Windows технологиясы 
бойынша «Drag and Drop» деп аталады.
Біз алгоритмді орындаймыз:
a) Формаға орналастырған файлдың  атын анықтаймыз.
b)
«жіберу» кезіндегі тышқанның координаттарын анықтаймыз.
c) Бұл сәтте тышқан курсоры қай компонентте болғанын анықтаймыз.
d)
Берілген   компонент  файлды  «қабылдай»  алады   ма   дегенді
тексереміз.
e) Егер иа болса , онда файлды өңдеу үшін сәйкес әдісті шақырамыз.
1. Қолданылатын модульдер тізіміне ShellAPI  модульін қосыңыз. 
2. Форманың модульінің private және  public кілттік сөздерінің арасына


  қалың шрифтпен ерекшеленген мәтінді орналастырыңыз: 
……………………………………….
private
    { Private declarations }
     drFile: array[0..256] of char;
     XYPoint:TPoint;
nmComp:string;
  protected
    procedure WMDropFiles (var Msg: TMessage);message 
wm_DropFiles;
    public
    { Public declarations }
  end;
…………………………………………
3. OnCreate  формасының   өңдеушісіне   төменде   қалың   шрифтпен
берілген жолды қосыңыз:  
procedure TfmMain.FormCreate(Sender: TObject);
var sbase:string;
begin
  sbase:=FindFileBD('BDMyWorld.mdb','MyWorld.INI',ConStr,dlgBD);
  if sbase<>'' then begin
   ADOQuery1.Active :=False;
   ADOQuery1.ConnectionString :=ConStr;
   ADOQuery1.Active :=True;
   NameSortField:=DBGrid1.Columns[0].FieldName;Desc:=False;
   NewQuerySQL;
  end else Application.Terminate;
  Application.HintPause :=0;
  DragAcceptFiles(Handle,True);
end;
4. Поместите текстовый курсор на заголовок процедуры WMDropFiles
процеурасының   атауына   мәтіндік   курсорды   орналастырыңыз..  Бірдей
уақытта  CTRL+SHIFT+C  –ті   басыңыз.  Delphi  төменде   көрсетілген
шаблонды құрады.Осыған қалың шрифтпен ерекшеленген жолды теріңіз:
procedure TfmMain.WMDropFiles(var Msg: TMessage);
begin
  DragQueryFile(THandle(Msg.WParam),0,drFile,SizeOf(drFile));
  DragQueryPoint(THandle(Msg.WParam),XYPoint);
  DragFinish(THandle(Msg.WParam)); 
//Отладочная строка:
  Caption:= String(drFile)+'-'+IntToStr(XYPoint.x)
+'-'+IntToStr(XYPoint.y);
end;


5. Жобаны   орындауға   жіберіп   және   ярлыктарды   жұмыс   столынан
формаға   тасымалдап,   форманың   атауында     файлдың  «дұрыс»  аты   және
тышқанның координаты дұрыс берілгеніне көз жеткізу керек.  
6. Сонымен   біз   алгоритмнің  1)  және  2)  пункттерін   орындадық  .
Тышқанды «жіберу» болған  компонентті  анықтайық.  
7. WMDropFiles    процедурасына   қалың   шрифтпен   ерекшеленген
жолдарды қосыңыз және (отладочную) жолды төмендегідей етіп өзгертіңіз:
procedure TfmMain.WMDropFiles(var Msg: TMessage);
var j:integer;
    R:TRect;
    ctr:TControl;
begin
  nmComp:=''; ctr:=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;
  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;
8. Жобаны   қайтадан   орындауға   жіберіңіз   және   тасымалдау
аяқталғаннан   кейін   программа  
 DBImage  компонентінің   атының
дұрыстығы туралы хабар беретініне көз жеткізіңіз.
9. Бізге алгоритмнің  d) және e)  пункттерін іске асыру қалды. Жұмыс
сенімді   болуы   үшін   қолданушыға  .bmp    кеңейтілуі   бар   файлдарды
тасымалдауға   рұқсат   береміз.   Ол   үшін   мәтінге   төменде   қалың   шрифтпен
берілген жолды қосып,  (отладочную) жолды алып тастаңыз :
procedure TfmMain.WMDropFiles(var Msg: TMessage);
var j:integer;
    R:TRect;
    ctr:TControl;
    dbIM:TDBImage;
begin


жүктеу 3,39 Mb.

Достарыңызбен бөлісу:
1   ...   56   57   58   59   60   61   62   63   64




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау