Jump to content

Recommended Posts

Posted

Как из одной формы обратиться к другой форме?

Нужно при закрытии модальной формы передать параметр родительской.

Заранее благодарен!! 

Posted
20 minutes ago, dbf_usr said:

Нужно при закрытии модальной формы передать параметр родительской.

Можете использовать callback.

К примеру:

\FMSoft\Framework\uniGUI\Demos\Desktop\Form Callback

 

  • 3 weeks later...
Posted

Еще вопрос, а если параметр не один, а список из 10-20 штук и они имеют разный тип?

В Form Callback предусмотрен только один Result.

За ранее благодарен!

 

 

Posted
On 6/11/2020 at 1:39 AM, Sherzod said:

Будете ссылаться на форму. 

а как наоборот. Из открытой формы почитать свойства компонентов формы родителя?

Posted
1 hour ago, dbf_usr said:

а как наоборот. Из открытой формы почитать свойства компонентов формы родителя?

При открытии дочерней формы, передать как параметр...

Posted
55 minutes ago, Sherzod said:

При открытии дочерней формы, передать как параметр...

У меня много параметров, больше 20

Posted
23 hours ago, dbf_usr said:

У меня много параметров, больше 20

число параметров в записи (record) фактически не ограничено, можно передавать одну запись с множеством полей.

Posted
15 hours ago, Tokay said:

число параметров в записи (record) фактически не ограничено, можно передавать одну запись с множеством полей.

Спасибо!

  • 2 weeks later...
Posted

Вот один из примеров, может кому пригодится.

На главной форме лежит edRemark: TunimEdit. Нужно открыть другую форму (редактирования), передать в неё текст, где можно этот текст отредактировать в memo и вернуть в главную форму, обратно в edRemark.


 

procedure TfmmMainform.edRemarkTriggerEvent(Sender: TUniFormControl; AButtonId: Integer);
begin
  inherited;

  if AButtonId = 0 then
  begin
    fmmShowMemo := TfmmShowMemo.Create(UniApplication);
    fmmShowMemo.Caption := TUnimEdit(Sender).EmptyText;
    fmmShowMemo.memo1.Text := TUnimEdit(Sender).Text;
    fmmShowMemo.ShowModal(RemarkTriggerCallbackAnonProc);// передаем процедуру обратного вызова
  end;

end;


procedure TfmmMainForm.RemarkTriggerCallbackAnonProc(Sender: TComponent; Res: Integer);
Var
  Component: TComponent;
begin
  if Res <> mrOk then exit;

// нужно убедиться, что данная процедура была вызвана для формы
    if Sender is TUnimForm then
      Component := (Sender as TUnimForm).FindComponent('memo1')// ищем на форме редактирования memo
    else
      exit;// Sender не является формой

//если не нашли memo1

    if  not Assigned(Component) then
      exit;

//нашли memo1

    if Component is TUnimMemo then
      edRemark.Text :=  TUnimMemo(Component).Text;

end;

 

Posted

Вместо FindComponent можно использовать IsPublishedProp().

Вот ещё один пример. На форме выбора есть дерево, пользователь что-то выбирает в дереве и нажимает ОК.

 

На форме выбора в разделе  published есть свойство "SelectedList", в котором будет храниться то, то выбрал пользователь с помощью чекбоксов:

property SelectedList: TDictionary<Integer, String> read FSelectedList;

т.е. когда пользователь щелкает по чекбоксам, то меняется свойство FSelectedList.


 

procedure TfmmSearchParams.uniDialogCallbackAnonProc(Sender: TComponent; Res: Integer);
Var
 form: Tcomponent;
 pair: TPair<Integer, string>;
 list: TDictionary<Integer, String>;
begin
  if Res <> mrOk then exit;

    list := nil;

    if Sender is TUnimForm then
      form := (Sender as TUnimForm) // проверяем, чтобы была форма (форма выбора)
    else
      exit;

//ищем на форме выбора свойство SelectedList
    if IsPublishedProp(form, 'SelectedList') then
      List := GetObjectProp(form, 'SelectedList', TDictionary<Integer, String>) as TDictionary<Integer, String>;


//если нашли на форме выбора свойство SelectedList

    if Assigned(List) then
      for pair in list do
        DicRegions.AddOrSetValue(pair.Key, pair.Value);// DicRegions - глобальная переменная текущего модуля

    Button1.Caption :=  'Количество выбранных узлов - ' + DicRegions.Count.ToString;
end;

 

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