mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-22 12:39:29 +02:00
LCL: TTabControl: make tabs drag- and dropable. Issue #24022
git-svn-id: trunk@53981 -
This commit is contained in:
parent
95a697d5a2
commit
0c438b980e
@ -726,6 +726,10 @@ type
|
||||
protected
|
||||
FHandleCreated: TNotifyEvent;
|
||||
procedure CreateHandle; override;
|
||||
procedure DoStartDrag(var DragObject: TDragObject); override;
|
||||
procedure DragDrop(Source: TObject; X, Y: Integer); override;
|
||||
procedure DragOver(Source: TObject; X,Y: Integer; State: TDragState;
|
||||
var Accept: Boolean); override;
|
||||
procedure MouseDown(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override;
|
||||
procedure MouseMove(Shift: TShiftState; X,Y: Integer); override;
|
||||
procedure MouseUp(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override;
|
||||
@ -828,6 +832,7 @@ type
|
||||
procedure CreateWnd; override;
|
||||
procedure DestroyHandle; override;
|
||||
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
||||
procedure SetDragMode(Value: TDragMode); override;
|
||||
procedure SetTabIndex(Value: Integer); virtual;
|
||||
procedure UpdateTabImages;
|
||||
procedure ImageListChange(Sender: TObject);
|
||||
|
@ -148,20 +148,45 @@ begin
|
||||
FHandleCreated(self);
|
||||
end;
|
||||
|
||||
procedure TNoteBookStringsTabControl.DoStartDrag(var DragObject: TDragObject);
|
||||
begin
|
||||
if (Parent is TTabControl) then
|
||||
begin
|
||||
if Assigned(TTabControl(Parent).OnStartDrag) then
|
||||
TTabControl(Parent).OnStartDrag(Parent, DragObject);
|
||||
if not Assigned(DragObject) then
|
||||
DragObject := TDragControlObject.AutoCreate(Parent);
|
||||
end;
|
||||
inherited DoStartDrag(DragObject);
|
||||
end;
|
||||
|
||||
procedure TNoteBookStringsTabControl.DragDrop(Source: TObject; X, Y: Integer);
|
||||
begin
|
||||
inherited DragDrop(Source, X, Y);
|
||||
if (Parent is TTabControl) and Assigned(TTabControl(Parent).OnDragDrop) then
|
||||
TTabControl(Parent).OnDragDrop(Parent, Source, X, Y);
|
||||
end;
|
||||
|
||||
procedure TNoteBookStringsTabControl.DragOver(Source: TObject; X, Y: Integer;
|
||||
State: TDragState; var Accept: Boolean);
|
||||
begin
|
||||
inherited DragOver(Source, X, Y, State, Accept);
|
||||
if (Parent is TTabControl) and Assigned(TTabControl(Parent).OnDragOver) then
|
||||
TTabControl(Parent).OnDragOver(Parent, Source, X, Y, State, Accept);
|
||||
end;
|
||||
|
||||
procedure TNoteBookStringsTabControl.MouseDown(Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
inherited MouseDown(Button, Shift, X, Y);
|
||||
if Assigned(Parent) and (Parent is TTabControl)
|
||||
and Assigned(TTabControl(Parent).OnMouseDown) then
|
||||
if (Parent is TTabControl) and Assigned(TTabControl(Parent).OnMouseDown) then
|
||||
TTabControl(Parent).OnMouseDown(Parent, Button, Shift, X, Y);
|
||||
end;
|
||||
|
||||
procedure TNoteBookStringsTabControl.MouseMove(Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
inherited MouseMove(Shift, X, Y);
|
||||
if Assigned(Parent) and (Parent is TTabControl)
|
||||
and Assigned(TTabControl(Parent).OnMouseMove) then
|
||||
if (Parent is TTabControl) and Assigned(TTabControl(Parent).OnMouseMove) then
|
||||
TTabControl(Parent).OnMouseMove(Parent, Shift, X, Y);
|
||||
end;
|
||||
|
||||
@ -169,24 +194,21 @@ procedure TNoteBookStringsTabControl.MouseUp(Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
inherited MouseUp(Button, Shift, X, Y);
|
||||
if Assigned(Parent) and (Parent is TTabControl)
|
||||
and Assigned(TTabControl(Parent).OnMouseUp) then
|
||||
if (Parent is TTabControl) and Assigned(TTabControl(Parent).OnMouseUp) then
|
||||
TTabControl(Parent).OnMouseUp(Parent, Button, Shift, X, Y);
|
||||
end;
|
||||
|
||||
procedure TNoteBookStringsTabControl.MouseEnter;
|
||||
begin
|
||||
inherited MouseEnter;
|
||||
if Assigned(Parent) and (Parent is TTabControl)
|
||||
and Assigned(TTabControl(Parent).OnMouseEnter) then
|
||||
if (Parent is TTabControl) and Assigned(TTabControl(Parent).OnMouseEnter) then
|
||||
TTabControl(Parent).OnMouseEnter(Parent);
|
||||
end;
|
||||
|
||||
procedure TNoteBookStringsTabControl.MouseLeave;
|
||||
begin
|
||||
inherited MouseLeave;
|
||||
if Assigned(Parent) and (Parent is TTabControl)
|
||||
and Assigned(TTabControl(Parent).OnMouseLeave) then
|
||||
if (Parent is TTabControl) and Assigned(TTabControl(Parent).OnMouseLeave) then
|
||||
TTabControl(Parent).OnMouseLeave(Parent);
|
||||
end;
|
||||
|
||||
@ -624,6 +646,12 @@ begin
|
||||
Images := nil;
|
||||
end;
|
||||
|
||||
procedure TTabControl.SetDragMode(Value: TDragMode);
|
||||
begin
|
||||
inherited SetDragMode(Value);
|
||||
TTabControlNoteBookStrings(FTabs).NoteBook.SetDragMode(Value);
|
||||
end;
|
||||
|
||||
procedure TTabControl.SetTabIndex(Value: Integer);
|
||||
begin
|
||||
TTabControlStrings(FTabs).TabIndex:=Value;
|
||||
|
Loading…
Reference in New Issue
Block a user