// 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;
|