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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...