StringGrid: Editieren trotz Options goRowSelect = true
-
Hi,
ich hab es auch so gemacht wie du in der zweiten Variante andeutest, aber das haut noch nicht ganz hin, mal sehen ob ich das noch hinbekomme. Der markierte Bereich stimmt noch nich ganz mit dem überein, was ich tatsächlich markiert habe.
-
void __fastcall TForm1::StringGrid1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(Shift.Contains(ssLeft)) { int ACol, ARow; StringGrid1->MouseToCell(X, Y, ACol, ARow); FocusedRowTop=ARow; FocusedRowBottom=ARow; StringGrid1->Repaint(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::StringGrid1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if(Shift.Contains(ssLeft)) { int ACol, ARow; StringGrid1->MouseToCell(X, Y, ACol, ARow); FocusedRowBottom=ARow; StringGrid1->Repaint(); } }
-
Vielleicht besser nur bei Veränderung neu zeichnen ...
void __fastcall TForm1::StringGrid1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if(Shift.Contains(ssLeft)) { int ACol, ARow; StringGrid1->MouseToCell(X, Y, ACol, ARow); if(ARow!=FocusedRowBottom) { FocusedRowBottom=ARow; StringGrid1->Repaint(); } } }
-
Hi,
naja was passiert aber wenn er nicht die Mouse zum Selektieren nimmt sondern nur die Tastatur?
-
OnKeyPress ?
-
ich glaub OnKeyDown bzw. OnKeyUp ist da besser,weil ich da ia auf alle Fälle zum Markieren noch die Umschalt-Taste drücken muss, aber wie komm ich da an die ZellKordinaten ran?
-
StringGrid1->Row;
-
ja ich habs mittlerweile fast hinbekommen, das Problem ist nur, das wenn die Funktion OnKeyDown aufgerufen wird in Grid->Row noch die Zeile der vorher markierten Zeile drin steht. Erst wenn OnSelectCell aufgerufen wurde, ändert sich das. Das hab ich aber ganz gut hinbekommen, und es funzt für eine Zeile,
markiert mit Maus oder Tastatur und für mehrere Zeilen mit Mouse.
Mit der Tastatur muss ich es noch hinbekommen, das im OnSelectCell nachgesehen wird welchen Status die Shift taste hat. Da grüble ich noch über ner Lösung.
Vielen Dank bis hierher, ich bin für weiter Vorschläge offen.
-
ich hab es auch für MultiSelect über die Tastatur hinbekommen,
eine Frage hab ich aber noch, wenn ich mit der Mouse was markiere, dann geht das im Moment immer nur von oben nach unten gibts auch ne Möglichkeit von unten nach oben? Das gleiche gilt auch für mit der Tastatur markieren.
Also nochmal deutlich.
Ich markier ein Zeile unten im Grid und will dann nach oben weitermarkieren, aber das geht irgendwie noch nich.
Hängt das vielleicht mit dem Top und Bottom zusammen, das müßte da ja verdret sein. Mir kommt da eine IdeeP.S. falls die Lösung jemanden interresiert einfach mal melden
-
Okay, vielen Dank es funzt