Announcement

Collapse
No announcement yet.

Drag Drop für TTabControl

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Drag Drop für TTabControl

    Hi,
    ich habe ein Problem mit TTabControl.
    Ich möchte die Tabs untereinander verschieben und die neue Reihenfolge an meine TList weiter geben.
    Ich habe es wie folgt versucht, funktioniert aber nicht.
    Code:
    procedure TForm1.TabControl1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
         Drawing := True;
    end;
    
    procedure TForm1.TabControl1MouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    var
       Source : TObject;
    begin
       if Drawing then begin
       TabControl1.DragMode := dmAutomatic;
    //   TabControl1DragOver(Sender, TabControl1.Tabs.Objects[TabControl1.TabIndex]; x, y, dsDragMove,);
       TabControl1DragDrop(Sender, TabControl1.Tabs.Objects[TabControl1.TabIndex], x, y);
    
       end;
    end;
    
    procedure TForm1.TabControl1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
         Drawing := False;	{ clear the Drawing flag }
         TabControl1.DragMode := dmManual;
    end;
    
    procedure TForm1.TabControl1DragDrop(Sender, Source: TObject; X,
      Y: Integer);
    var
      iNewPos : Integer;
    begin
      with TabControl1 do begin
        iNewPos := IndexOfTabAt(x, y); // ermittle Eintrag unter maus
        if iNewPos = -1 then // kein Eintrag darunter
           iNewPos := FMySheet.Count - 1; // also werde letzter
        FMySheet.Move(TabControl1.TabIndex, iNewPos); // Neue Position
        TabControl1.Tabs.Move(TabControl1.TabIndex, iNewPos); // Neue Position
        TabControl1.TabIndex := iNewPos;
     
        Statchanged := True;
      end;
    end;
    
    procedure TForm1.TabControl1DragOver(Sender, Source: TObject; X,
      Y: Integer; State: TDragState; var Accept: Boolean);
    begin
      Accept := Source = TabControl1; 
    end;
    ich hoffe ihr könnt mir helfen.
    Danke
Working...
X