Ich vermute mal das durch OnSelectCell deine Zuweisung danach wieder überschrieben wird.
Wenn das Ganze aber in OnClick verschoben wird, geht es.
Delphi-Quellcode:
{SGValueTable / OnClick}
Procedure TForm1.SGValueTableClick(Sender: TObject);
Var myRect: TGridRect;
Begin
If SGValueTable.Selection.Left mod 2 = 0 Then Begin
myRect.Left := SGValueTable.Selection.Left;
myRect.Right := SGValueTable.Selection.Left + 1;
End Else Begin
myRect.Left := SGValueTable.Selection.Left - 1;
myRect.Right := SGValueTable.Selection.Left;
End;
myRect.Top := SGValueTable.Selection.Top;
myRect.Bottom := SGValueTable.Selection.Top;
SGValueTable.Selection := myRect;
End;
{oder etwas kleiner}
Procedure TForm1.SGValueTableClick(Sender: TObject);
Begin
SGValueTable.Selection := TGridRect(Rect(
SGValueTable.Selection.Left div 2 * 2, SGValueTable.Selection.Top,
SGValueTable.Selection.Left div 2 * 2 + 1, SGValueTable.Selection.Top));
End;
Bei einer Zuweisung auf Selection wird die letzte Zelle in der Markierung (unten/rechts) aktiviert.