TStringGrid - Selection

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
Cool-Tuc
Beiträge: 100
Registriert: Mi 6. Apr 2011, 17:10

TStringGrid - Selection

Beitrag von Cool-Tuc »

Hallo alle,
ich verwende die aktuellste Version von "lazarus". In einem TStringGrid habe ich die Einstellung "Multiselect" eingestellt; funktioniert wo weit auch. Wenn ich aber z.B. die 1,3 und 5 Zeile markiere (mit Ctrl) und ich markiere z.B. die Zeile 3 ein 2-tes mal, sollte doch die Markierung wieder verschwinden oder nicht? Und genau das tut es nicht. Habe ich vielleicht vergessen, in den Einstellungen etwas einzustellen?
Danke
udo

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: TStringGrid - Selection

Beitrag von wp_xyz »

Cool-Tuc hat geschrieben:[...] sollte doch die Markierung wieder verschwinden oder nicht?

Das LCL StringGrid tut das offenbar nicht, mit jedem Click wird die Auswahl immer nur erweitert (AddSelectedRange), nie reduziert, höchstens komplett gelöscht (ClearSelections):

Code: Alles auswählen

procedure TCustomGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
[...]
              if (goRangeSelect in Options) and (FRangeSelectMode = rsmMulti)
              then begin
                if (MULTISEL_MODIFIER in Shift) then
                  AddSelectedRange
                else begin
                  ClearSelections;
                  Invalidate;
                end;
              end;
[...]
 
procedure TCustomGrid.AddSelectedRange;
var
  n: Integer;
begin
  if (goRangeSelect in Options) and (FRangeSelectMode = rsmMulti) then begin
    n := Length(FSelections);
    SetLength(FSelections, n+1);
    FSelections[n] := FRange;
  end;
end;

Antworten