Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 28 мар 2024, 11:07

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: PassFieldNames PassParams
СообщениеДобавлено: 02 сен 2020, 01:22 
Не в сети

Зарегистрирован: 16 фев 2018, 04:13
Сообщений: 54
Откуда: АО ОТЭКО
Здравствуйте.
EhLib 9.5.027
Не передаются параметры в DropDown форму при PassParams = pspByFieldNamesEh вместо этого передаются поля указанные в AssignBackFieldNames.

Код:
unit ToolCtrlsEh;

procedure TDropDownFormCallParamsEh.FillPassParams(DynParams: TDynVarsEh);
var
  ADataLink: TDataLink;
  AField: TField;
  ADataSet: TDataSet;
  Fields: TFieldListEh;
  i: Integer;
  AFieldName: String;
begin
  ADataLink := GetDataLink;
  AField := GetField;
  if ADataLink <> nil
    then ADataSet := ADataLink.DataSet
    else ADataSet := nil;
   //Не проверяется PassParams, т.е. если PassParams будет равен pspRecordValuesEh, но поле PassFieldNames заполнено, то отработает как будто PassParams = pspByFieldNamesEh
  if (PassFieldNames <> '') and (ADataSet <> nil) then
  begin
    Fields := TFieldListEh.Create;
    try
      ADataSet.GetFieldList(Fields, AssignBackFieldNames); // должно быть PassFieldNames
      for I := 0 to Fields.Count - 1 do
        DynParams.CreateDynVar(TField(Fields[i]).FieldName, TField(Fields[i]).Value)
    finally
      Fields.Free;
    end;
  end else if PassParams = pspFieldValueEh then
  begin
    if AField <> nil
      then AFieldName := AField.FieldName
      else AFieldName := '';
    DynParams.CreateDynVar(AFieldName, GetControlValue);
  end else if PassParams = pspRecordValuesEh then
  begin
    ADataSet := ADataLink.DataSet;
    for i := 0 to ADataSet.Fields.Count-1 do
      DynParams.CreateDynVar(ADataSet.Fields[i].FieldName, ADataSet.Fields[i].Value);
  end;
end;


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PassFieldNames PassParams
СообщениеДобавлено: 12 сен 2020, 15:42 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1546
Добрый день.

Спасибо за информацию.
Ошибку исправим в следующей сборке.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PassFieldNames PassParams
СообщениеДобавлено: 18 сен 2020, 07:58 
Не в сети

Зарегистрирован: 16 фев 2018, 04:13
Сообщений: 54
Откуда: АО ОТЭКО
Спасибо. Ещё проверку PassParams добавьте пожалуйста.
if (PassParams = pspByFieldNamesEh) and (PassFieldNames <> '') and (ADataSet <> nil) then
А то при непустом PassFieldNames передаются эти поля несмотря на PassParams =
Цитата:
pspRecordValuesEh
Передавать значение всех полей текущей записи DataSet’а.

Удобно для отладки, включил передачу всех полей, написал код, добавил новые необходимые поля в PassFieldNames и переключил на передачу перечисленных.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB