20.1-rasm. DemoDragDrop loyihasining bosh formasi
Listing 20.1. DemoDragDrop loyiha bosh formasi modulining implementation seksiyasi.
implementation
{$R *.DFM)
procedure TMainForm.EditlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, U: Integer);
begin
if Button = mbLeft then TEdit(Sender).BeginDrag(True);
end;
procedure TMainForm.Edit2DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
if Source is TEdit then Accept := True else Accept :<= False;
end;
procedure TMainForm.Edit2DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
TEdit(Sender).Text := TEdit(Source).Text;
TEdit(Sender).SetFocus;
TEdit(Sender).SelectAll;
end;
procedure TMainForm.EditlEndDrag(Sender, Target: TObject; X, Y: Integer);
begin
if Assigned(Target) then
TEdit(Sender).Text := 'Matn ‘+TEdit(Target).Name+’ ga olib o`tildi';
end;
procedure TMainForm.FormDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
if Source.ClassName = 'TPanel' then Accept := True
else Accept := False;
end;
procedure TMainForm.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
TPanel(Source).Left := X;
TPanel(Source).Top := Y;
end;
end.
Bitta satrli Edit1 muharriri uchun manba metodi ishlab chiqilgan. Edit1MouseDown metodida sichqonchaning chertilishi qayta ishlanadi va olib o`tish mexanizmi ishga tushiriladi. Edit1 uchun DragMode hususiyati dmManual bo`lgani uchun komponenta hech bir muammosiz fokusni olish va matnni tahrirlash amallari ta`minlaydi.
Edit1EndDrag metodi manbadan olib o`tish haqidagi ma`lumotni ekranga uzatadi. Edit2 komponentasi uchun qabul qiluvchining xodisalarni qayta ishlagichi ishlab chiqilgan. Edit2DragOver metodi manba klassini tekshirib, qabul qilishga ruxsat beradi yoki ta`qiqlaydi. Edit2DragDrop metodi matnni manbadan qabul qiluvchiga olib tishni ta`minlaydi.
Eslatma: Har ikki TEdit komponentalari bir vaqtda ham manba, ham qabul qiluvchi bo`lyapti va har biri ikkinchisining xodisalar qayta ishlagichidan foydalanadi.
Drag-and-Drop qabul qiluvchi sifatida forma manba o`rnida xizmat qiluvchi Panel2 surilishini ta`minlaydi. FormDragOver metodi panellar-dan boshqa komponentalarni qabul qilishni ta`qiqlaydi xamda komponenta surilishini amalga oshiradi.
Panel’ o`zining xodisalarni qayta ishlagich metodiga ega emas, chunki u dmAutomatic rejimimda ishlaydi va olib o`tishni tugatish haqidagi qo`shimcha ma`lumotga muhtoj emas.
Do'stlaringiz bilan baham: |