Mega Code Archive

 
Categories / Delphi / VCL
 

Rearrange the tabs in a TPageControl using drag n drop

Title: rearrange the tabs in a TPageControl using drag 'n drop ? // In the PageControl's OnMouseDown event handler: procedure TForm1.PageControl1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin PageControl1.BeginDrag(False); end; // In the PageControl's OnDragDrop event handler: procedure TForm1.PageControl1DragDrop(Sender, Source: TObject; X, Y: Integer); const TCM_GETITEMRECT = $130A; var i: Integer; r: TRect; begin if not (Sender is TPageControl) then Exit; with PageControl1 do begin for i := 0 to PageCount - 1 do begin Perform(TCM_GETITEMRECT, i, lParam(@r)); if PtInRect(r, Point(X, Y)) then begin if i ActivePage.PageIndex then ActivePage.PageIndex := i; Exit; end; end; end; end; // In the PageControl's OnDragOver event handler: procedure TForm1.PageControl1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if Sender is TPageControl then Accept := True; end;