StingGrid i zaznaczanie komórek

0

Witam,
Mam taki problem, że domyślnie mam ustawione aby w StringGridzie zaznaczało mi całymi wierszami, jednak są określone komórki które mają być zaznaczone pojedynczo. Ja robię to w taki sposób jak poniżej ale nie do końca to działa, gdyż na początku owszem komórki są zaznaczane całymi wierszami lecz w momencie gdy przechodzę do tej która ma być zaznaczona pojedynczo a następnie ponownie do tej która ma być zaznaczona całymi wierszami to przy pierwszym przejściu zaznaczenie całego wiersza nie działa. Przy następnych kliknięciach już jest ok.

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
with StringGrid1 do
  begin
    if Arow=1 then Options:=Options - [goRowSelect] else Options:=Options + [goRowSelect];
  end;
end;

end;

No i jeszcze jedno pytanie jak pogrubić czionkę aktualnie zaznaczonej/klikniętej komórki ?

Pozdrawiam i dziękuję za podpowiedzi

0

moze nie jest to piekne rozwiazanie ale dziala ;]

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var r:TGridRect;
begin
if aRow<>1 then
        begin
        if not (goRowSelect in StringGrid1.Options) then
                begin
                StringGrid1.Perform(WM_LBUTTONUP,0,0);
                canSelect:=false;
                r.Left:=1;
                r.Right:=StringGrid1.ColCount-1;
                r.Top:=aRow;
                r.Bottom:=aRow;
                StringGrid1.Selection:=r;
                end;
        StringGrid1.Options:=StringGrid1.Options + [goRowSelect];
        end else StringGrid1.Options:=StringGrid1.Options - [goRowSelect];
end;

//znalazlem teraz mala niedogodnosc: przy zaznaczaniu wielu komorek, zawsze zznaczy tylko caly pierwszy wiesz.
a jesli chodzi o pogrubienie to chyba tylko Canvasem:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
if (gdSelected in State) then
        with StringGrid1 do
                begin
                 Canvas.Font.Style:=[fsBold];
                 Canvas.TextOut(rect.Left+2, rect.Top+2, Cells[aCol, aRow]);
                end;
end;
0

ok dziękuję bardzo :), to jest to o co mi chodziło, a akurat ten mankament mi nie przeszakdza ;)

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