![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фокус на Stringgrid [D6, XP]
pavelkq © (2009-01-15 14:18:00)Устанавливаю фокус на строку (выделение строками).
StringGrid1.SetFocus;
StringGrid1.Row:=MyRow;
Срабатывает, но эта выделенная строка находится где-то внизу таблицы, за пределами видимости. Если ее двинуть вверх/вниз (клавишами или колесиком мышки), то строка сразу становится в видимой части таблицы. Как сделать, чтобы она сразу была видна посре перемещения на нее фокуса?
{RASkov} (2009-01-15 22:57:00) [1]> StringGrid.TopRow не помог.
Не верю. Ну да ладно....
А если сделать так:
StringGrid1.Row:=MyRow-1;
StringGrid1.Row:=MyRow;
StringGrid1.SetFocus;
? :) Не, так конечно делать не нужно, но попробуй.... Ибо:
procedure TCustomGrid.SetRow(Value: Longint);
begin
if Row <> Value then FocusCell(Col, Value, True);
end;
Победить можно так:
type TMyGrid = class(TCustomGrid);
procedure TForm1.Button1Click(Sender: TObject);
begin
TMyGrid(StringGrid1).FocusCell(StringGrid1.Col, MyRow, True);
end;
MsGuns (2009-01-15 21:00:00) [2]Чему равен RowCount ?
Pavelkq (2009-01-15 20:47:00) [3]
> {RASkov} ©
StringGrid.TopRow не помог. У кого еще такие проблемы были и как их победить?
{RASkov} (2009-01-15 15:24:00) [4]В D7 код из [0] нормально отрабатывает... ничего двигать и нажимать дополнительно не нужно...
Но... Но если в данный момент(в момент выполнения кода [0]) Текущий Row у StringGrida = MyRow, и он не в области видимости, то да - ничего не произойдет....
Можно в данном случае поиграться с StringGrid.TopRow...