Multiselect w StringGrid

0

Witam mam pewien problem. Otóż mam sobie stringgrida, w którym niektóre komórki mają różne kolory (narysowane prostokąciki). Wszystko fajnie, jednakże problem jest tego typu, że kiedy komorki sa "wypelnione" kwadracikami to nie da się używać multiselecta. Czy wie ktoś może w jaki sposób można zaznaczyć takie komorki? Myślałem żeby sprawdzać co jest pod spodem kwadratów, ale nie mam pomysłu jak to wykonać.

Pozdrawiam

0

jak to się nie da???????????? Co ma kolor komórki do jej zaznaczania lub nie????

0

No poważnie nie daje rady. Jeżeli mam komórki powiedzmy w czerwonym kolorze i chce zaznaczyć powiedzmy pierwsze 3 (poprzez myszkę lub shift) to zaznacza się tylko komorka od której chcę zacząć. Nawet programowo pobierałem ile komorek jest zaznaczonych i zawsze bylo 1.

Sory że post pod postem, ale dodam jeszcze jak wygląda u mnie to kolorowanie, moze to w czymś pomoże. Tak więc w DrawCell w StringGrid'zie mam kod a część odpowiadająca za kolorowanie to:

 with (Sender as TStringGrid) do
  begin

    if cos_tam then
      Canvas.Brush.Color := $0055DFFF;
    
   //ciach

    Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, cells[acol, arow]);
    Canvas.FrameRect(Rect); 

    end;

No i potem już przestaje się zaznaczać wiecej niż jedna komórka

0

zaznaczenie jest, tylko go prawdopodobnie nie widac. przy rysowani musisz sprawdzac czy kwadrat jest zaznaczony. z tego co pamietam w OnDrawCell w ktoryms z parametrow cos takiego bylo (narysuj na inny kolor albo zignoruj rysowanie)

EDIT:
parametr: State: TGridDrawState
TGridDrawState = set of (gdSelected, gdFocused, gdFixed);

 with (Sender as TStringGrid) do
  begin
    if not (gdSelected in State) then
      Canvas.Brush.Color := $0055DFFF;

    Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, cells[acol, arow]);
    Canvas.FrameRect(Rect);
  end;

PS. okropny kolor

0

Działa!!! Wielkie dzięki krwq. A kolor będzie można definiować, a do prób taki mi jakiś wyszedł :D.

1 użytkowników online, w tym zalogowanych: 0, gości: 1