Zaznaczanie wszystkich komórek wiersza w StringGridzie po wciśnięciu przycisku

0

Witam! Istnieje możliwość zrobienia czegoś takiego ze wpisze w dane pole numer wiersza, wcisne przycisk i zaznaczy mi sie dany wiersz w StringGridzie?

2

Tak.

3

Przykładowy sposób:

procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_RETURN then
    with StringGrid1 do
      Selection := TGridRect(Rect(FixedCols, Row, ColCount, Row));
end;

Nie wiem ile masz FixedCols, ale powinno działać z dowolną ich ilością; Jedna wada - po wciśnięciu klawisza Enter aktywowana jest ostatnia komórka w podświetlonym wierszu, więc po ponownym wciśnięciu klawisza edytowana jest ostatnia komórka; Aktywowanie odpowiedniej komórki pozostawiam do zrobienia Tobie;

Dodam jeszcze, że typ TGridRect to alias typu TRect, więc można go wypełnić funkcją Rect i wykorzystując rzutowanie na ten pierwszy uzupełnić właściwość.

3

Jak mawia stara porzekadło. Jak dwie osoby mówią Tobie, że jesteś pijany, to się połóż spać. Także skoro dwie osoby, które powinienem słuchać tutaj wspominały mi że stanowczo za dużo piszę na tym forum i pewnie w ogólę. Dlatego na zadane tak konkretnie pytanie, odpowiedziałem najkrócej jak się dało. Bo rozumiem, ze ktoś takiej odpowiedzi, a nie gotowca oczekiwał.

Co do konkretnego kodu ja zrobił bym to tak, bo zrozumiałem, że pole może być i edycyjne. Jeśli nie to można tak, jak podał poprzednik. I na przyszłość radzę, zajrzeć do Helpa, pogooglować. Pytanie na forum powinno paść - w ostateczności. Tylko po samodzielnym wkładzie w rozwiązanie problemu.

var
  RowNum : integer;
  SelRect : TGridRect;
begin
  if TryStrToInt(Edit1.Text, RowNum) then
  begin
    with StringGrid1 do
    begin
      with SelRect do
      begin
        Top := RowNum;
        Bottom := RowNum;
        Left := FixedRows;
        Right := ColCount - 1;
      end;
      Selection := SelRect;
    end;
  end;
end;

W polu edycyjnym podajemy numer wiersza indeksowany od zera. Tym razem wyszła rozpiska. Ale sam kod pewnie zrodził by kolejne pytania.

0

Dzięki Panowie...oby dwie odpowiedzi były przydatne:)

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