Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Снятие блокировки ячейки Excel, OLE Container & MS Excel 
V
    Опции темы
Oberon83
Дата 3.10.2006, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 6.5.2005
Где: Республика Чуваши я

Репутация: 1
Всего: 1



Мне нужно загрузить шаблон экселевской таблицы, дополнить ее данными из БД и закрыть ненужные ячейки(названия колонок,порядковые номера элементов и т.д.) от ввода, и оставить для ввода основную форму таблицы. Документ подгружается в OleContainer и там же должен обрабатываться. Защищать весь лист научился, а вот додуматься как снять защиту с определенных ячеек - нет. Нашел объект Protection и его свойство AllowEditRanges, которое отвечает как раз за снятие блокировки с ячеек, но вот не пойму каким образом это применить(какой синтаксис)?
Код приложения:
Код

Variant sheets;
Variant sheet;
Variant cells;

OleContainer1->CreateObjectFromFile("C:\\1.xls",false);

OleContainer1->DoVerb(ovShow);

//Убираем панельки
OleContainer1->OleObject.OlePropertyGet("CommandBars","Standard").OlePropertySet("Visible",false);
OleContainer1->OleObject.OlePropertyGet("CommandBars","Formatting").OlePropertySet("Visible",false);


sheets = OleContainer1->OleObject.OlePropertyGet("Worksheets");


sheet = sheets.OlePropertyGet("Item",1);

//Обзываем лист
sheet.OlePropertySet("Name","Таблица 1.1");

...

...

//Ставим защиту
sheet.OleProcedure("Protect","123");

...



Нашел так же кусочек кода с использованием объекта Protection, только перевести его никак не могу:

Код

private void ProtectSheet()
{
  Excel.Worksheet ws =
  (Excel.Worksheet)ThisApplication.ActiveSheet;
 
  Excel.AllowEditRanges ranges = ws.Protection.AllowEditRanges;
  ranges.Add("Information", 
    ThisApplication.get_Range("Information", Type.Missing), 
    Type.Missing);
  ranges.Add("Date", 
    ThisApplication.get_Range("Date", Type.Missing), Type.Missing);
 
  ws.Protect(Type.Missing, Type.Missing, Type.Missing, 
    Type.Missing, Type.Missing,Type.Missing, Type.Missing, 
    Type.Missing,Type.Missing, Type.Missing, Type.Missing, 
    Type.Missing,Type.Missing,Type.Missing,
    Type.Missing,Type.Missing);
}
 
private void UnprotectSheet()
{
  Excel.Worksheet ws = 
    (Excel.Worksheet) ThisApplication.Sheets["Worksheet Class"];
  ws.Unprotect(Type.Missing);
 
  // Удаляем все диапазоны защиты, чтобы их очистить.
  // При удалении необходимо с помощью индекса перебрать
  // эти объекты в обратном порядке. У данного набора нет
  // перечислителя, а при переборе в обычном порядке
  // изменение размера не учитывается.
 
  Excel.AllowEditRanges ranges = ws.Protection.AllowEditRanges;
  for (int i = ranges.Count; i >= 1; i--)
  {
    ranges[i].Delete();
  }
}


Помогите кто чем может...
Заранее благодарен.
--------------------
OpenArea.ru
PM MAIL ICQ   Вверх
Oberon83
Дата 4.10.2006, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 6.5.2005
Где: Республика Чуваши я

Репутация: 1
Всего: 1



Научился таки:
Код

//Облать
sheet.OlePropertyGet("Range","A10:D16").OlePropertySet("Locked",false);

//Ячейка
sheet.OlePropertyGet("Cells").OlePropertyGet("Item",5,6).OlePropertySet("Locked",false);

--------------------
OpenArea.ru
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0369 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.