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

EditWindow в GetForms

Вопросы о применении того или иного класса или функции.
Аватара пользователя
Develop-Soft
Сообщения: 1357
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 116 раз
Поблагодарили: 341 раз
Контактная информация:

EditWindow в GetForms

Сообщение Develop-Soft » Пт дек 06, 2019 12:01 pm

Почему-то любое упоминание в суе EditWindow формы, полученной в GetForms приводит к вислеру:

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

GetForms(SL);
for i:=0 to SL.Count-1 do
begin
 Fm:=TdxForm(SL.Objects[i]);

// if Fm.EditWindow<>nil then // висяк

if Fm.ViewType=vtGridOnly then
 begin
   Fm.EditWindow... // висяк
 end;   

 

Или ЯЧДНТ..?

Vofka18
Опытный
Сообщения: 344
Зарегистрирован: Вс мар 04, 2018 4:54 pm
Благодарил (а): 26 раз
Поблагодарили: 33 раза

EditWindow в GetForms

Сообщение Vofka18 » Пт дек 06, 2019 12:54 pm

Develop-Soft писал(а):Почему-то любое упоминание в суе EditWindow формы, полученной в GetForms приводит к вислеру:

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

GetForms(SL);
for i:=0 to SL.Count-1 do
begin
 Fm:=TdxForm(SL.Objects[i]);

// if Fm.EditWindow<>nil then // висяк

if Fm.ViewType=vtGridOnly then
 begin
   Fm.EditWindow... // висяк
 end;   

 

Или ЯЧДНТ..?

Могу ошибаться, но мне кажется нужно так

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

Fm:=TdxForm(SL[i].Objects[...]);

или как то так

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

Fm:=TdxForm.create(SL[i]);

Аватара пользователя
Develop-Soft
Сообщения: 1357
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 116 раз
Поблагодарили: 341 раз
Контактная информация:

EditWindow в GetForms

Сообщение Develop-Soft » Пт дек 06, 2019 1:03 pm

Точно, затупил... Странно что на этой стадии ошибку не выдало.
Только Fm:=TdxForm.create(SL[i]); не совсем верно... Там могут быть дочерние формы.

Vofka18
Опытный
Сообщения: 344
Зарегистрирован: Вс мар 04, 2018 4:54 pm
Благодарил (а): 26 раз
Поблагодарили: 33 раза

EditWindow в GetForms

Сообщение Vofka18 » Пт дек 06, 2019 1:09 pm

Develop-Soft писал(а):Точно, затупил... Странно что на этой стадии ошибку не выдало.
Только Fm:=TdxForm.create(SL[i]); не совсем верно... Там могут быть дочерние формы.

Ну я на вскидку прикинул ;)

Аватара пользователя
Develop-Soft
Сообщения: 1357
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 116 раз
Поблагодарили: 341 раз
Контактная информация:

EditWindow в GetForms

Сообщение Develop-Soft » Пт дек 06, 2019 1:13 pm

Develop-Soft писал(а):Точно, затупил... Странно что на этой стадии ошибку не выдало.
Только Fm:=TdxForm.create(SL[i]); не совсем верно... Там могут быть дочерние формы.

Не... Не затупил. Все верно писал сначала. А так как вы сказали Fm:=TdxForm(SL[i].Objects[...]); - не будет работать.

Vofka18
Опытный
Сообщения: 344
Зарегистрирован: Вс мар 04, 2018 4:54 pm
Благодарил (а): 26 раз
Поблагодарили: 33 раза

EditWindow в GetForms

Сообщение Vofka18 » Пт дек 06, 2019 1:25 pm

Develop-Soft писал(а):
Develop-Soft писал(а):Точно, затупил... Странно что на этой стадии ошибку не выдало.
Только Fm:=TdxForm.create(SL[i]); не совсем верно... Там могут быть дочерние формы.

Не... Не затупил. Все верно писал сначала. А так как вы сказали Fm:=TdxForm(SL[i].Objects[...]); - не будет работать.

Не, я не настаиваю, я далеко не гуру программирования, просто в глаза бросается, что цикл считает по SL, а применяется в sl.obgects[i]. Может тогда так? только тогда я так понимаю нужет еще один цикл для SL.

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

forj:=0 to SL.Count-1 do
for i:=0 to SL[j].obgects.Count-1 do

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

EditWindow в GetForms

Сообщение admin » Пт дек 06, 2019 1:33 pm

EditWindow есть только при создании формы в режиме "Только таблица". В других случаях обращаться к свойству нельзя.

Аватара пользователя
Develop-Soft
Сообщения: 1357
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 116 раз
Поблагодарили: 341 раз
Контактная информация:

EditWindow в GetForms

Сообщение Develop-Soft » Пт дек 06, 2019 7:23 pm

Vofka18 писал(а):
Develop-Soft писал(а):
Develop-Soft писал(а):Точно, затупил... Странно что на этой стадии ошибку не выдало.
Только Fm:=TdxForm.create(SL[i]); не совсем верно... Там могут быть дочерние формы.

Не... Не затупил. Все верно писал сначала. А так как вы сказали Fm:=TdxForm(SL[i].Objects[...]); - не будет работать.

Не, я не настаиваю, я далеко не гуру программирования, просто в глаза бросается, что цикл считает по SL, а применяется в sl.obgects[i]. Может тогда так? только тогда я так понимаю нужет еще один цикл для SL.

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

forj:=0 to SL.Count-1 do
for i:=0 to SL[j].obgects.Count-1 do

У меня без проблем все работает c SL.Objects[i].... Очевидно объекты в стринглисте "запараллелены" со списком по индексам.

Аватара пользователя
Develop-Soft
Сообщения: 1357
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 116 раз
Поблагодарили: 341 раз
Контактная информация:

EditWindow в GetForms

Сообщение Develop-Soft » Пт дек 06, 2019 7:25 pm

admin писал(а):EditWindow есть только при создании формы в режиме "Только таблица". В других случаях обращаться к свойству нельзя.

Вопрос решил с OnCreateForm. Однако смущает реакция: вместо стандартной ошибки при обращении к несуществующему объекту - вислер...


Вернуться в «Вопросы по API DataExpress.»