Страница 1 из 2
Проблема с MDI окнами
Добавлено: 16 Ноябрь 2007, 19:05
mike_ch
Возможно эта проблема обсуждалась уже где-то, но я не нашел по форуму.
У меня Clarion 6.1 приложение на Clarion-шаблонах (не ABC). MDI.
Странное поведение дочерних окон - например открыто несколько дочерних окон и все miximize. Как только одно из окон сворачиваю в окно - сворачиваются и все остальные дочерние. Кто сталкивался?
Как это исправляется?
Добавлено: 17 Ноябрь 2007, 2:32
Admin
По моему не лечится ... не используй Maximize
или используй только для одного окна.
Добавлено: 19 Ноябрь 2007, 12:27
mike_ch
И еще такой вопросик...
В С5.5 иконки на кнопках сами маштабировались. В 6-ке же в окне проекта они нормально отображаются, а в скомпилированном приложении иконки не маштабируются, т.е. если она по пикселям больше то и отображается она коряво большой. Может настройка какая есть в Clarion'е?
Добавлено: 19 Ноябрь 2007, 12:33
Игорь Столяров
Ну "масштабировалась" это сильно сказано, скорее просто растягивалась ...
А выход простой - просто добавь в ICO файл несколько размеров иконок (16x16, 24x24, 32x32, 48x48 ... 256x256 - для WinVista) и на
кнопке будет корректно отображен значек наиболее подходящего размера для текущего отображения, например - кнопки. Вот и все.
Программа IconWorkshop для работы с ICO файлами есть на FTP разделе форума.
Добавлено: 19 Ноябрь 2007, 14:29
mike_ch
Игорь Столяров писал(а):Ну "масштабировалась" это сильно сказано, скорее просто растягивалась ...
А выход простой - просто добавь в ICO файл несколько размеров иконок (16x16, 24x24, 32x32, 48x48 ... 256x256 - для WinVista) и на
кнопке будет корректно отображен значек наиболее подходящего размера для текущего отображения, например - кнопки. Вот и все.
А жаль... ломает меня раскадровку каждой иконки делать, просто много у меня их. Странно что в 5-ке ж все нормально было, удобно иконки сами сжимальсь-растягивались.
Добавлено: 19 Ноябрь 2007, 15:12
mike_ch
Еще одна беда...
Почему так коряво в 6-ке отображаются кнопки которые disable. Мне то и в 5-ке не очень нравилось, но в 6-том вообще кошмар. Это тоже нельзя никак поменять?
Добавлено: 20 Ноябрь 2007, 8:11
Игорь Столяров
Опять таки - плохо отображаются не сами кнопки, а значки на них при включении Disable ... Можешь попробовать использовать вместо ICO файлов GIF или BMP - с ними отображение лучше, да и растягивание работает. Или проще: вместе с Disable кнопки выключать ее иконку, что-нибудь вроде:
?Button{Prop:Icon} = Choose(?Button{Prop:Disable} = True,Icon:None,'~myfile.ico') ....
Добавлено: 20 Ноябрь 2007, 11:13
mike_ch
Игорь Столяров писал(а):Опять таки - плохо отображаются не сами кнопки, а значки на них при включении Disable ... Можешь попробовать использовать вместо ICO файлов GIF или BMP - с ними отображение лучше, да и растягивание работает. Или проще: вместе с Disable кнопки выключать ее иконку, что-нибудь вроде:
?Button{Prop:Icon} = Choose(?Button{Prop:Disable} = True,Icon:None,'~myfile.ico') ....
Крепко жму вам руку, Игорь!
Выход конечно... хоть и проблемный. Перевожу большой проект с С5.5 на С6.3. Иконок очень много. Конвертить их в GIF или BMP не радует. Буду пробовать второй вариант.
Добавлено: 20 Ноябрь 2007, 17:41
mike_ch
Существует ли функция что-то наподобие DYRECTORY, которая возвращала бы список use-переменных всех контролов в окне?
А также былоб неплохо знать тип контрола - button, spin или ...
Добавлено: 20 Ноябрь 2007, 20:32
Игорь Столяров
Гм. В ообщем-то получить список контролов в структуре Window (или Report) проблем нет:
Loop F# = FIRSTFIELD() to LASTFIELD()
If (F#{Prop:Type} = Create:Check)
... Это CheckBox
elsIf (F#{Prop:Type} = Create:Button)
.... это кнопка
elsIf
и т.д.
end
end
Вот. Но это номера контроллов в окне и по ним доступны все их данные. Вернет ли F#{Prop:Use} - наименование контролла я уже не помню. Попробуй !

Добавлено: 21 Ноябрь 2007, 0:03
Admin
mike_ch писал(а):Существует ли функция что-то наподобие DYRECTORY, которая возвращала бы список use-переменных всех контролов в окне?
А также былоб неплохо знать тип контрола - button, spin или ...
Существует способ получить метку контрола. Но придется пользоваться недокументированными функциями Clarion
Добавлено: 21 Ноябрь 2007, 12:38
mike_ch
Игорь Столяров писал(а):Гм. В ообщем-то получить список контролов в структуре Window (или Report) проблем нет:
Loop F# = FIRSTFIELD() to LASTFIELD()
If (F#{Prop:Type} = Create:Check)
... Это CheckBox
Все отлично работает!
Спасибо!
Добавлено: 21 Ноябрь 2007, 13:01
Admin
Код: Выделить всё
MAP
MODULE('CAPI')
ClaFieldName(LONG),NAME('Cla$FieldName'),CSTRING,PROC
END
END
Возвращает имя поля по его Feq
Добавлено: 28 Ноябрь 2007, 16:04
mike_ch
Еще вопросик, если можно

как получить список открытых дочерних окон?. Идея сделать тулбар, в котором динамически создавать кнопки с названиями открытых дочерних окон. И таким образом через этот тулбар переключаться между окнами. Почитал про STD:xxx (STD:WindowList) - не помогло ...
Добавлено: 28 Ноябрь 2007, 16:18
StillZero
а вот так
http://www.clarionlife.net/index.php?op ... view&id=63
и еще есть вариант попроще...
надо в каждом MDI окне при отрытии сделать типо
.AddWindow(параметры)
а при закрытии окна сделать
.DeleteWindow()
а на тулбаре показывать сформированную таким образом очередь