При редактировании в Form при ипользовании 2-х чекетов, с помощью которых скрываются(показываются) группы, группы полей и уменьшается(увеличивается) окно. Появляются артефакты, достаточно переключится на другое окно и вернутся все артефакты пропадают.
Refresh - обновить
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
gopstop2007
- Полимат
- Сообщения: 1839
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 29 раз
- Поблагодарили: 10 раз
Refresh - обновить
Подскажите, вроде пробегало, но нашел 
При редактировании в Form при ипользовании 2-х чекетов, с помощью которых скрываются(показываются) группы, группы полей и уменьшается(увеличивается) окно. Появляются артефакты, достаточно переключится на другое окно и вернутся все артефакты пропадают.
При редактировании в Form при ипользовании 2-х чекетов, с помощью которых скрываются(показываются) группы, группы полей и уменьшается(увеличивается) окно. Появляются артефакты, достаточно переключится на другое окно и вернутся все артефакты пропадают.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Игорь Столяров
- Ветеран движения
- Сообщения: 8234
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 34 раза
- Поблагодарили: 105 раз
Refresh - обновить
Насколько можно судить по первому снимку - группа полей показана, но размеры окна не изменены.
Если при переключении c другого окна - происходит перерисовка, значит обрабатывается GainFocus.
Поэтому при изменения условия, можно попробовать просто выполнить POST(Event:GainFocus).
Или включить опцию Immediate в настройке окна ....
Хотя, на мой взгляд, проще перерисовать окно и контролы напрямую, при изменении условия.
Если при переключении c другого окна - происходит перерисовка, значит обрабатывается GainFocus.
Поэтому при изменения условия, можно попробовать просто выполнить POST(Event:GainFocus).
Или включить опцию Immediate в настройке окна ....
Хотя, на мой взгляд, проще перерисовать окно и контролы напрямую, при изменении условия.
За теми, кто отстал, не возвращаться !
Кодекс
-
gopstop2007
- Полимат
- Сообщения: 1839
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 29 раз
- Поблагодарили: 10 раз
Refresh - обновить
Immediate - включен, перерисовываю вручную.Игорь Столяров писал(а):Если при переключении c другого окна - происходит перерисовка, значит обрабатывается GainFocus.
Поэтому при изменения условия, можно попробовать просто выполнить POST(Event:GainFocus).
Или включить опцию Immediate в настройке окна ....
Хотя, на мой взгляд, проще перерисовать окно и контролы напрямую, при изменении условия.
Код: Выделить всё
Groups_Resize ROUTINE ! изменение размеров
IF l_Valute_UsedTwo = 1 ! сделать большой размер
IF l_SkidkaUsed = 1 ! используется скидка
0{PROP:AT,4} = 295 !
! скидка ===============
UNHIDE(?GRE:ProcentSkidki:Prompt,?GRE:AllSumSkidka)
?GROUP_Skidka{PROP:Hide} = FALSE
! валюты ===================
?GROUP1{PROP:At,2} = 133
?GRE:CashCalc_SumValuteDefault:Prompt{PROP:At,2} = 149
?GRE:CashCalc_SumValuteDefault{PROP:At,2} = 149
?GRE:SumCash_Valute:2{PROP:At,2} = 149
?PROMPT4{PROP:At,2} = 165
?GRE:CashCalc_ValuteSum{PROP:At,2} = 165
?KUR:CodeValute{PROP:At,2} = 165
?GRE:KurseToday:Prompt{PROP:At,2} = 165
?GRE:CashCalc_Kurse{PROP:At,2} = 165
?GRE:SumCash_Valute:3{PROP:At,2} = 165
?PROMPT_SumVal{PROP:At,2} = 165
?GRE:SumSkidka:Prompt{PROP:At,2} = 181
?GRE:CashCalc_ValuteSumOther{PROP:At,2} = 181
?GRE:SumCash_Valute:4{PROP:At,2} = 181
! оплата ==================
?GRE:SumCash:Prompt{PROP:At,2} = 201
?GRE:SumCash{PROP:At,2} = 200
?GRE:SumCash_Valute{PROP:At,2} = 201
?PROMPT_Balance{PROP:At,2} = 215
?PROMPT_Balance_Sum{PROP:At,2} = 215
?PROMPT_CashVid{PROP:At,2} = 231
?GRE8:NameVidCash{PROP:At,2} = 231
?btn_CashVid{PROP:At,2} = 231
?GRE:Remark:Prompt{PROP:At,2} = 245
?GRE:Remark{PROP:At,2} = 245
?OK{PROP:At,2} = 273
?Cancel{PROP:At,2} = 273
ELSE
0{PROP:AT,4} = 295 - 69
! скидка ===============
HIDE(?GRE:ProcentSkidki:Prompt,?GRE:AllSumSkidka)
?GROUP_Skidka{PROP:Hide} = TRUE
! валюты ===================
?GROUP1{PROP:At,2} = 133 - 69
?GRE:CashCalc_SumValuteDefault:Prompt{PROP:At,2} = 149 - 69
?GRE:CashCalc_SumValuteDefault{PROP:At,2} = 149 - 69
?GRE:SumCash_Valute:2{PROP:At,2} = 149 - 69
?PROMPT4{PROP:At,2} = 165 - 69
?GRE:CashCalc_ValuteSum{PROP:At,2} = 165 - 69
?KUR:CodeValute{PROP:At,2} = 165 - 69
?GRE:KurseToday:Prompt{PROP:At,2} = 165 - 69
?GRE:CashCalc_Kurse{PROP:At,2} = 165 - 69
?GRE:SumCash_Valute:3{PROP:At,2} = 165 - 69
?PROMPT_SumVal{PROP:At,2} = 165 - 69
?GRE:SumSkidka:Prompt{PROP:At,2} = 181 - 69
?GRE:CashCalc_ValuteSumOther{PROP:At,2} = 181 - 69
?GRE:SumCash_Valute:4{PROP:At,2} = 181 - 69
! оплата ==================
?GRE:SumCash:Prompt{PROP:At,2} = 201 - 69
?GRE:SumCash{PROP:At,2} = 200 - 69
?GRE:SumCash_Valute{PROP:At,2} = 201 - 69
?PROMPT_Balance{PROP:At,2} = 215 - 69
?PROMPT_Balance_Sum{PROP:At,2} = 215 - 69
?PROMPT_CashVid{PROP:At,2} = 231 - 69
?GRE8:NameVidCash{PROP:At,2} = 231 - 69
?btn_CashVid{PROP:At,2} = 231 - 69
?GRE:Remark:Prompt{PROP:At,2} = 245 - 69
?GRE:Remark{PROP:At,2} = 245 - 69
?OK{PROP:At,2} = 273 - 69
?Cancel{PROP:At,2} = 273 - 69
END
?GROUP1{PROP:Hide} = FALSE
UNHIDE(?GRE:CashCalc_SumValuteDefault:Prompt,?GRE:SumCash_Valute:4)
ELSE
HIDE(?GRE:CashCalc_SumValuteDefault:Prompt,?GRE:SumCash_Valute:4)
?GROUP1{PROP:Hide} = TRUE
ThisWindow.Reset(True)
IF l_SkidkaUsed = 1 ! используется скидка
0{PROP:AT,4} = 295 - 65
! скидка ===============
UNHIDE(?GRE:ProcentSkidki:Prompt,?GRE:AllSumSkidka)
?GROUP_Skidka{PROP:Hide} = FALSE
! валюты ===================
! оплата ==================
?GRE:SumCash:Prompt{PROP:At,2} = 201 - 65
?GRE:SumCash{PROP:At,2} = 200 - 65
?GRE:SumCash_Valute{PROP:At,2} = 201 - 65
?PROMPT_Balance{PROP:At,2} = 215 - 65
?PROMPT_Balance_Sum{PROP:At,2} = 215 - 65
?PROMPT_CashVid{PROP:At,2} = 231 - 65
?GRE8:NameVidCash{PROP:At,2} = 231 - 65
?btn_CashVid{PROP:At,2} = 231 - 65
?GRE:Remark:Prompt{PROP:At,2} = 245 - 65
?GRE:Remark{PROP:At,2} = 245 - 65
?OK{PROP:At,2} = 273 - 65
?Cancel{PROP:At,2} = 273 - 65
ELSE
0{PROP:AT,4} = 295 - (69+65)
! скидка ===============
HIDE(?GRE:ProcentSkidki:Prompt,?GRE:AllSumSkidka)
?GROUP_Skidka{PROP:Hide} = TRUE
! валюты ===================
! оплата ==================
?GRE:SumCash:Prompt{PROP:At,2} = 201 - (69+65)
?GRE:SumCash{PROP:At,2} = 200 - (69+65)
?GRE:SumCash_Valute{PROP:At,2} = 201 - (69+65)
?PROMPT_Balance{PROP:At,2} = 215 - (69+65)
?PROMPT_Balance_Sum{PROP:At,2} = 215 - (69+65)
?PROMPT_CashVid{PROP:At,2} = 231 - (69+65)
?GRE8:NameVidCash{PROP:At,2} = 231 - (69+65)
?btn_CashVid{PROP:At,2} = 231 - (69+65)
?GRE:Remark:Prompt{PROP:At,2} = 245 - (69+65)
?GRE:Remark{PROP:At,2} = 245 - (69+65)
?OK{PROP:At,2} = 273 - (69+65)
?Cancel{PROP:At,2} = 273 - (69+65)
END
END
ThisWindow.Reset(True)
DISPLAY()
POST(Event:GainFocus) ! чего еще добавить :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Игорь Столяров
- Ветеран движения
- Сообщения: 8234
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 34 раза
- Поблагодарили: 105 раз
Refresh - обновить
Круто ! Если я правильно понял, то "0{PROP:AT,4} = ...." - это изменение размера окна ?
Попробуй заменить на "Windows{Prop:Height} = ...."
(Название структуры Windows может отличаться)
Попробуй заменить на "Windows{Prop:Height} = ...."
(Название структуры Windows может отличаться)
За теми, кто отстал, не возвращаться !
Кодекс
-
kreator
- ✯ Ветеран ✯
- Сообщения: 5233
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Refresh - обновить
Один хрен. Пропы одинаковые. Кларион-то какой? Я бы по-простому сделал для всего Hide/Unhide. А, если копать, то может посмотреть класс Resize, Вы своим кодом может его перебиваете. Но спорить не буду. Можно ещё структуру окна изменить. Ну, допустим, использовать Тав'ы вместо Group.Игорь Столяров писал(а):Круто ! Если я правильно понял, то "0{PROP:AT,4} = ...." - это изменение размера окна ?
Попробуй заменить на "Windows{Prop:Height} = ...."
(Название структуры Windows может отличаться)
We are hard at work… for you. 
Refresh - обновить
Если нужно ручное позиционирование, кладу на экран невидимый box или несколько и привязываю координаты к ним, абсолютные координаты как-то некошерно.
Дальше надо познакомиться с Prop:Buffer, Prop:LazyDisplay и Prop:DeferMove вдруг поможет...
Ну и наконец, если совсем никак, есть такие функции
RedrawWindow(UNSIGNED,LONG=0,LONG=0,ULONG=0181h),RAW,PASCAL
InvalidateRect(UNSIGNED,LONG,BOOL),PASCAL,RAW
Вызываем так
RedrawWindow(0{Prop:Handle})
или так
InvalidateRect(0{PROP:Handle},0,1)
Обычно этого хватает...
Дальше надо познакомиться с Prop:Buffer, Prop:LazyDisplay и Prop:DeferMove вдруг поможет...
Ну и наконец, если совсем никак, есть такие функции
RedrawWindow(UNSIGNED,LONG=0,LONG=0,ULONG=0181h),RAW,PASCAL
InvalidateRect(UNSIGNED,LONG,BOOL),PASCAL,RAW
Вызываем так
RedrawWindow(0{Prop:Handle})
или так
InvalidateRect(0{PROP:Handle},0,1)
Обычно этого хватает...
-
gopstop2007
- Полимат
- Сообщения: 1839
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 29 раз
- Поблагодарили: 10 раз
Refresh - обновить
Clarion 10 ABC

я так с самого начала сделал правда с группами, но увы результат еще хуже, там целы поля "висели" по старым позициямYufil писал(а):Если нужно ручное позиционирование, кладу на экран невидимый box или несколько
спасибо попробуюYufil писал(а): Вызываем так RedrawWindow(0{Prop:Handle})
или так InvalidateRect(0{PROP:Handle},0,1)
Обычно этого хватает...
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
gopstop2007
- Полимат
- Сообщения: 1839
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 29 раз
- Поблагодарили: 10 раз
Refresh - обновить
Помогло только обязательное HIDE перед перемещением группы полей с последующим UNHIDE и еще порядок следования этих групп и последовательность увеличение(уменьшение) размера окна 
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
