Jump to content

Не работает триггер если включено ReadOnly


x11

Recommended Posts

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

Link to comment
Share on other sites

  • 1 month later...

Можно ли как-то сделать, чтобы были видимы и работали кнопки триггеров, если у компоненты свойство ReadOnly включено?

Если да, то как?

Link to comment
Share on other sites

2 hours ago, x11 said:

Можно ли как-то сделать, чтобы были видимы и работали кнопки триггеров, если у компоненты свойство ReadOnly включено?

Если да, то как?

Здравствуйте,

function afterCreate(sender)
{
    let items = sender.getTriggers();
    for (let [key, value] of Object.entries(items)) {
        if (key !== "clear") {
            value.setDisabled(false);
        }
    };
}

 

  • Like 1
Link to comment
Share on other sites

10 minutes ago, x11 said:

В данном случае десктопный TUniEdit.

Вы можете использовать этот конфиг, вместо ReadOnly = True

procedure TMainForm.UniFormCreate(Sender: TObject);
begin
  UniEdit1.JSInterface.JSConfig('editable', [False])
end;

 

Link to comment
Share on other sites

8 minutes ago, Sherzod said:

Вы можете использовать этот конфиг

Теперь другая проблема. С триггером.

Когда на него нажимаю, чтобы разрешить редактирование поля, то появляется ошибка:

Quote

Config Option: O681->editable:true<br/>is refering a previous request,<br/>it's not allowed in AJAX request or JS handler.<br/>Use equivalent Public Property or Method instead.

 

вот код триггера:

procedure TfmUserEdit.edPassTriggerEvent(Sender: TUniFormControl; AButtonId: Integer);
begin
  inherited;
  if AButtonId = 0 then
  begin
    // разрешить ввод нового пароля
    edPass.Tag      := 1;
    SetEditable(fmUserEdit.edPass, True);
    edPass.Text     := '';
    edPass.SetFocus;
  end;
end;

 

Link to comment
Share on other sites

4 minutes ago, Sherzod said:

Да, в Вашем случае, с ReadOnly = True

ааа, т.е. urmNotEditable работает в паре только с ReadOnly, т.е. зависит от него?

 

Link to comment
Share on other sites

Just now, Sherzod said:

?

это я просто обернул в процедуру:

constEditable                   = 'editable';
...
...
...

procedure SetEditable(UniControl: TUniControl; val: boolean = False);
begin
  UniControl.JSInterface.JSConfig(constEditable, [val])
end;

 

 

Link to comment
Share on other sites

В общем, у меня получилось с помощью ReadOnly+ ReadOnlyMode. Я не знал ранее, что они взаимосвязаны.

Хотя в справке все это написано.

 

procedure TfmUserEdit.edPassTriggerEvent(Sender: TUniFormControl; AButtonId: Integer);
begin
  inherited;
  if AButtonId = 0 then
  begin
    //нажали троггер для смены пароля
    edPass.Triggers[AButtonId].Visible := false;
    edPass.Tag          := 1;// метка того, что пароль будет изменен
    edPass.ReadOnly     := false;    
    edPass.Text         := '';
    edPass.SetFocus;
  end;
end;

В общем, чтобы были видимы триггеры, нужно переключать свойство ReadOnlyMode в состояние urmNotEditable, тогда и элемент будет НЕредактируемым и триггеры будут видимыми.

Поэтому в моем случае достаточно включить urmNotEditable и можно управлять свойством ReadOnly и оно не будет влияет на видимость триггеров.

  • Upvote 1
Link to comment
Share on other sites

  • 3 weeks later...
On 1/9/2021 at 7:04 PM, Sherzod said:

Да, в Вашем случае, с ReadOnly = True

мобильной компоненте unimEdit тоже не помешало бы свойство "urmNotEditable"

Link to comment
Share on other sites

  • x11 changed the title to Не работает триггер если включено ReadOnly

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...