Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) класс "ПанельВкладок" (разбираемся с перехватом) (число прочтений - 6056 )
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #15 - 19. Марта 2018 :: 11:53
Печать  
Именно так "в недрах" и реализован весь интерфейс в OS.
  
Наверх
 
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #16 - 20. Марта 2018 :: 20:25
Печать  
Вопрос к знатокам, надеюсь на скорые разъяснение или ссылку для получения информации:

Как скрыть глобальные переменные "для внутреннего пользования" модуля КОП в отладчике не предназначенные на "экспорт"?
« Последняя редакция: 20. Марта 2018 :: 21:26 - recop »  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #17 - 21. Марта 2018 :: 06:13
Печать  
Никак
  
Наверх
 
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #18 - 21. Марта 2018 :: 18:24
Печать  
Похоже, придется объединять в список, чтоб не путались с нужными. Примитив.
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #19 - 22. Марта 2018 :: 06:58
Печать  
Тогда уж лучше в структуру. Так красивше будет Улыбка  да и быстрее немножко
  
Наверх
 
IP записан
 
PitKZL
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 10
Зарегистрирован: 12. Февраля 2010
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #20 - 22. Марта 2018 :: 13:42
Печать  
А живой примерчик можно, а то валятся ошибки

Процедура ПослеОткрытия()

Вкладки=СоздатьОбъект("ПанельВкладок");
Вкладки.УстановитьАтрибут("Панель",5,"bx1");
Вкладки.ЦветПанели(14467239,15389113);

TzTabs=СоздатьОбъект("ТаблицаЗначений");
TzTabs.НоваяКолонка("Наименование","Строка");
TzTabs.НоваяКолонка("Слои","Строка");
TzTabs.НоваяСтрока();
TzTabs.Наименование = "Все";
TzTabs.Слои = "Основной,Вкладка1,Подвал";
Вкладки.ТаблицаЗначений=TzTabs.Слои;
Вкладки.ТекущаяВкладка=1;
Вкладки.ОбновитьВкладки();
Вкладки.УстановитьТаблицу(TzTabs);
КонецПроцедуры

ПанельВкладок:Очень довольныйrawPanel() : Значение не представляет агрегатный объект
if ТаблицаЗначений.КоличествоСтрок()=0 then
  
Наверх
 
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #21 - 23. Марта 2018 :: 21:05
Печать  
Процедура ПослеОткрытия()

Вкладки=СоздатьОбъект("ПанельВкладок");
Вкладки.УстановитьАтрибут("Панель",5,"bx1");
Вкладки.ЦветПанели(14467239,15389113);

TzTabs=СоздатьОбъект("ТаблицаЗначений");
TzTabs.НоваяКолонка("Наименование","Строка");
TzTabs.НоваяКолонка("Слои","Строка");
TzTabs.НоваяСтрока();
TzTabs.Наименование = "Все";
TzTabs.Слои = "Основной,Вкладка1,Подвал";

Вкладки.УстановитьТаблицу(TzTabs);

КонецПроцедуры

1. Создать таблицу.
2. УстановитьТаблицу.
Остальное лишнее.

Слои переключать в предопределенной процедуре
Процедура ВкладкиПриВыбореВкладки(TzTabs,nomTabs)
   Форма.ИспользоватьСлой(TzTabs.GetValue(nomTabs,"Слои",2) и тд.
  
Наверх
 
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #22 - 03. Апреля 2018 :: 20:36
Печать  
ADirks писал(а) 22. Марта 2018 :: 06:58:
Тогда уж лучше в структуру. Так красивше будет Улыбка  да и быстрее немножко


... можно на этом месте по подробнее или ссылку на примерчик?
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #23 - 04. Апреля 2018 :: 04:50
Печать  
Примерно так
Код
Выбрать все
стВсякиеПараметры = СоздатьОбъект("Структура");
стВсякиеПараметры.Вставить("п1", 11);
стВсякиеПараметры.Вставить("п2", "22");

и обращение к полям уже традиционно, как
стВсякиеПараметры.п1
 

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


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #24 - 04. Апреля 2018 :: 18:17
Печать  
Спасибо, выберу время буду пробовать.
  
Наверх
 
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #25 - 10. Декабря 2018 :: 13:03
Печать  
Встал следующий вопрос с перехватчиком реализуемым текущим способом:
При наличии двух объектов на форме события перехватываются лишь одним созданным последним объектом.


В чем проблема???? Озадачен
« Последняя редакция: 10. Декабря 2018 :: 14:46 - recop »  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1532
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #26 - 13. Декабря 2018 :: 09:04
Печать  
recop писал(а) 10. Декабря 2018 :: 13:03:
Встал следующий вопрос с перехватчиком реализуемым текущим способом:
При наличии двух объектов на форме события перехватываются лишь одним созданным последним объектом.


В чем проблема???? Озадачен


Подозреваю, что надо слать дальше перехваченное событие. Типа такого:

Код
Выбрать все
Процедура ПриИзмененииРазмераОкна(ТипСобытия,ШФормы,ВФормы) Экспорт
	Перехватчик.ВыполнитьСобытиеГК(ПерехватчикПредыдущий,ПерехваченныйКонтекст, "ПриИзмененииРазмераОкна",ТипСобытия,ШФормы,ВФормы);
КонецПроцедуры // ПриИзмененииРазмераОкна
 

  

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


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #27 - 15. Декабря 2018 :: 06:21
Печать  
АЛьФ писал(а) 13. Декабря 2018 :: 09:04:
[quote author=2D3A3C302F5F0 link=1519812923/25#25 date=1544447004]
Подозреваю, что надо слать дальше перехваченное событие. Типа такого:

Код
Выбрать все
Процедура ПриИзмененииРазмераОкна(ТипСобытия,ШФормы,ВФормы) Экспорт
	Перехватчик.ВыполнитьСобытиеГК(ПерехватчикПредыдущий,ПерехваченныйКонтекст, "ПриИзмененииРазмераОкна",ТипСобытия,ШФормы,ВФормы);
КонецПроцедуры // ПриИзмененииРазмераОкна
 



Только не очень понятно что есть на данном примере "ПерехватчикПредыдущий"?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1532
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #28 - 25. Декабря 2018 :: 14:01
Печать  
recop писал(а) 15. Декабря 2018 :: 06:21:
Только не очень понятно что есть на данном примере "ПерехватчикПредыдущий"?


Код
Выбрать все
Процедура Конструктор()
	Перехватчик = СоздатьОбъект("Перехватчик");
	ПерехваченныйКонтекст = Сам(Контекст).ПолучитьКонтекстОкружения();
	ПерехватчикПредыдущий = Перехватчик.ПолучитьПерехватчикСобытийГК(ПерехваченныйКонтекст);
	Перехватчик.ПерехватитьСобытияГК(ПерехваченныйКонтекст, Сам(Контекст));
 

  

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


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: класс "ПанельВкладок" (разбираемся с перехватом)
Ответ #29 - 28. Декабря 2018 :: 05:10
Печать  
АЛьФ писал(а) 25. Декабря 2018 :: 14:01:
recop писал(а) 15. Декабря 2018 :: 06:21:
Только не очень понятно что есть на данном примере "ПерехватчикПредыдущий"?


Код
Выбрать все
Процедура Конструктор()
	Перехватчик = СоздатьОбъект("Перехватчик");
	ПерехваченныйКонтекст = Сам(Контекст).ПолучитьКонтекстОкружения();
	ПерехватчикПредыдущий = Перехватчик.ПолучитьПерехватчикСобытийГК(ПерехваченныйКонтекст);
	Перехватчик.ПерехватитьСобытияГК(ПерехваченныйКонтекст, Сам(Контекст));
 



Спасибо дорогой, как всегда по твоим стопам...
Мне бы ещё понять правильность последующего вызова оригинального события:

Код
Выбрать все
Процедура Событие_ПриДвиженииМыши(Сост,mX,mY,ФСО)
	Перехватчик.ВыполнитьСобытиеГК(ПерехватчикПредыдущий,ПерехваченныйКонтекст, "ПриДвиженииМыши",Сост,mX,mY,ФСО);
	Перехватчик.ВыполнитьОригинальноеСобытиеГК (ПерехваченныйКонтекст,"ПриДвиженииМыши",Сост,mX,mY,ФСО);
 



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