Последняя версия DataExpress 3 beta от 15 сентября 2020 года.

Изображение Скачать | Изображение Что нового?



Объявление:

Если вам понравилась программа и вы ее интенсивно используете - замолвите словечко о ней на вашем сайте (блоге, форуме, твитере, краской на подъезде, ютуб-канале и т.д.) с активной (по-возможности) ссылкой на сайт программы/форум. Тем самым вы можете внести небольшой вклад в seo-карму проекта в виде входящих ссылок.
Спасибо! Администрация :)


>> Обсудить <<

EditWindow в GetForms

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

EditWindow в GetForms

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

Почему-то любое упоминание в суе 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
Знаток
Сообщения: 458
Зарегистрирован: 04 мар 2018, 16:54
Благодарил (а): 44 раза
Поблагодарили: 48 раз

EditWindow в GetForms

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

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
Сообщения: 1752
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 122 раза
Поблагодарили: 472 раза
Контактная информация:

EditWindow в GetForms

Сообщение Develop-Soft » 06 дек 2019, 13:03

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

Vofka18
Знаток
Сообщения: 458
Зарегистрирован: 04 мар 2018, 16:54
Благодарил (а): 44 раза
Поблагодарили: 48 раз

EditWindow в GetForms

Сообщение Vofka18 » 06 дек 2019, 13:09

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

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

Аватара пользователя
Develop-Soft
Сообщения: 1752
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 122 раза
Поблагодарили: 472 раза
Контактная информация:

EditWindow в GetForms

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

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

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

Vofka18
Знаток
Сообщения: 458
Зарегистрирован: 04 мар 2018, 16:54
Благодарил (а): 44 раза
Поблагодарили: 48 раз

EditWindow в GetForms

Сообщение Vofka18 » 06 дек 2019, 13:25

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
Разработчик
Сообщения: 5174
Зарегистрирован: 14 мар 2016, 11:32
Откуда: Ленинградская
Благодарил (а): 41 раз
Поблагодарили: 334 раза

EditWindow в GetForms

Сообщение admin » 06 дек 2019, 13:33

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

Аватара пользователя
Develop-Soft
Сообщения: 1752
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 122 раза
Поблагодарили: 472 раза
Контактная информация:

EditWindow в GetForms

Сообщение Develop-Soft » 06 дек 2019, 19:23

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
Сообщения: 1752
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 122 раза
Поблагодарили: 472 раза
Контактная информация:

EditWindow в GetForms

Сообщение Develop-Soft » 06 дек 2019, 19:25

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

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


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