Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Для Альфа (число прочтений - 7028 )
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Для Альфа
17. Сентября 2017 :: 05:50
Печать  
Добрый день, Алексей!
Во-первых, восторг и благодарность за Ваш труд в создании и поддержке компоненты FormEx.
О себе: не проф, пишу немного для себя и только в 1с77 (ранее использовал Ассемблер, Клиппер, Дельфи и т.п). Набор 1с77+FormEx+1сpp+GflAx в общем более менее, скорее более удовлетворяют практически все потребности в БД. Учитывая свое убеждение, что в программировании невозможных препятствий не существует, давно мучил вопрос, который я хотел задать. Вы написали замечательный метод многоуровневого меню ВыбратьЗначение(). Но что Вас подвигло пойти по пути криворуких авторов 1с. В методе отсутствует вставка в меню полноцветных картинок 16х16? А также отсутствует возможность сделать элемент меню недоступным для выбора. Это существенно ограничивает возможность использования данного метода.
Если возможно, хотелось бы иметь доработанный метод без вышеуказанных недостатков.

С уважением, Сергей.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для Альфа
Ответ #1 - 18. Сентября 2017 :: 07:38
Печать  
Формат картинок такой из-за того, что используются внутренние средства 1С для их хранения (объект Картинка).
Недоступным пункт меню можно сделать, установив пометку в списке значений, служащим основой для меню.
Ну и разделитель можно поставить, добавив "-" в список:
           сзМеню.ДобавитьЗначение("-","-");
  

FormEx developer
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Для Альфа
Ответ #2 - 25. Сентября 2017 :: 15:09
Печать  
Только после третьего уровня вложенности у меня картинки уже не рисуются. И не хватает возврата строкового представления выбранного пункта меню. Нужно для логирования выбора.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Сервис.ОткрытьПлавающуюФорму()
Ответ #3 - 28. Сентября 2017 :: 14:04
Печать  
Алексей, посмотри, пожалуйста, что можно сделать с бордюром?

Используется для вызова:
Сервис.ОткрытьПлавающуюФорму(...);

и в самой форме:
Окно.WindowsStyle(Форма,2);

Проблема с прорисовкой бордюра наблюдается только в Windows XP.


« Последняя редакция: 28. Сентября 2017 :: 21:20 - recop »  
Наверх
 
IP записан
 
vadim2009
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Местоположение: Ярославль
Зарегистрирован: 28. Сентября 2017
Пол: Мужской
Re: Для Альфа
Ответ #4 - 28. Сентября 2017 :: 19:29
Печать  
Добрый вечер, Алексей! Огромное спасибо за FormEx! Давно пользуюсь Вашей компонентой.
Сегодня обновил ее (2.0.5.109) до последней версии 2.0.5.128, перестала работать раскраска списков значений. Судя по всему, не срабатывает метод Сервис.ПерехватОтрисовкиСписков(1), потому что он все время возвращает ноль. Проверьте, пожалуйста...
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сервис.ОткрытьПлавающуюФорму()
Ответ #5 - 29. Сентября 2017 :: 11:37
Печать  
recop писал(а) 28. Сентября 2017 :: 14:04:
Алексей, посмотри, пожалуйста, что можно сделать с бордюром?

Используется для вызова:
Сервис.ОткрытьПлавающуюФорму(...);

и в самой форме:
Окно.WindowsStyle(Форма,2);

Проблема с прорисовкой бордюра наблюдается только в Windows XP.


http://imglink.ru/pictures/28-09-17/b763dc4c3caf54412a5fe242a79636bf.jpg


С плавающей формой ничего не поделать. Там все нужно переделывать полностью.
  

FormEx developer
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для Альфа
Ответ #6 - 29. Сентября 2017 :: 11:39
Печать  
vadim2009 писал(а) 28. Сентября 2017 :: 19:29:
Добрый вечер, Алексей! Огромное спасибо за FormEx! Давно пользуюсь Вашей компонентой.
Сегодня обновил ее (2.0.5.109) до последней версии 2.0.5.128, перестала работать раскраска списков значений. Судя по всему, не срабатывает метод Сервис.ПерехватОтрисовкиСписков(1), потому что он все время возвращает ноль. Проверьте, пожалуйста...


Я сам этот функционал сейчас не использую. Вроде как не должен был задеть последними правками. Если не сложно, то мне помог бы тестовый пример, где можно было бы посмотреть.
  

FormEx developer
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для Альфа
Ответ #7 - 29. Сентября 2017 :: 12:26
Печать  
alyuev писал(а) 25. Сентября 2017 :: 15:09:
Только после третьего уровня вложенности у меня картинки уже не рисуются. И не хватает возврата строкового представления выбранного пункта меню. Нужно для логирования выбора.


Про картинку не подтверждаю.
Строковое представление - это узкая задача. Его можно получить из списка значений, который является основой меню.
  

FormEx developer
Наверх
www  
IP записан
 
vadim2009
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Местоположение: Ярославль
Зарегистрирован: 28. Сентября 2017
Пол: Мужской
Re: Для Альфа
Ответ #8 - 29. Сентября 2017 :: 19:43
Печать  
АЛьФ писал(а) 29. Сентября 2017 :: 11:39:
vadim2009 писал(а) 28. Сентября 2017 :: 19:29:
Добрый вечер, Алексей! Огромное спасибо за FormEx! Давно пользуюсь Вашей компонентой.
Сегодня обновил ее (2.0.5.109) до последней версии 2.0.5.128, перестала работать раскраска списков значений. Судя по всему, не срабатывает метод Сервис.ПерехватОтрисовкиСписков(1), потому что он все время возвращает ноль. Проверьте, пожалуйста...


Я сам этот функционал сейчас не использую. Вроде как не должен был задеть последними правками. Если не сложно, то мне помог бы тестовый пример, где можно было бы посмотреть.


Вот код тестовой обработки, на форме только элемент управления "Список значений" СЗРасшифровка. Проверил, на старой версии 2.0.5.109 работает, на последней - нет.

Код
Выбрать все
Перем Сервис, Таймаут, ТаймерВыхода, ТаймерСчетчика, Заголовок;


// Возвращает значение цвета в десятичном виде
Функция глЦветЧ(R, G, B) Экспорт

    Если (R < 0) ИЛИ (R > 255) ИЛИ (G < 0) ИЛИ (G > 255) ИЛИ (B < 0) ИЛИ (B > 255) Тогда
        Возврат 0;
	Иначе
		Возврат R + G * 256 + B * 256 * 256;
    КонецЕсли;

КонецФункции //глЦветЧ()


//
Функция СписокЦветов()

    СЗ = СоздатьОбъект("СписокЗначений");
	СЗ.ДобавитьЗначение(глЦветЧ(255, 200, 200), "Цвет светло-красный");
	СЗ.ДобавитьЗначение(глЦветЧ(255,   0,   0), "Цвет красный");
	СЗ.ДобавитьЗначение(глЦветЧ(255, 255, 200), "Цвет светло-желтый");
	СЗ.ДобавитьЗначение(глЦветЧ(255, 255, 125), "Цвет желтый");
	СЗ.ДобавитьЗначение(глЦветЧ(255, 150, 255), "Цвет фиолетовый");
	СЗ.ДобавитьЗначение(глЦветЧ(180, 180, 180), "Цвет серый");

	Возврат СЗ;

КонецФункции //СписокЦветов()


//
Функция ПолучитьРасшифровкуЦветов()

	СЗЦвета = СписокЦветов();
    СЗ = СоздатьОбъект("СписокЗначений");
	Для Сч = 1 По СЗЦвета.РазмерСписка() Цикл
		Описание = "";
		Цвет = СЗЦвета.ПолучитьЗначение(Сч, Описание);
		СЗ.ДобавитьЗначение(Цвет, Описание +
					РазделительСтрок + "BRUSH[" + Цвет + "]BRUSH_S[" + Цвет + "]FONT_S[0]");
	КонецЦикла;

	Возврат СЗ;

КонецФункции //ПолучитьРасшифровкуЦветов()


//
Процедура ВыходПоТаймеру()

	Форма.Закрыть();

КонецПроцедуры //ВыходПоТаймеру()


//
Процедура Счетчик()

	Таймаут = Таймаут - 1;

	Форма.Заголовок(Заголовок + " (" + Таймаут + ")");

КонецПроцедуры //ВыходПоТаймеру()


// Предопределенная процедура ПриОткрытии().
Процедура ПриОткрытии()

	Попытка
		Сервис = СоздатьОбъект("Сервис");
	Исключение
		ЗагрузитьВнешнююКомпоненту("FormEx.dll");
		Сервис = СоздатьОбъект("Сервис");
	КонецПопытки;

	Сервис.ПерехватОтрисовкиСписков(1);

	СЗ = ПолучитьРасшифровкуЦветов();
	СЗ.Выгрузить(СЗРасшифровка);

	СтрВерсия = "";
	Сервис.Версия(СтрВерсия);

	Заголовок = "Список цветов. FormEx " + СтрВерсия;
	Форма.Заголовок(Заголовок);

	Таймаут = 60;
	Если ПустоеЗначение(Таймаут) = 0 Тогда
	    ТаймерВыхода = СоздатьОбъект("Таймер");
		ТаймерВыхода.ЗадатьОбработчикВМодулеФормы(Контекст, "ВыходПоТаймеру");
		ТаймерВыхода.Запустить(Таймаут * 1000);
	    ТаймерСчетчика = СоздатьОбъект("Таймер");
		ТаймерСчетчика.ЗадатьОбработчикВМодулеФормы(Контекст, "Счетчик");
		ТаймерСчетчика.Запустить(1000);
		Таймаут = Таймаут - 1;
	КонецЕсли;

КонецПроцедуры //ПриОткрытии()

 


  
Наверх
 
IP записан
 
vadim2009
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Местоположение: Ярославль
Зарегистрирован: 28. Сентября 2017
Пол: Мужской
Re: Для Альфа
Ответ #9 - 29. Сентября 2017 :: 19:47
Печать  
Теперь, наверное, могу уже ссылку на тестовую обработку (раскраска списка значений) выложить https://yadi.sk/d/4bu8OCoP3NLNvz
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для Альфа
Ответ #10 - 02. Октября 2017 :: 11:42
Печать  
Поправил раскраску списков. Там почему-то был заремарен код включения раскраски. Видать что-то тестировал и забыл обратно включить.
Можно скачать сборку 129 на dorex.pro
  

FormEx developer
Наверх
www  
IP записан
 
vadim2009
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Местоположение: Ярославль
Зарегистрирован: 28. Сентября 2017
Пол: Мужской
Re: Для Альфа
Ответ #11 - 02. Октября 2017 :: 18:00
Печать  
АЛьФ писал(а) 02. Октября 2017 :: 11:42:
Поправил раскраску списков. Там почему-то был заремарен код включения раскраски. Видать что-то тестировал и забыл обратно включить.
Можно скачать сборку 129 на dorex.pro

Алексей, все заработало, спасибо! У меня на основании раскраски списков выводится справочная информация, что означает каждый цвет в различных таблицах, что-то типа легенды...
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Для Альфа
Ответ #12 - 03. Октября 2017 :: 13:35
Печать  
Цитата:
Его можно получить из списка значений, который является основой меню.


Конечно, так и сделал. Немного заморочливо только с вложенными подменю, но рекурсия, конечно, спасает. Так что это пожелание факультативное.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Для Альфа
Ответ #13 - 03. Октября 2017 :: 13:49
Печать  
На счет картинок во вложенном меню - меня на 94 версии не работает уже на третьем уровне вложенности.

Вставьте здесь свой путь к картинке, и пробуйте этот пример:
Код (C++)
Выбрать все
Картинки=СоздатьОбъект("Картинка");
Картинки.Загрузить(глПутьККартинкам+"1317.bmp");

СпМеню=СоздатьОбъект("СписокЗначений");
СпМеню.ДобавитьЗначение(1,"[icon:1] "+"Пункт 1");
	СпМеню2=СоздатьОбъект("СписокЗначений");
	СпМеню2.ДобавитьЗначение(21,"[icon:1] "+"Пункт 21");
		СпМеню3=СоздатьОбъект("СписокЗначений");
		СпМеню3.ДобавитьЗначение(31,"[icon:1] "+"Пункт 31");
			СпМеню4=СоздатьОбъект("СписокЗначений");
			СпМеню4.ДобавитьЗначение(41,"[icon:1] "+"Пункт 41");
				СпМеню5=СоздатьОбъект("СписокЗначений");
				СпМеню5.ДобавитьЗначение(51,"[icon:1] "+"Пункт 51");
				СпМеню5.ДобавитьЗначение(52,"[icon:1] "+"Пункт 52");
			СпМеню4.ДобавитьЗначение(СпМеню5,"Пункт 42");
		СпМеню3.ДобавитьЗначение(СпМеню4,"Пункт 32");
	СпМеню2.ДобавитьЗначение(СпМеню3,"Пункт 22");
СпМеню.ДобавитьЗначение(СпМеню2,"Пункт 2");
Сервис=СоздатьОбъект("Сервис");Выб=-1;
Сервис.ВыбратьЗначение(СпМеню,Выб,,0,2,Картинки);
 


  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
vadim2009
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Местоположение: Ярославль
Зарегистрирован: 28. Сентября 2017
Пол: Мужской
Re: Для Альфа
Ответ #14 - 03. Октября 2017 :: 17:08
Печать  
alyuev писал(а) 03. Октября 2017 :: 13:49:
На счет картинок во вложенном меню - меня на 94 версии не работает уже на третьем уровне вложенности.


Проверил на 129 версии, все работает... https://yadi.sk/i/B0aIDOet3NSVWT
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать