Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Миникласс ПрогрессБар (число прочтений - 7592 )
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Миникласс ПрогрессБар
12. Апреля 2011 :: 09:44
Печать  
Из требований - dynwrapx.dll, класс DWX.
« Последняя редакция: 14. Апреля 2011 :: 05:49 - chessman »  

PB_001.ert ( 8 KB | Загрузки )
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Миникласс ПрогрессБар
Ответ #1 - 12. Апреля 2011 :: 09:54
Печать  
Заметил такую особенность - при последовательном отображении нескольких прогрессов
(например запускаю обработку из нескольких этапов, каждый показывает свой прогресс)
наблюдаю картину, когда мелькает на переднем плане окно, которое находится в фоне.

Пока единственно на что грешу - не вызываю явно метод "Скрыть", а просто экземпляр класса "ПрогрессБар" локальный в каждом этапе, соответственно скрывается по срабатыванию деструктора.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Миникласс ПрогрессБар
Ответ #2 - 12. Апреля 2011 :: 10:08
Печать  
Класс можешь выложить?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Миникласс ПрогрессБар
Ответ #3 - 12. Апреля 2011 :: 10:19
Печать  
chessman,
слушай, у тебя случаем нет залипухи, (помню что была - найти не могу) которая показывает всплывающее окошко с произвольным текстом поверх всех окон ?
Нужен примерчик.
Идея - полоса с красным фоном во всё окно для показа служебных сообщений. Всякие нетсенды и пручую муть никто не читает.
А тут не закрыть и глаза мозолит Улыбка
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Миникласс ПрогрессБар
Ответ #4 - 12. Апреля 2011 :: 10:21
Печать  
chessman писал(а) 12. Апреля 2011 :: 10:08:
Класс можешь выложить?


Там твой код, я ничего не менял по существу, так причесал под себя..
Только это еще предыдущая версия, там без изменения прозрачности
(мне это не надо, поэтому не стал вставлять, только поправил ошибку с неправильной установкой мин/макс значений)
  

______________________002.ert ( 34 KB | Загрузки )
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Миникласс ПрогрессБар
Ответ #5 - 12. Апреля 2011 :: 10:36
Печать  
CaBaT писал(а) 12. Апреля 2011 :: 10:21:
chessman писал(а) 12. Апреля 2011 :: 10:08:
Класс можешь выложить?


Там твой код, я ничего не менял по существу, так причесал под себя..
Только это еще предыдущая версия, там без изменения прозрачности
(мне это не надо, поэтому не стал вставлять, только поправил ошибку с неправильной установкой мин/макс значений)


Блин....для кого я изменения делаю.... Улыбка
Я ж в "новой" версии кроме прозрачности поправил как раз проблему с "морганием", о чем писал еще в курилке.

"Моргание" лечится так:
Код
Выбрать все
Wrap.ShowWindow hWnds, 8  


  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Миникласс ПрогрессБар
Ответ #6 - 12. Апреля 2011 :: 10:38
Печать  
вот я шляпа..
сорри за беспокойство, тогда прочитал наискосок изменения - кроме интересующего меня остальное проморгал Улыбка
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Миникласс ПрогрессБар
Ответ #7 - 12. Апреля 2011 :: 10:44
Печать  
Eprst писал(а) 12. Апреля 2011 :: 10:19:
chessman,
слушай, у тебя случаем нет залипухи, (помню что была - найти не могу) которая показывает всплывающее окошко с произвольным текстом поверх всех окон ?
Нужен примерчик.
Идея - полоса с красным фоном во всё окно для показа служебных сообщений. Всякие нетсенды и пручую муть никто не читает.
А тут не закрыть и глаза мозолит Улыбка


Сейчас гляну...
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Миникласс ПрогрессБар
Ответ #8 - 12. Апреля 2011 :: 11:02
Печать  
Eprst, думаю, что об этом речь
  

ToolTip_001.ert ( 8 KB | Загрузки )
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Миникласс ПрогрессБар
Ответ #9 - 12. Апреля 2011 :: 11:08
Печать  
chessman писал(а) 12. Апреля 2011 :: 11:02:
Eprst, думаю, что об этом речь

Ух ты, вот это вещь!
Давно собирался прикрутить тултипы из компоненты Robert-а (RTooltips), да все никак руки не доходили..
Еще бы интерфейс расширить в части манипуляции аттрибутов..  Подмигивание
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Миникласс ПрогрессБар
Ответ #10 - 12. Апреля 2011 :: 11:13
Печать  
Я что-то пытался сделать, да потом забил
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Миникласс ПрогрессБар
Ответ #11 - 12. Апреля 2011 :: 11:47
Печать  
Да это оно, спасибо!
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Миникласс ПрогрессБар
Ответ #12 - 13. Апреля 2011 :: 01:52
Печать  
chessman, предлагаю объединить в класс и мои доработки, основанные на одной из первых версий сабжа.

В архиве не хватает только свойства класса Общие.СистемныеФункции
Код
Выбрать все
Процедура ПриПолучении_ГлавноеОкно1С(ЗначениеАтрибута)
	Если ПустоеЗначение(ГлавноеОкно1С) = 1 Тогда
		Сам = Сам(Контекст);
	    Враппер = СоздатьОбъект("DynamicWrapper");
	    Враппер.Register("user32.dll",	"FindWindowExA",			"i=llsl",	"f=s", "r=l");
	    Враппер.Register("user32.dll",	"FindWindowW",				"i=ll",		"f=s", "r=l");
	    Враппер.Register("user32.dll",	"GetWindow",				"i=ll",		"f=s", "r=l");
	    Враппер.Register("user32.dll",	"GetParent",				"i=l",		"f=s", "r=l");
	    Враппер.Register("User32.dll",	"GetWindowThreadProcessId",	"i=ll",		"f=s", "r=l");
	    Враппер.Register("User32.dll",	"FindWindowEx",				"i=hhsl",	"r=h");
	    Враппер.Register("User32.dll",	"GetDesktopWindow",			"r=h");
		dWnd = Враппер.GetDesktopWindow();
		GW_CHILD = 5;
		GW_HWNDNEXT = 2;
		hWnd = Враппер.GetWindow(dWnd, GW_CHILD);
		Пока hWnd > 0 Цикл
			curThread = Враппер.GetWindowThreadProcessId(hWnd, 0);
			Если curThread = Сам.Поток1С Тогда
				Если Враппер.FindWindowEx(hWnd, 0, "MDIClient", 0) > 0 Тогда
					ГлавноеОкно1С = hWnd;
					hWnd = 0;
				Иначе
					hWnd = Враппер.GetWindow(hWnd, GW_HWNDNEXT);
				КонецЕсли;
			Иначе
				hWnd = Враппер.GetWindow(hWnd, GW_HWNDNEXT);
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	ЗначениеАтрибута = ГлавноеОкно1С;
КонецПроцедуры 


Это чтобы вопросов не было, так то у тебя там оно уже есть...

P.S.: Сделано на коленках где-то полгода назад, но плотно используется во всех конфах в долгих обработках.
  

______________001.rar ( 16 KB | Загрузки )
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Миникласс ПрогрессБар
Ответ #13 - 13. Апреля 2011 :: 05:49
Печать  
Dmitry The Wing писал(а) 13. Апреля 2011 :: 01:52:
chessman, предлагаю объединить в класс и мои доработки, основанные на одной из первых версий сабжа.


Я не против, скажи только - зачем? Ты получаешь хендл окна перебором (я так раньше тоже делал) - сейчас я его получаю "в лоб".

  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Миникласс ПрогрессБар
Ответ #14 - 14. Апреля 2011 :: 02:14
Печать  
chessman писал(а) 13. Апреля 2011 :: 05:49:
Dmitry The Wing писал(а) 13. Апреля 2011 :: 01:52:
chessman, предлагаю объединить в класс и мои доработки, основанные на одной из первых версий сабжа.


Я не против, скажи только - зачем? Ты получаешь хендл окна перебором (я так раньше тоже делал) - сейчас я его получаю "в лоб".


Про получение я привел код только для того, чтобы было понятно, что у меня там за свофство в классе вызывается.
Основной упор в прошлом сообщении был на архив, в котором реализовано два прогресса - с одним и двумя бегунками...
Но делалось все наспех и на коленках, по идее можно сделать один класс с настраиваемым числом бегунков, влияющих на размер окна-подложки.
Именно об этом я предлагаю подумать.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать