home *** CD-ROM | disk | FTP | other *** search
/ PC Format Collection 48 / SENT14D.ISO / tech / delphi / disk15 / dragdrop.pak / TABFORM.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1995-08-24  |  1.7 KB  |  74 lines

  1. unit Tabform;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, Tabs, StdCtrls, ExtCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     TabSet1: TTabSet;
  12.     Panel1: TPanel;
  13.     Label1: TLabel;
  14.     procedure TabSet1MouseDown(Sender: TObject; Button: TMouseButton;
  15.       Shift: TShiftState; X, Y: Integer);
  16.     procedure TabSet1DragOver(Sender, Source: TObject; X, Y: Integer;
  17.       State: TDragState; var Accept: Boolean);
  18.     procedure TabSet1DragDrop(Sender, Source: TObject; X, Y: Integer);
  19.   private
  20.     { Private declarations }
  21.   public
  22.     { Public declarations }
  23.   end;
  24.  
  25. var
  26.   Form1: TForm1;
  27.  
  28. implementation
  29.  
  30. {$R *.DFM}
  31.  
  32. procedure TForm1.TabSet1MouseDown(Sender: TObject; Button: TMouseButton;
  33.   Shift: TShiftState; X, Y: Integer);
  34. var
  35.   DragItem: Integer;
  36. begin
  37.   if Button = mbLeft then
  38.   begin
  39.     DragItem := TabSet1.ItemAtPos(Point(X, Y));
  40.     if (DragItem > -1) and (DragItem < TabSet1.Tabs.Count) then
  41.     TabSet1.BeginDrag(False);
  42.   end;
  43. end;
  44.  
  45. procedure TForm1.TabSet1DragOver(Sender, Source: TObject; X, Y: Integer;
  46.   State: TDragState; var Accept: Boolean);
  47. var
  48.   DropPos: Integer;
  49. begin
  50.   if Source = TabSet1 then
  51.   begin
  52.     DropPos := TabSet1.ItemAtPos(Point(X, Y));
  53.     Accept := (DropPos > -1) and (DropPos <> TabSet1.TabIndex) and
  54.       (DropPos < TabSet1.Tabs.Count);
  55.   end
  56.   else Accept := False;
  57. end;
  58.  
  59. procedure TForm1.TabSet1DragDrop(Sender, Source: TObject; X, Y: Integer);
  60. var
  61.   OldPos: Integer;
  62.   NewPos: Integer;
  63. begin
  64.   if Source = TabSet1 then
  65.   begin
  66.     OldPos := TabSet1.TabIndex;
  67.     NewPos := TabSet1.ItemAtPos(Point(X, Y));
  68.     if (NewPos > -1) and (NewPos <> OldPos) then
  69.       TabSet1.Tabs.Move(OldPos, NewPos);
  70.   end;
  71. end;
  72.  
  73. end.
  74.