Browse Source

Zeilen in der ObjTabelle können jetzt vom benutzer verschoben werden

Kolja Strohm 5 years ago
parent
commit
9020ee8213
2 changed files with 24 additions and 2 deletions
  1. 21 1
      Tabelle.cpp
  2. 3 1
      Tabelle.h

+ 21 - 1
Tabelle.cpp

@@ -26,6 +26,7 @@ ObjTabelle::ObjTabelle()
     spaltenAnzahl( 0 ),
     zeilenAnzahl( 0 ),
     klickSpalte( -1 ),
+    klickZeile( -1 ),
     mSpalte( -1 ),
     mZeile( -1 ),
     mx( 0 ),
@@ -883,6 +884,7 @@ void ObjTabelle::doMausEreignis( MausEreignis &me ) // verarbeitet Nachrichten
         {
             removeStyle( Style::Fokus );
             klickSpalte = -1;
+            klickZeile = -1;
         }
         if( !me.verarbeitet && !ausserhalb && !aufScroll )
         {
@@ -892,9 +894,10 @@ void ObjTabelle::doMausEreignis( MausEreignis &me ) // verarbeitet Nachrichten
             {
                 addStyle( Style::Fokus );
                 klickSpalte = -1;
+                klickZeile = -1;
                 mSpalte = -1, mZeile = -1;
             }
-            if( ( hatStyle( Style::SpaltenBreiteChangeable ) || hatStyle( Style::ZeilenHeightChangeable ) ) && klickSpalte < 0 )
+            if( ( hatStyle( Style::SpaltenBreiteChangeable ) || hatStyle( Style::ZeilenHeightChangeable ) ) && klickSpalte < 0 && klickZeile < 0 )
             {
                 if( hatStyle( Style::SpaltenBreiteChangeable ) )
                 {
@@ -954,6 +957,23 @@ void ObjTabelle::doMausEreignis( MausEreignis &me ) // verarbeitet Nachrichten
                     }
                 }
             }
+            if( hatStyle( Style::ZeilenBeweglich ) && oy == (int)oy && mSpalte == -1 && mZeile == -1 )
+            {
+                if( klickZeile >= 0 && klickZeile < zeilenAnzahl && klickZeile != oy && !ox && oy >= 0 )
+                {
+                    setZeilePosition( klickZeile, (int)oy );
+                    klickZeile = (int)oy;
+                    rend = 1;
+                }
+                if( me.id == ME_PLinks )
+                {
+                    if( !ox && klickZeile < 0 )
+                    {
+                        klickZeile = (int)oy;
+                        rend = 1;
+                    }
+                }
+            }
         }
         me.mx += ( horizontalScrollBar && hatStyle( Style::HScroll ) ) ? horizontalScrollBar->getScroll() : 0;
         me.my += ( vertikalScrollBar && hatStyle( Style::VScroll ) ) ? vertikalScrollBar->getScroll() : 0;

+ 3 - 1
Tabelle.h

@@ -27,12 +27,13 @@ namespace Framework
             const static __int64 ZeilenHeightMin = 0x00010000; // Wenn dieser Flag gesetzt wird, so kann der Nutzer trotz des Flags ZeilenHöheÄnderbar die Zeilenhöhe nicht kleiner machen als eine bestimmte Grenze
             const static __int64 ZeilenHeightMax = 0x00020000; // Wenn dieser Flag gesetzt wird, so kann der Nutzer trotz des Flags ZeilenHöheÄnderbar die Zeilenhöhe nicht größer machen als eine bestimmte Grenze
             const static __int64 SpaltenBeweglich = 0x00040000; // Wenn dieser Flag gesetzt wird, so kann der Nutzer die Reihenfolge der Spalten bestimmen, in dem er sie per Drag and Drop verschiebt
+            const static __int64 ZeilenBeweglich = 0x00800000; // Wenn dieser Flag gesetzt wird, so kann der Nutzer die Reihenfolge der Zeilen bestimmen, in dem er sie per Drag and Drop verschiebt
             const static __int64 AuswahlRahmen = 0x0080000; // Wenn dieser Flag gesetzt ist, so bekommt das Feld, dass der Benutzer durch den Flag Erlaubt auswählen kann einen anderen Rahmen
             const static __int64 AuswahlBuffer = 0x00100000; // Wenn dieser Flag gesetzt ist, so bekommt das Feld, dass der Benutzer durch den Flag Erlaubt auswählen kann ein anderes AlphaFeld
             const static __int64 AuswahlMultistyled = 0x00200000; // Wenn dieser Flag gesetzt ist, so kann jedes Feld andere Rahmen und AlphaFelder beim Auswählen haben.
             const static __int64 Raster = 0x00400000; // Wenn dieser Flag gesetzt ist, so werden zwischen den Feldern Linien gezeichnet
 
-            const static __int64 beweglich = SpaltenBreiteChangeable | ZeilenHeightChangeable | SpaltenBeweglich; // Vereint die Flags: SpaltenBreiteÄnderbar, ZeilenHöheÄnderbar, SpaltenBeweglich
+            const static __int64 beweglich = SpaltenBreiteChangeable | ZeilenHeightChangeable | SpaltenBeweglich | ZeilenBeweglich; // Vereint die Flags: SpaltenBreiteÄnderbar, ZeilenHöheÄnderbar, SpaltenBeweglich, ZeilenBeweglich
             const static __int64 min_max = SpaltenBreiteMax | SpaltenBreiteMin | ZeilenHeightMax | ZeilenHeightMax; // Vereint die Flags: SpaltenBreiteMax, SpaltenBreiteMin, ZeilenHöheMax, ZeilenHöheMax
             const static __int64 scroll = VScroll | HScroll; // Vereint die Flags: VScroll, HScroll
             const static __int64 normal = Rahmen | Erlaubt | Sichtbar | AuswahlBuffer | AuswahlRahmen | Raster; // Vereint die Flags: Rahmen, Erlaubt, Sichtbar, SpaltenBeweglich, AuswahlBuffer, AuswahlRahmen, Raster
@@ -49,6 +50,7 @@ namespace Framework
         Array< int > *maxZeilenHeight;
         int spaltenAnzahl, zeilenAnzahl;
         int klickSpalte;
+        int klickZeile;
         double mSpalte, mZeile;
         int mx, my;
         Punkt selected;