"EhLib.Com"
https://forum.ehlib.com/ru/

Фокус на SearchPanel в DropDown форме (з)
https://forum.ehlib.com/ru/viewtopic.php?f=4&t=2893
Страница 1 из 1

Автор:  Cinemaizer [ 10 дек 2019, 13:20 ]
Заголовок сообщения:  Фокус на SearchPanel в DropDown форме (з)

Все привет!
Подскажите как реализовать фокусировку курсора на SearchPanel в DropDown форме, если она (панель) имеет Location: splGridTopEh (внутренняя, вверху) ?
Изображение

Попытка повесить на событие onShow на форме такой код, приводит к AV:
Код:
procedure TfrmDR_DOWN_GETTING_CLIENT.CustomDropDownFormEhShow(
  Sender: TObject);
begin
  TWincontrolEh(grMAINTABLE1.SearchPanel).SetFocus;
end;


А такой код, приводит к AbstractError:
Код:
procedure TfrmDR_DOWN_GETTING_CLIENT.CustomDropDownFormEhShow(
  Sender: TObject);
begin
  if TWinControlEh(grMAINTABLE1.SearchPanel).CanFocus then
  TWinControlEh(grMAINTABLE1.SearchPanel).SetFocus;
end;

Автор:  OlegX [ 11 дек 2019, 10:14 ]
Заголовок сообщения:  Re: Фокус на SearchPanel в DropDown форме

Можно так попробовать:

Код:
TDBGridEhHelper = class helper for TDBGridEh
  private
    function GetSearchPanelControl(): TDBGridSearchPanelControlEh;
  public
    property SearchPanelControl: TDBGridSearchPanelControlEh read GetSearchPanelControl;
  end;


Код:
function TDBGridEhHelper.GetSearchPanelControl(): TDBGridSearchPanelControlEh;
begin
  Result := Self.FSearchPanelControl;
end;


И затем grid.SearchPanelControl.FindEditor.SetFocus;

Но! C первого раза не сработет (у меня, по крайней мере, не отрабатывает), только после того, как единожды фокус будет помещён кликом мыши.
Непосредственно в OnShow тоже не будет работать - нужно разносить, например, через сообщение:

Код:
const
  WM_TEST = WM_APP + 201;

type
  TformTest = class(TForm)
  protected
    procedure WMTest(var &Message: TMessage); message WM_TEST;
  end;

procedure TformTest.WMTest(var &Message: TMessage);
begin
  grid.SearchPanelControl.FindEditor.SetFocus;
end;


ЗЫ. И я не на DropDown форме пробовал.

Автор:  EhLibSupport [ 12 дек 2019, 16:21 ]
Заголовок сообщения:  Re: Фокус на SearchPanel в DropDown форме

Добрый день.

Попробуйте в событии OnShow установить SearchPanel.Active

Код:
procedure TForm1.FormShow(Sender: TObject);
begin
  DBGridEh1.SearchPanel.Active = True;
end;

Автор:  Cinemaizer [ 12 дек 2019, 16:39 ]
Заголовок сообщения:  Re: Фокус на SearchPanel в DropDown форме

Все получилось! Спасибо!

Страница 1 из 1 Часовой пояс: UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/