// Hiermit kann man TabSheets bei einem TPageControl mit gedrückt-
// gehaltener Maustaste verschieben. Es wird davon ausgegangen, dass
// sich das PageControl auf Form1 befindet, deshalb wird die Prozedur
//
FormMouseMove benutzt.


// Getestet mit D4 unter XP

var 
  xx: integer; 
  breite: integer = 50; 
  unten: boolean = false; 
 
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, 
  Y: Integer); 
begin 
  unten := false; 
  Screen.cursor := crDefault; 
end; 
 
procedure TForm1.FormCreate(Sender: TObject); 
var 
  i: integer; 
begin 
  with PageControl1 do begin 
    for i := 0 to PageCount - 1 do begin 
      if Canvas.TextWidth(Pages[i].Caption) + 10 > breite then 
        breite := Canvas.TextWidth(Pages[i].Caption) + 10; 
      Pages[i].OnMouseMove := FormMouseMove; 
    end; 
    Tabwidth := breite; // Voraussetzung 
  end; 
end; 
 
procedure TForm1.PageControl1MouseDown(Sender: TObject; 
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
begin 
  if button = mbleft then begin 
    xx := x; 
    unten := true; 
  end; 
end; 
 
procedure TForm1.PageControl1MouseUp(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer); 
begin 
  unten := false; 
  Screen.cursor := crDefault; 
end; 
 
procedure TForm1.PageControl1MouseMove(Sender: TObject; Shift: TShiftState; 
  X, Y: Integer); 
begin 
  if unten then 
    if x < PageControl1.PageCount * breite then begin 
      if x <> xx then Screen.cursor := crDrag; 
      PageControl1.ActivePage.Pageindex := x div breite; 
    end; 
end;



 

Zugriffe seit 6.9.2001 auf Delphi-Ecke