Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.11;
Скачать: CL | DM;

Вниз

Передать фокус в dbgrig(ячейку) из WebBrowser. не получается   Найти похожие ветки 

 
Vlad Oshin ©   (2007-02-20 18:39) [0]

Вопрос.. такое впечатление, что его вообще быть не должно..
есть на форме twebbrowser, адо(невидимые), dbgrid, button
twebbrowser грузит страничку, там заполнямые поля. Они заполняются.

Если кликнуть в браузер, потом в dbgrig, и ... ничего не получается. Как будто фокус остался в навигаторе. Однако, можно нажимать на кнопку, и двигать ползунки грида.
Более того, если кликнуть по вводимому html полю навигатора, то курсор там так продолжает стоять, издевательски подмигивая. Однако, опять же, можно нажимать на кнопку, и двигать ползунки грида.

Если не кликать по навигатору - то фокус передается на ячейку ДБгрида(если по нему, гриду, кликнуть)

Я поискал в интернете - есть проблема передать фокус самому браузеру(последовал совету, на всякий случай, и ничего, как и ожидалось. Фокус ввода застревает в нем), тут же совсем наоборот. Что же за такое?..
Ок.
Если повторить релоад и повторить заполнение программно - снова Дбгрид готов к приему фокуса ввода. (если по нему, гриду, кликнуть)
Если же опять щелкнуть по браузеру(даже подвинув ползунок) - возвращаемся к исходному положению.

.WebBrowser1Exit(Sender: TObject);
begin
dbgrid1.SetFocus;
- мимо...

Надо отобрать фокус! помогите..


 
Vlad Oshin ©   (2007-02-21 12:15) [1]

Выяснил точнее
ситауция такая:
Если dbgrid первым получает фокус ввода в какую либо ячейку - то после  передачи фокуса ввода в webbrowser, вернуться фокус может только в ту же самую ячейку grida.
В другую - уже нет.
Только после возврата в ту же, можно переходить к другой.

Как избавится?


 
Reindeer Moss Eater ©   (2007-02-21 12:21) [2]

TField.FocusControl


 
Vlad Oshin ©   (2007-02-21 12:59) [3]

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
Showmessage("DBGrid1CellClick(");
Showmessage(dbgrid1.SelectedField.AsString);
dbgrid1.SelectedField.FocusControl;

выскакивает значение предыдущей выбраной ячейки..


 
Reindeer Moss Eater ©   (2007-02-21 13:02) [4]

И чего?
Если dbgrid первым получает фокус ввода в какую либо ячейку - то после  передачи фокуса ввода в webbrowser, вернуться фокус может только в ту же самую ячейку grida.
В другую - уже нет.
Только после возврата в ту же, можно переходить к другой.

Как избавится?


Вызвать FocusControl у нужного филда.
При чем здесь вообще клик по ячейке?


 
Vlad Oshin ©   (2007-02-21 13:15) [5]

Хорошо.
по ячейке, где отображается нужный филд кликнули
- надо в него передать фокус.
как это сделать?


 
Reindeer Moss Eater ©   (2007-02-21 13:34) [6]

А что, сам по себе клик по ячейке не фокусирует саму эту ячейку?


 
Vlad Oshin ©   (2007-02-21 13:40) [7]

нет, обычно когда кликают по ячейке, то там и оказывается фокус. Можно редактировать соотв. поле.

В моем случае - после побывания фокуса вне грида(в браузере )
по клику по ячейке, фокус уходит не в поле, связанное с этой ячейкой, а в предыдущее.


столб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:45) [8]

Ну если так, то при клике определить сначала координаты мыши, затем ячейку и по ней поле. Потом вызвать FocusControl.
В том смысле, что не использовать для этого SelectedField.



Страницы: 1 вся ветка

Текущий архив: 2007.03.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
1-1168958640
alexey_public
2007-01-16 17:44
2007.03.11
Расширенные возможности MessageDlg


2-1171228788
Alban
2007-02-12 00:19
2007.03.11
Подсчёт трафика в Delphi


3-1166075069
Phoenix
2006-12-14 08:44
2007.03.11
Агрегирование с TClientDataSet


3-1165911695
Megabyte
2006-12-12 11:21
2007.03.11
Оптимизировать запрос


6-1159806707
vedm
2006-10-02 20:31
2007.03.11
TIdMultiPartFormDataStream и большие файлы.