![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передать фокус в dbgrig(ячейку) из WebBrowser. не получается [D7, XP]
Vlad Oshin © (2007-02-20 18:39:00)Вопрос.. такое впечатление, что его вообще быть не должно..
есть на форме twebbrowser, адо(невидимые), dbgrid, button
twebbrowser грузит страничку, там заполнямые поля. Они заполняются.
Если кликнуть в браузер, потом в dbgrig, и ... ничего не получается. Как будто фокус остался в навигаторе. Однако, можно нажимать на кнопку, и двигать ползунки грида.
Более того, если кликнуть по вводимому html полю навигатора, то курсор там так продолжает стоять, издевательски подмигивая. Однако, опять же, можно нажимать на кнопку, и двигать ползунки грида.
Если не кликать по навигатору - то фокус передается на ячейку ДБгрида(если по нему, гриду, кликнуть)
Я поискал в интернете - есть проблема передать фокус самому браузеру(последовал совету, на всякий случай, и ничего, как и ожидалось. Фокус ввода застревает в нем), тут же совсем наоборот. Что же за такое?..
Ок.
Если повторить релоад и повторить заполнение программно - снова Дбгрид готов к приему фокуса ввода. (если по нему, гриду, кликнуть)
Если же опять щелкнуть по браузеру(даже подвинув ползунок) - возвращаемся к исходному положению.
.WebBrowser1Exit(Sender: TObject);
begin
dbgrid1.SetFocus;
- мимо...
Надо отобрать фокус! помогите..
Reindeer Moss Eater (2007-02-21 13:45:00) [1]Ну если так, то при клике определить сначала координаты мыши, затем ячейку и по ней поле. Потом вызвать FocusControl.
В том смысле, что не использовать для этого SelectedField.
Vlad Oshin (2007-02-21 13:40:00) [2]нет, обычно когда кликают по ячейке, то там и оказывается фокус. Можно редактировать соотв. поле.
В моем случае - после побывания фокуса вне грида(в браузере )
по клику по ячейке, фокус уходит не в поле, связанное с этой ячейкой, а в предыдущее.
столб1 столб2
1 3
2 4
кликаем по 1
столб1 столб2
1f 3
2 4
кликаем по браузеру
кликаем по 4, а готова к редактированию 1
столб1 столб2
1f 3
2 4
если еще раз кликнуть по 4, то она будет готова
Отсюда идея - может еще раз самому съэмулировать клик?
Reindeer Moss Eater (2007-02-21 13:34:00) [3]А что, сам по себе клик по ячейке не фокусирует саму эту ячейку?
Vlad Oshin (2007-02-21 13:15:00) [4]Хорошо.
по ячейке, где отображается нужный филд кликнули
- надо в него передать фокус.
как это сделать?
Reindeer Moss Eater (2007-02-21 13:02:00) [5]И чего?
Если dbgrid первым получает фокус ввода в какую либо ячейку - то после передачи фокуса ввода в webbrowser, вернуться фокус может только в ту же самую ячейку grida.
В другую - уже нет.
Только после возврата в ту же, можно переходить к другой.
Как избавится?
Вызвать FocusControl у нужного филда.
При чем здесь вообще клик по ячейке?
Vlad Oshin (2007-02-21 12:59:00) [6]procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
Showmessage('DBGrid1CellClick(');
Showmessage(dbgrid1.SelectedField.AsString);
dbgrid1.SelectedField.FocusControl;
выскакивает значение предыдущей выбраной ячейки..
Reindeer Moss Eater (2007-02-21 12:21:00) [7]TField.FocusControl
Vlad Oshin (2007-02-21 12:15:00) [8]Выяснил точнее
ситауция такая:
Если dbgrid первым получает фокус ввода в какую либо ячейку - то после передачи фокуса ввода в webbrowser, вернуться фокус может только в ту же самую ячейку grida.
В другую - уже нет.
Только после возврата в ту же, можно переходить к другой.
Как избавится?