Переключение на Главную Страницу Страницы: [1] 2 3 ... 5 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс: РедактированиеТаблицыЗначений (число прочтений - 36429 )
noprogrammer
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 465
Зарегистрирован: 16. Июня 2006
Класс: РедактированиеТаблицыЗначений
11. Октября 2006 :: 07:42
Печать  
Класс преднозначен для прямого ввода в таблицу значений, создан по "чертежам" альфа и с использованием нового метода "ПерехватитьСобытияГК" - если не ошибаюсь автор  artbear.

P.S. Почему то не могу прицепить файл (не ругается но и не цепляется Печаль )... поэтому просто сслыка для скачивания
http://infostart.ru/projects/index.php?id=566&ref=1767
  
Наверх
wwwICQ  
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Класс: РедактированиеТаблицыЗначений
Ответ #1 - 12. Октября 2006 :: 18:14
Печать  
А у меня выдает сообщение что не обнаружен служебный реквизит ОбъектЯчейка (Win2000 sp4, 1С 025 net, 1С++2.5, Formex 2.0.5.0#26)  Смущённый
  
Наверх
 
IP записан
 
noprogrammer
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 465
Зарегистрирован: 16. Июня 2006
Re: Класс: РедактированиеТаблицыЗначений
Ответ #2 - 12. Октября 2006 :: 18:33
Печать  
на форме должен быть реквизит неопределенного типа с идентификатором "ОбъектЯчейка", в примере он есть.
  
Наверх
wwwICQ  
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Класс: РедактированиеТаблицыЗначений
Ответ #3 - 13. Октября 2006 :: 17:30
Печать  
Да я пример и запускаю и реквизит вижу  Подмигивание
  
Наверх
 
IP записан
 
noprogrammer
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 465
Зарегистрирован: 16. Июня 2006
Re: Класс: РедактированиеТаблицыЗначений
Ответ #4 - 13. Октября 2006 :: 18:17
Печать  
ни теоритически ни практически такого быть не должно Подмигивание чесслово теряюсь в догадках... не полинился сам скачал (думал может что не то выложил) ан нет - работает.
  
Наверх
wwwICQ  
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Класс: РедактированиеТаблицыЗначений
Ответ #5 - 14. Октября 2006 :: 18:04
Печать  
Буду думать Печаль
  
Наверх
 
IP записан
 
noprogrammer
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 465
Зарегистрирован: 16. Июня 2006
Re: Класс: РедактированиеТаблицыЗначений
Ответ #6 - 14. Октября 2006 :: 18:57
Печать  
Попробуй так

Код
Выбрать все
Процедура Конструктор()
	Сервис=СоздатьОбъект("Сервис");
	Конт=""; Сервис.АктивныйКонтекст(Конт);

	Сообщить("ТипЗначенияКонтекста = "+ТипЗначенияСтр(Конт));
	РасширениеФормы=СоздатьОбъект("РасширениеФормы");
	РасширениеФормы.УстановитьФорму(Конт.Форма);
	Сообщить("ПолныйТипКонтекста = "+РасширениеФормы.ПолныйТипОбъекта());

	Попытка ОбъектЯчейка=РасширениеФормы.ПолучитьАтрибут("ОбъектЯчейка");
	Исключение Сообщить("Отсутствует служебный реквизит <ОбъектЯчейка>");
	КонецПопытки;

	Сам(Контекст).ПерехватитьСобытияГК(Конт);

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



если не сложно сообщи потом результат: аська 165-768-938
  
Наверх
wwwICQ  
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Класс: РедактированиеТаблицыЗначений
Ответ #7 - 16. Октября 2006 :: 16:42
Печать  
Спасибо - все получилось ! И с первым вариантом тоже  Смущённый  (когда сделал на пустой базе)
  
Наверх
 
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Класс: РедактированиеТаблицыЗначений
Ответ #8 - 13. Ноября 2006 :: 10:37
Печать  
Есть класс СуперТЗ : ТаблицаЗначений
Оснавная цель - добавить некоторые события к ТЗ, размещаемой на форме + прямой ввод.
Код
Выбрать все
Процедура _Инит_(Конт,Ид) Экспорт
	Сам_Атрибут=СоздатьОбъект("АтрибутФормы");
	Сам_Атрибут.УстановитьАтрибут(Конт.Форма,Ид);

	Сам().ЗаменитьЭксзБазовогоКласса("ТаблицаЗначений",Сам_Атрибут.Значение);

	УправлениеНастр=СоздатьОбъект("УправлениеНастройками");
	УправлениеНастр.Установить("ПерехватитьСобытияГК",1);

	клПерехватчик=СоздатьОбъект("Перехватчик");
	клПерехватчик.ПерехватитьСобытияГК(Конт,Сам());
КонецПроцедуры
//______________________________________________________________
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) Экспорт
	Если Источник="FormEx" Тогда
		Если Событие="НачалоРедактированияЯчейки" Тогда
			;

		    в = ""; л = ""; н = ""; п = "";
		    // получаем экранные координаты текущей ячейки таблицы
		   ,н,п);
		    // перемещаем служебный реквизит так, чтобы он вписался внутрь ячейки
		    АтрибутРедактирования.УстановитьКоординаты(л,в,п-л,н-в);
		    // изменяем стиль слежубного реквизита, чтобы он более походил на используемые при вводе в многострочных частях
		    АтрибутРедактирования.Рамка = 0;
		    // изменяем родительское окно служебного реквизита
		    // если этого не сделать, то ТЗ просто перекроет наш реквизит и мы ничего с ним не сможем сделать интерактивно
		    АтрибутРедактирования.РодительскоеОкно = АктивныйКонтекст().Форма.ПолучитьАтрибут(Сам_Атрибут.Идентификатор);
		    // устанавливаем текущее значение из ТЗ в служебный реквизит
		    АтрибутРедактирования.Значение = ний").ТекущаяКолонка());
		    // показываем служебный реквизит...
		  
		    // ... и активизируем его
		    АктивныйКонтекст().Активизировать("АтрибутРедактирования",1);

		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
//______________________________________________________________
Процедура УстановитьТипЯчейки()
	Тип="";Длин=0;Точн=0;
	ий").ТекущаяКолонка(),Тип,Длин,Точн);      
	АктивныйКонтекст().Форма.АтрибутРедактирования.НазначитьТип(Тип,Длин,Точн);
	АктивныйКонтекст().Форма.Обновить();
КонецПроцедуры
//______________________________________________________________
Процедура ПриДвойномНажатииЛевойКнопки(Сост,Х,У,ФСО) Экспорт
	а=0;б=0;с=0;д=0;
	Сам_Атрибут.ПолучитьКоординаты(а,б,с,д);
	Если (Х>=а) и (Х<=а+с) и (У>=б) и (У<=б+д) Тогда
		Если СамБазовый("ТаблицаЗначений").КоличествоСтрок()=0 Тогда
			Возврат;
		КонецЕсли;
		УстановитьТипЯчейки();
		клСервис.ВнешнееСобытие("FormEx", "НачалоРедактированияЯчейки", "");
	КонецЕсли;

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



АтрибутРедактирования - РеквизитДиалога с типом Неопределённый.
Так вот, если выполняется попытка редактирования колонки с агрегарным типом данных, например, справочник.номенклатура - всё нормально. Если же тип текущей колонки редактируемой ТЗ Число, то реквизит АтрибутРедактирования как бы не видим. Он подстраивается в нужное место, становиться видимой "педалька" выбора значения, но то, что вводится пользователем не отображается, просто чистое, белое окошко. Хотя если нажать на "педальку", то в открывшемся калькуляторе отображается введённое значение.
Что не так?
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Класс: РедактированиеТаблицыЗначений
Ответ #9 - 13. Ноября 2006 :: 11:07
Печать  
хм... такое впечатление, что не правильно выполняется
Код
Выбрать все
АтрибутРедактирования.УстановитьКоординаты(л,в,п-л,н-в); 


Убрал педальку. Сделал в конфигураторе реквизит АтрибутРедактирования поуже и, о чудо!  Ужас
Теперь я вижу цифры, что туда ввожу, НО! всё равно как-то криво. Периодически они всё-равно исчезают. Это раз. А во-вторых, курсора всё равно не видать, что тоже не есть хорошо.

З.Ы. ФормЕкс пробовал #26 и #33
  
Наверх
ICQ  
IP записан
 
noprogrammer
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 465
Зарегистрирован: 16. Июня 2006
Re: Класс: РедактированиеТаблицыЗначений
Ответ #10 - 13. Ноября 2006 :: 15:01
Печать  
К сожалению это реальная проблемма (реквизиты с педалькой типа "строка,число, дата") - отрабатываются неправильно... я долго мучался, но так и не нашел решения - поэтому просто убрал "педальку" Улыбка
  
Наверх
wwwICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Класс: РедактированиеТаблицыЗначений
Ответ #11 - 14. Ноября 2006 :: 01:09
Печать  
noprogrammer писал(а) 13. Ноября 2006 :: 15:01:
К сожалению это реальная проблемма (реквизиты с педалькой типа "строка,число, дата") - отрабатываются неправильно... я долго мучался, но так и не нашел решения - поэтому просто убрал "педальку" Улыбка

дык... убирал я педаль. Всё равно, во-первых ширина реквизита не подгоняется по ширине колонки, во-вторых, как-то криво выглядит всё это... например, нет курсора в реквизите...
  
Наверх
ICQ  
IP записан
 
noprogrammer
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 465
Зарегистрирован: 16. Июня 2006
Re: Класс: РедактированиеТаблицыЗначений
Ответ #12 - 14. Ноября 2006 :: 08:21
Печать  
Посмотри, в нутри класса есть небольшие описания (проблемки связанные с реквизитом неопределенного типа и их решения), похоже ты именно на это наткнулся...
  
Наверх
wwwICQ  
IP записан
 
falkongm
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 05. Сентября 2006
Пол: Мужской
Re: Класс: РедактированиеТаблицыЗначений
Ответ #13 - 24. Декабря 2006 :: 11:38
Печать  
А у меня чето не получается...
Запускаю обработку с тестовым примером, а мне выдается следующая ошибка

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

Я так понимаю ругается на ПерехватитьСобытияГК, но по чему

Стоит 1с++ 2.5, formex 2.0.5.0 #33
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс: РедактированиеТаблицыЗначений
Ответ #14 - 24. Декабря 2006 :: 16:38
Печать  
УправлениеНастройками = СоздатьОбъект("УправлениеНастройками");
УправлениеНастройками.Включить("ПерехватитьСобытияГК");
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 ... 5
ОтправитьПечать