Последняя версия DataExpress 3 beta от 1 сентября 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Component в действиях

drts
Эксперт
Сообщения: 361
Зарегистрирован: Сб окт 29, 2016 11:35 pm
Откуда: Новороссийск
Благодарил (а): 25 раз
Поблагодарили: 4 раза

Component в действиях

Сообщение drts » Сб апр 14, 2018 7:20 pm

Добрый день! Вопрос глупый, но что-то затык. Как в action пользоваться тегом component, вернее как корректнее получить объект компонента. Я после получения аргументов получаю стринг типа

Код: Выделить всё

Заказ (dxEdit1) - Текст
. Парсить имя компонента и потом

Код: Выделить всё

self.findcomponent(compName)
? Или есть встроенный механизм? Спасибо.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1583
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 9 раз

Re: Component в действиях

Сообщение Гocть » Сб апр 14, 2018 7:34 pm

Код: Выделить всё

{@action
<ui><field name="fn" /></ui>
@}

procedure ChYaDNT(field1:string);
  var Comp:TComponent;
begin
  Comp:=Self.FindComponentBuFieldName(field1);
end;
Фрилансер. Разработка на заказ. Консультирование.

drts
Эксперт
Сообщения: 361
Зарегистрирован: Сб окт 29, 2016 11:35 pm
Откуда: Новороссийск
Благодарил (а): 25 раз
Поблагодарили: 4 раза

Re: Component в действиях

Сообщение drts » Сб апр 14, 2018 7:51 pm

Нет. Не то. Именно component.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1583
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 9 раз

Re: Component в действиях

Сообщение Гocть » Сб апр 14, 2018 8:47 pm

Выходит в вопросе вы сами себе и ответили.
drts писал(а):"встроенный механизм"

Не очень понятно что именно вы хотите получить.
Фрилансер. Разработка на заказ. Консультирование.

drts
Эксперт
Сообщения: 361
Зарегистрирован: Сб окт 29, 2016 11:35 pm
Откуда: Новороссийск
Благодарил (а): 25 раз
Поблагодарили: 4 раза

Re: Component в действиях

Сообщение drts » Сб апр 14, 2018 9:41 pm

Есть тег component. Как получить компонент, который можно выбрать в настройках действия? Я умею это делать путем разбора стринга, который передается в аргументе. admin, расскажите пожалуйста, как правильно. В примере про видимость по условию я не понял, как в итоге Вы получаете доступ к компоненту. Спасибо.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1583
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 9 раз

Re: Component в действиях

Сообщение Гocть » Сб апр 14, 2018 9:56 pm

drts писал(а):путем разбора стринга, который передается в аргументе

Других то способов и нет.
Фрилансер. Разработка на заказ. Консультирование.

drts
Эксперт
Сообщения: 361
Зарегистрирован: Сб окт 29, 2016 11:35 pm
Откуда: Новороссийск
Благодарил (а): 25 раз
Поблагодарили: 4 раза

Re: Component в действиях

Сообщение drts » Сб апр 14, 2018 10:13 pm

В примере про видимость по условию как-то по другомусделано.

jurist23rus
Эксперт
Сообщения: 2642
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп
Благодарил (а): 2 раза
Поблагодарили: 13 раз

Re: Component в действиях

Сообщение jurist23rus » Сб апр 14, 2018 10:32 pm

В примере admin'a component в таблице (в теге grid), поэтому он разбирает массив TVariantArray2d.

Код: Выделить всё

for i := 0 to Length(VC.Cmps) - 1 do
  begin
    // Находим компонент по имени (в Cmps хранятся имена компонентов).
    C := TControl( VC.Fm.FindComponent(VC.Cmps[i][0]) );
    if C <> nil then C.Visible := b;
  end;


VC - это им же объявленная запись (record) явно для удобства.

Код: Выделить всё

type
  TVCRec = record
    Fm: TdxForm;
    Expr: String;
    Cmps: TVariantArray2d;
    AfterScroll, AfterCancel: TNotifyEvent;
    FieldChange: TFieldChangeEvent;
  end;


VC.Cmps - это TVariantArray2d
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
admin
Разработчик
Сообщения: 4605
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 87 раз

Re: Component в действиях

Сообщение admin » Сб апр 14, 2018 11:26 pm

В параметр передается только имя компонента! Ну а потом findcomponent.

drts
Эксперт
Сообщения: 361
Зарегистрирован: Сб окт 29, 2016 11:35 pm
Откуда: Новороссийск
Благодарил (а): 25 раз
Поблагодарили: 4 раза

Re: Component в действиях

Сообщение drts » Вс апр 15, 2018 7:05 am

Вот. А у меня в параметре, почему-то вся строка поле-имя-тип поля. ЧЯДНТ? Должно же быть имя?


Вернуться в «Разработка расширений»