Formula One

Обсуждение извечных проблем кларионовских (и не только) отчетов

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
RozAlex
Посетитель
Сообщения: 34
Зарегистрирован: 06 Июль 2005, 16:39
Откуда: Moscow
Контактная информация:

Сообщение RozAlex »

Господа!
Научите кто-нибудь, как работать со свойствами сабжевой OCX?
Например, надо авто-выравнять столбы, раскрасить ячейки, сменить шрифт и пр...
Написал: RozAlex(1)
Гость

Сообщение Гость »

RozAlex

С пропертями работать достаточно просто, как и с любым OLE объектом:

1. Создаем окно с соответствующим объектом OLE. Пусть у него имя будет ?OLE для простоты. В свойствах задаем нужные нам разрешения на редактирование и события. Если пока непонятны какие-то - оставим по умолчанию ;)

2. С помощью WorkBook Designer'a создаем соответствующий файл-заготовку и сохраняем где-нить на диске. Например - 101.vts.
(в приведенном ниже примере - просто показано как в ЛЮБОМ месте созданной заготовки найти слово test и заменить его на длинную строку, а затем выровнять ширину найденного столбца по максимальной строке в нем)
Для примера просто в файле в одной из ячеек пишем слово test и сохраняем его в текущем (для проекта) каталоге

3. Для целей работы с создаваемыми в OLE объекте вложенными объектами (поиска и замены, например) создаем переменную CSTRING длиной порядка 20-40 байт. (Я использую с запасом - 80) - в моем примере cntrl

4. В одном из embeds (какое надо - зависит от конкретной задачи, я использовал "After initializing OLE control" для работы сразу по открытию окна) пишем что-то подобное нижеследующему (пример из 10-минутного теста, уверен - Вы напишете гораздо лучше):

?OLE{'ReadEX(101.vts)'} !------ Окрываем файл-заготовку

?OLE{'SetActiveCell(1,1)'} !------ Это просто для уверенности, что стоим в левом верхнем углу листа

cntrl = ?OLE{'DefineSearch("test",1,1,1,100,100,0)'} !----- Определяем диапазон поиска в квадрате 100х100 и создаем вложенный объект поиска. При этом в переменной cntrl будет псевдо-ссылка на созданный в OLE вложенный объект

?OLE{Prop:AddRef}=cntrl !----- А это надо для повторных обращений к такому объекту

if ?OLE{cntrl&'.FindNext()'} !---- Пробуем искать наше слово

stop('Inside the condition Column = ' & ?OLE{cntrl & '.Col'} & ' Row =' & ?OLE{cntrl&'.Row'}) !----- Ну здесь (для отладки) выводим колонку и столбец найденной ячейки
!----- И заменяем на нужную нам строку
?OLE{cntrl&'.Replace("Good large amount of text for auto resizing column")'}
!----- Теперь запоминаем колонку
ColNum = ?OLE{cntrl&'.Col'}
!----- И выравниваем по максимальной строке в ней
?OLE{'SetColWidthAuto(-1,' & ColNum & ',-1,' & ColNum & ',1)'}

. !------ Вот и все. Если будут еще вхождения ст\лова test - надо сделать цикл...


Их примера видно, что все параметры в OLE передаются СТРОКАМИ

Удачи!

Если будут вопросы - на мыло victor@combthenet.com или в форум
Написал: VicNick(191)
Ответить