Введение в технологию программирования. Ч.1. Среда объектно-ориентированного программирования Delphi. Коржов Е.Н - 58 стр.

UptoLike

Составители: 

Ɋɢɫ. 3.4.3. Windows-ɨɤɧɨ ɨɛɳɟɝɨ ɩɪɢɦɟɪɚ
1.3. ɂɧɬɟɪɮɟɣɫ Drag & Drop
ȼ ɩɪɢɥɨɠɟɧɢɢ ɨɫɭɳɟɫɬɜɢɦ ɜɨɡɦɨɠɧɨɫɬɶ ɩɟɪɟɧɨɫɚ ɫɨɞɟɪɠɢɦɨɝɨ ɪɟ-
ɞɚɤɬɨɪɚ Edit1 ɜ ɪɟɞɚɤɬɨɪ Edit2. ɋɞɟɥɚɟɦ ɬɚɤ, ɱɬɨɛɵ ɩɚɧɟɥɶ Panel1 ɦɨɠɧɨ
ɛɵɥɨ ɩɟɪɟɦɟɳɚɬɶ ɩɨ ɮɨɪɦɟ.
1. ɂɫɬɨɱɧɢɤɚɦɢ ɜ ɦɟɯɚɧɢɡɦɟ Drag & Drop ɛɭɞɭɬ ɤɨɦɩɨɧɟɧɬɵ Panel1
ɢ Edit1. ɍɫɬɚɧɨɜɢɬɟ ɞɥɹ ɤɨɦɩɨɧɟɧɬɨɜ Panel1 ɢ Edit1 ɫɜɨɣɫɬɜɨ DragMode
ɪɚɜɧɵɦ dmAutomatic. Ɂɧɚɱɟɧɢɟ dmAutomatic ɨɛɟɫɩɟɱɢɜɚɟɬ ɚɜɬɨɦɚɬɢɱɟ-
ɫɤɭɸ ɪɟɚɤɰɢɸ ɤɨɦɩɨɧɟɧɬɚ ɧɚ ɧɚɠɚɬɢɟ ɥɟɜɨɣ ɤɥɚɜɢɲɢ ɦɵɲɢ ɢ ɧɚɱɚɥɨ ɩɟ-
ɪɟɬɚɫɤɢɜɚɧɢɹ. Ɉ ɜɤɥɸɱɟɧɢɢ ɦɟɯɚɧɢɡɦɚ ɫɢɝɧɚɥɢɡɢɪɭɟɬ ɭɤɚɡɚɬɟɥɶ ɦɵɲɢ, –
ɨɧ ɢɡɦɟɧɹɟɬɫɹ ɧɚ ɤɭɪɫɨɪ, ɨɩɪɟɞɟɥɟɧɧɵɣ ɜ ɫɜɨɣɫɬɜɟ DragCursor.
2. ɉɪɢɟɦɧɢɤɨɦ ɦɨɠɟɬ ɫɬɚɬɶ ɥɸɛɨɣ ɤɨɦɩɨɧɟɧɬ, ɜ ɤɨɬɨɪɨɦ ɫɨɡɞɚɧ ɦɟ-
ɬɨɞɨɛɪɚɛɨɬɱɢɤ DragOver. ɋɨɡɞɚɣɬɟ ɨɛɪɚɛɨɬɱɢɤɢ ɫɨɛɵɬɢɣ:
Ⱦɥɹ Edit2:
procedure TForm1.Edit2DragOver(Sender, Source: TObject; X, Y:
Integer;
State: TDragState; var Accept: Boolean);
Begin
//ȿɫɥɢ ɢɫɬɨɱɧɢɤ ɩɟɪɟɧɨɫɚ ɨɞɧɨɫɬɪɨɱɧɵɣ ɪɟɞɚɤɬɨɪ, ɬɨ Edit2
//ɫɬɚɧɨɜɢɬɫɹ ɩɪɢɟɦɧɢɤɨɦ.
If Source.ClassName = 'TEdit'
Then
Accept := True
Else
Accept := False;
end;
Ⱦɥɹ ɮɨɪɦɵ:
procedure
TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
//ȿɫɥɢ ɢɫɬɨɱɧɢɤ ɩɟɪɟɧɨɫɚ ɩɚɧɟɥɶ, ɬɨ ɮɨɪɦɚ ɫɬɚɧɨɜɢɬɫɹ ɩɪɢɟɦɧɢɤɨɦ.
if Source.ClassName ='TPanel'
then
Accept := True
else
58
                Ɋɢɫ. 3.4.3. Windows-ɨɤɧɨ ɨɛɳɟɝɨ ɩɪɢɦɟɪɚ
      1.3. ɂɧɬɟɪɮɟɣɫ Drag & Drop
      ȼ ɩɪɢɥɨɠɟɧɢɢ ɨɫɭɳɟɫɬɜɢɦ ɜɨɡɦɨɠɧɨɫɬɶ ɩɟɪɟɧɨɫɚ ɫɨɞɟɪɠɢɦɨɝɨ ɪɟ-
ɞɚɤɬɨɪɚ Edit1 ɜ ɪɟɞɚɤɬɨɪ Edit2. ɋɞɟɥɚɟɦ ɬɚɤ, ɱɬɨɛɵ ɩɚɧɟɥɶ Panel1 ɦɨɠɧɨ
ɛɵɥɨ ɩɟɪɟɦɟɳɚɬɶ ɩɨ ɮɨɪɦɟ.
      1. ɂɫɬɨɱɧɢɤɚɦɢ ɜ ɦɟɯɚɧɢɡɦɟ Drag & Drop ɛɭɞɭɬ ɤɨɦɩɨɧɟɧɬɵ Panel1
ɢ Edit1. ɍɫɬɚɧɨɜɢɬɟ ɞɥɹ ɤɨɦɩɨɧɟɧɬɨɜ Panel1 ɢ Edit1 ɫɜɨɣɫɬɜɨ DragMode
ɪɚɜɧɵɦ dmAutomatic. Ɂɧɚɱɟɧɢɟ dmAutomatic ɨɛɟɫɩɟɱɢɜɚɟɬ ɚɜɬɨɦɚɬɢɱɟ-
ɫɤɭɸ ɪɟɚɤɰɢɸ ɤɨɦɩɨɧɟɧɬɚ ɧɚ ɧɚɠɚɬɢɟ ɥɟɜɨɣ ɤɥɚɜɢɲɢ ɦɵɲɢ ɢ ɧɚɱɚɥɨ ɩɟ-
ɪɟɬɚɫɤɢɜɚɧɢɹ. Ɉ ɜɤɥɸɱɟɧɢɢ ɦɟɯɚɧɢɡɦɚ ɫɢɝɧɚɥɢɡɢɪɭɟɬ ɭɤɚɡɚɬɟɥɶ ɦɵɲɢ, –
ɨɧ ɢɡɦɟɧɹɟɬɫɹ ɧɚ ɤɭɪɫɨɪ, ɨɩɪɟɞɟɥɟɧɧɵɣ ɜ ɫɜɨɣɫɬɜɟ DragCursor.
     2. ɉɪɢɟɦɧɢɤɨɦ ɦɨɠɟɬ ɫɬɚɬɶ ɥɸɛɨɣ ɤɨɦɩɨɧɟɧɬ, ɜ ɤɨɬɨɪɨɦ ɫɨɡɞɚɧ ɦɟ-
         ɬɨɞ–ɨɛɪɚɛɨɬɱɢɤ DragOver. ɋɨɡɞɚɣɬɟ ɨɛɪɚɛɨɬɱɢɤɢ ɫɨɛɵɬɢɣ:
– Ⱦɥɹ Edit2:
      procedure TForm1.Edit2DragOver(Sender, Source: TObject; X, Y:
Integer;
      State: TDragState; var Accept: Boolean);
      Begin
      //ȿɫɥɢ ɢɫɬɨɱɧɢɤ ɩɟɪɟɧɨɫɚ ɨɞɧɨɫɬɪɨɱɧɵɣ ɪɟɞɚɤɬɨɪ, ɬɨ Edit2
      //ɫɬɚɧɨɜɢɬɫɹ ɩɪɢɟɦɧɢɤɨɦ.
      If Source.ClassName = 'TEdit'
          Then
             Accept := True
          Else
             Accept := False;
      end;
– Ⱦɥɹ ɮɨɪɦɵ:
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
                                    State: TDragState; var Accept: Boolean);
   begin
      //ȿɫɥɢ ɢɫɬɨɱɧɢɤ ɩɟɪɟɧɨɫɚ ɩɚɧɟɥɶ, ɬɨ ɮɨɪɦɚ ɫɬɚɧɨɜɢɬɫɹ ɩɪɢɟɦɧɢɤɨɦ.
      if Source.ClassName ='TPanel'
          then
             Accept := True
          else
                                    58