Переключение на Главную Страницу Страницы: 1 [2] 3 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Маленький класс для создания закладок (число прочтений - 21076 )
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Маленький класс для создания закладок
Ответ #15 - 14. Февраля 2008 :: 14:04
Печать  
А можно еще проще:
Код
Выбрать все
Процедура ТекущаяЗакладка(Закл) Экспорт
	Если ТипЗначенияСтр(Закл)="Число" Тогда
		ОбъектЗакладки.Value=Закл-1;
	ИначеЕсли ТипЗначенияСтр(Закл)="Строка" Тогда
		ОбъектЗакладки.Value=ОбъектЗакладки.Pages.Item(Закл).Index;
	КонецЕсли;
КонецПроцедуры 

  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Маленький класс для создания закладок
Ответ #16 - 14. Февраля 2008 :: 14:06
Печать  
И лучше не процедуру, а функцию - а возвращать ОбъектЗакладки.Value
Круглые глаза
  
Наверх
 
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Маленький класс для создания закладок
Ответ #17 - 14. Февраля 2008 :: 14:10
Печать  
Как оказалось можно еще проще:
Код
Выбрать все
Процедура ТекущаяЗакладка(Закл) Экспорт
	ОбъектЗакладки.Value=ОбъектЗакладки.Pages.Item(Закл).Index;
КонецПроцедуры 


Но если сюда передавать номер закладки, то нумерация начиная с нуля...
« Последняя редакция: 14. Февраля 2008 :: 15:25 - Kapet »  
Наверх
ICQ  
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Маленький класс для создания закладок
Ответ #18 - 14. Февраля 2008 :: 14:12
Печать  
kiruha писал(а) 14. Февраля 2008 :: 14:06:
И лучше не процедуру, а функцию - а возвращать ОбъектЗакладки.Value
Круглые глаза

Йес, оф коз...

Пардон, а зачем? Мы чё, сами не знаем чё кидаем в эту процедуру?
  
Наверх
ICQ  
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Маленький класс для создания закладок
Ответ #19 - 14. Февраля 2008 :: 14:39
Печать  
vandalsvq писал(а) 23. Ноября 2007 :: 08:58:
1cvirus писал(а) 23. Ноября 2007 :: 07:55:
Цитата:
еще вопросы?

спасибо помогло


Пожалуйста.


И еще комментарий на счет вставки закладок... я пока не заморачивался на счет вставки закладок в конкретное место поэтому ...


Чуть-чуть правим процедуру в классе:
Код
Выбрать все
Процедура ВставитьЗакладку(Идентификатор,Заголовок,Подсказка="",ПозицияЗакладки=100) Экспорт
	Если ПозицияЗакладки=100 Тогда // не бывает такого, т.е. тупо в конец
		ТаблицаЗакладок.НоваяСтрока();
	Иначе
		ТаблицаЗакладок.НоваяСтрока(ПозицияЗакладки);
	КонецЕсли;
	ТаблицаЗакладок.Идентификатор = Идентификатор;
	ТаблицаЗакладок.Заголовок = Заголовок;
	ТаблицаЗакладок.Подсказка = Подсказка;
	//
	ОбъектЗакладки = Закладки.Объект;
	//
	Страницы = ОбъектЗакладки.Pages;
	Страница = Страницы.Add(Идентификатор,Заголовок,ТаблицаЗакладок.НомерСтроки-1);
	Страница.ControlTipText = ТаблицаЗакладок.Подсказка;
	ТаблицаЗакладок.ОбъектЗакладка = Страница;
КонецПроцедуры 

  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Маленький класс для создания закладок
Ответ #20 - 14. Февраля 2008 :: 14:49
Печать  
Kapet писал(а) 14. Февраля 2008 :: 14:12:
kiruha писал(а) 14. Февраля 2008 :: 14:06:
И лучше не процедуру, а функцию - а возвращать ОбъектЗакладки.Value
Круглые глаза

Йес, оф коз...

Пардон, а зачем? Мы чё, сами не знаем чё кидаем в эту процедуру?


По аналогии с методами ТекущаяКолока() или ТекущаяСтрока() в ТЗ.
Все таки должно быть некое единообразие Улыбка
+ метод ТекущаяСтраница() станет лишним.
  
Наверх
 
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Маленький класс для создания закладок
Ответ #21 - 14. Февраля 2008 :: 14:56
Печать  
kiruha писал(а) 14. Февраля 2008 :: 14:49:
Kapet писал(а) 14. Февраля 2008 :: 14:12:
kiruha писал(а) 14. Февраля 2008 :: 14:06:
И лучше не процедуру, а функцию - а возвращать ОбъектЗакладки.Value
Круглые глаза

Йес, оф коз...

Пардон, а зачем? Мы чё, сами не знаем чё кидаем в эту процедуру?


По аналогии с методами ТекущаяКолока() или ТекущаяСтрока() в ТЗ.
Все таки должно быть некое единообразие Улыбка
+ метод ТекущаяСтраница() станет лишним.

Знаю точно, что хуже не будет.
Тогда уже возвращать если передали номер то идентификатор, и наоборот. Ок?

Приблизительно так:
Код
Выбрать все
Функция ТекущаяЗакладка(Закл) Экспорт
	ОбъектЗакладки.Value=ОбъектЗакладки.Pages.Item(Закл).Index;
	Если ТипЗначенияСтр(Закл)="Число" Тогда
		Возврат ОбъектЗакладки.Pages.Item(Закл).Name;
	Иначе
		Возврат ОбъектЗакладки.Pages.Item(Закл).Index;
	КонецЕсли;
КонецФункции 

  
Наверх
ICQ  
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Маленький класс для создания закладок
Ответ #22 - 14. Февраля 2008 :: 15:07
Печать  
У меня есть смутное подозрение, что в этом классе можно обойтись без ТЗ "ТаблицаЗакладок". Пока не уверен...
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Маленький класс для создания закладок
Ответ #23 - 14. Февраля 2008 :: 15:51
Печать  
Kapet писал(а) 14. Февраля 2008 :: 14:56:
Знаю точно, что хуже не будет.
Тогда уже возвращать если передали номер то идентификатор, и наоборот. Ок?


Вероятно - немного предсказуемей возвращать всегда номер колонки (до исполнения метода),
а идентификатор получать вторым необязательным параметром функции.
  
Наверх
 
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Маленький класс для создания закладок
Ответ #24 - 14. Февраля 2008 :: 15:53
Печать  
Логичнее будет так:
Если передаем в функцию параметр, то устанавливаем закладку, получаем номер закладки  (, или идентификатор, по личному предпочтению).
Если вызываем функцию без параметра, то только получаем идентификатор текущей закладки (, или номер, по личному предпочтению)

Код
Выбрать все
Функция ТекущаяЗакладка(Закл="") Экспорт
	Если Закл="" Тогда
		Возврат ОбъектЗакладки.SelectedItem.Name;
		//Возврат ОбъектЗакладки.SelectedItem.Index;
	Иначе
		ОбъектЗакладки.Value=ОбъектЗакладки.Pages.Item(Закл).Index;
		Возврат ОбъектЗакладки.Pages.Item(Закл).Index;
		//Возврат ОбъектЗакладки.Pages.Item(Закл).Name;

	КонецЕсли;
КонецФункции 

  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Маленький класс для создания закладок
Ответ #25 - 14. Февраля 2008 :: 18:58
Печать  
Вот как стало весело... а валялся он и валялся никому не нужный...

1. На счет вставки в нужное место. Просто не было необходимости лично мне, а ввиду того что времени как у всех нет я просто не заморачивался.
Большое спасибо за изыскания.
2. На счет установки текущей страницы... оказывается у некоторых (таких как я) короткая память и в моем классе есть метод "ВыбратьЗакладку" где передается ИД или номер
однако всем все равно большое спасибо
3. Отказаться от таблицы закладок можно (наверное  Круглые глаза), однако переписывать не охото. Т.к. других идей хоть изивините одним место жуй. Так что вполне устраивает. Да и в памяти я не уверен что это занимает так много места.

У меня еще много идей по его расширению... но буду возится по мере необходимости. А в связи с надвигающейся ..опой по 8-ке боюсь будет не до него.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Маленький класс для создания закладок
Ответ #26 - 14. Февраля 2008 :: 19:43
Печать  
Последнее изменение (15.02.08):
1.  Возможность создавать закладки в нужной позиции - ВставитьЗакладку(ИД,Заголовок,Подсказка,НомерЗакладки)
2.  Возможность позиционироваться на закладке по ее номеру или идентификатору - ВыбратьЗакладку(ИД)

Все кто писал большое спасибо, я принимаю во внимание все сказанное ниже но как и многие перекраиваю на свой манер.
Кому еще что захочется а самим будет лень напишите, будет время покопаюсь, но не гарантирую.

Кстати было желание перейти с Forms на Comctl или вообще на Codejock-овские контролы.
Из плюсов Comctl:
1. пиктограммы на закладке
2. установка фиксированной ширины и высоты закладки (в Формз пока в этом направлении не копал)
Из минусов Comctl:
1. отсутствие управления видимостью и доступностью (мне это пока нравится и отказываться не хочу)
Из плюсов Codejock:
1. Все что только можно придумать они умеют.
2. Внешний вид, одно только это стоит многого
Из минусов Codejock:
1. Платность контролов (хотя мы живем в России конечно, но на коммерческие продукты не советую)
2. Дольше разбираться и сложнее в кодинге, но это все мелочи и фигня в принципе.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Маленький класс для создания закладок
Ответ #27 - 15. Февраля 2008 :: 07:51
Печать  
vandalsvq писал(а) 14. Февраля 2008 :: 19:43:
Последнее изменение (15.02.08):
1. Платность контролов (хотя мы живем в России конечно, но на коммерческие продукты не советую)

Ну, не всем же так не повезло  Улыбка
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Маленький класс для создания закладок
Ответ #28 - 15. Февраля 2008 :: 14:04
Печать  
Kapet писал(а) 15. Февраля 2008 :: 07:51:
vandalsvq писал(а) 14. Февраля 2008 :: 19:43:
Последнее изменение (15.02.08):
1. Платность контролов (хотя мы живем в России конечно, но на коммерческие продукты не советую)

Ну, не всем же так не повезло  Улыбка


Подмигивание будет класс на Codejock обязательно выложу... один уже делал... поэтому знаю как с ними разговаривать  Улыбка
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Маленький класс для создания закладок
Ответ #29 - 20. Февраля 2008 :: 11:31
Печать  
Последнее обновление от 20.02.08

Новый метод:
УстановитьПараметрыЗакладки(ИДЗакладки,Заголовок,Подсказка,Положение)

Параметры:
ИДЗакладки - число или строкой идентификатор закладки
Заголовок - новый заголовок закладки
Подсказка - новая подсказка закладки
Положение - новый номер закладки

Пример:
Закладки.УстановитьПараметрыЗакладки(3,"Новый заголовок","Подсказка нового заголовка",1)

Результат:
В итоге закладка под номер 3 встанет на место первой и изменится заголовок и подсказка.  Класс

Необходимость данного функционала для меня под вопросом, но в принципе почему бы и нет.  Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 
ОтправитьПечать