Jump to content

UnimDBLookupComboBox + EmptyText


x11

Recommended Posts

При создании/показе окна я указываю placeholder для всех unimDBLookupComboBox`ов, т.к. у этих компонентов нет свойства EmptyText :(

procedure SetPlaceholder(const sText: string; FormControl: TUniFormControl; sExtraSearchTags: string = '');
begin
// задать EmptyText, т.к. у некоторых компонент такое свойство отсутствует
  if IsPublishedProp(FormControl, 'EmptyText') then
    SetPropValue(FormControl, 'EmptyText', sText)
  else
    FormControl.JSInterface.JSConfig('placeholder', [sText]);


  FormControl.Hint := sText + ' ' + sExtraSearchTags;
end;

 

но когда в списке что-то выбрано, то placeholder не виден, а по иконке не всегда понятно - что это за параметр, но можно сделать так, что если нажмешь на иконку, то можно выдать MessageBox с названием параметра (с названием компоненты). А название записано в placeholder. А как получить placeholder при нажатии на кнопку или в моем случае при нажатии на иконку?

Screenshot_10.jpg

Link to comment
Share on other sites

Ещё раз попробую пояснить.

Вот пользователь открыл форму просмотра объявления. Видит какую-то иконку и выбранное в unimDBLookupComboBox значение.

Но пользователь не знает и не может догадаться - что это за параметр объявления, т.к. подписи нет, а placeholder/EmptyText виден только если ничего не выбрано.

Как узнать, что это за параметр объявления?

Вот я и придумал - нажать на FieldLabel и показать ShowMessage. А в ShowMessage я хочу показать то, что находится в EmptyText.

Но EmptyText есть у unimEdit, а у unimDBLookupComboBox этого свойства нет.

 

procedure TfmmParentMobile.comboOperAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings);
begin
  inherited;
  if EventName = cEventNameFieldLabelClick then
    ShowMessageByPlaceholder(Sender);
end;


procedure ShowMessageByPlaceholder(FormControl: TComponent);
Var
 val: variant;

begin
  if IsPublishedProp(FormControl, 'EmptyText') then
  begin
    val := GetPropValue(FormControl, 'EmptyText');
    if not varisnull(val) then
      MessageBox(constParamMsg, VarToStr(val));

  end;
end;

 

Screenshot_23.jpg

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...