Содержимое OLE-объекта

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
mar_val
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 26.08.2005 (Пт) 21:32

Содержимое OLE-объекта

Сообщение mar_val » 19.10.2005 (Ср) 22:54

VB изучаю методом тыка, поэтому у меня могут быть туганы с терминами, но попробую сформулировать.
Есть в форме OLE-объект - книга Excel. Добавляю программно некое содержимое в лист этой внедренной книги. Но отображается далеко не всё (т.е. в пределах объекта OLE, растянутого на всю форму отображается только небольшая часть листа Excel, а остальная площадь объекта - белое пустое поле).
Я не знаю как это называется, но нужно расширить эту внутреннюю область, отображающую лист Excel-я (ну, или как я догадываюсь, любого другого внедренного объекта)
Как это сделать?

mar_val
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 26.08.2005 (Пт) 21:32

Сообщение mar_val » 19.10.2005 (Ср) 23:00

Попробую иначе сформулировать и дополнить ещё одним вопросом: возможно ли передвигать это внутреннее окно в OLE-объекте, т.е. программно изменять ту часть документа, которая отображается в пределах этого объекта в форме.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 19.10.2005 (Ср) 23:03

Разумеется можно. Но это выходит за пределы того, что можно объяснять на пальцах. Придется писать свой контрол OLE. Если хочешь разбирайся, никто за тебя это делать не будет.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.10.2005 (Ср) 23:34

mar_val писал(а):программно изменять ту часть документа, которая отображается в пределах этого объекта в форме.

Можно...

Только некрасиво это. Эксель визуально открывается на форме, передвигается и закрывается.
Потому что контрол OLE предназначен для диалога с пользователем скорее.


Но если хоцца - то открыть документ через DoVerb, после этого работать с пропертью object так, словно это документ экселя.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

mar_val
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 26.08.2005 (Пт) 21:32

Сообщение mar_val » 20.10.2005 (Чт) 9:05

ANDLL
Подскажите хотябы куда копать, или откуда можно взять инфу про то как свой контрол сделать...

GSerg
Я с помощью CreateEmbed открываю документ, только из вашего ответа всё-равно не понял как перемещаться по документу в пределах OLE-окна

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 20.10.2005 (Чт) 9:19

Идем в магазин и покупаем книжку по COM и OLE. Ничего посоветовать не могу, сам не покупал таких книжек.

Только хочу сразу предупредить, что скорее всего такие книжки написаны для Cpp. так что придется потрудиться...
можно попробовать поискать статьи на эти темы и разбираться с ними.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

mar_val
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 26.08.2005 (Пт) 21:32

Сообщение mar_val » 20.10.2005 (Чт) 9:29

А на этом сайте нет ничего подобного? Вроде как тут есть библиотека эл. книг?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.10.2005 (Чт) 11:16

Тут нет библиотеки эл. книг.

Запусти excel, нажми Alt+F11, потом F2 и смотри, как перемещаться по документу.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

mar_val
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 26.08.2005 (Пт) 21:32

Сообщение mar_val » 22.10.2005 (Сб) 17:51

GSerg
В том-то вся проблема и состоит, что в Excel-е создаю макрос и Window(i).Scroll отрабатывает успешно, а вот когда в VB6 вставлен OLE-объект (документ Excel), проскролить не получается.

Вот как я это пытаюсь делать:
Код: Выделить всё
Private Sub HScroll1_Change()
    If wLeftPosition - HScroll1.Value < 0 Then
        OLE1.object.Windows(1).Panes(1).SmallScroll ToRight:=HScroll1.Value - wLeftPosition
    Else
        OLE1.object.Windows(1).Panes(1).SmallScroll ToLeft:=wLeftPosition - HScroll1.Value
    End If
    wLeftPosition = HScroll1.Value
    OLE1.Refresh
End Sub


Никаких ошибок не возникает, однако содержимое OLE-объекта остается на месте и никуда не сдвигается...

mar_val
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 26.08.2005 (Пт) 21:32

Сообщение mar_val » 22.10.2005 (Сб) 18:09

Да, должен заметить, что при выполнении данного кода вполне правильно изменяется параметр Windows(1).ScrollColumn, обозначающий самый левый отображаемый столбец, т.е. насколько я понял, в Excel-е метод SmallScroll отрабатывает успешно. Создается впечатление, что это OLE-объект не обновляет свое содержимое...

Помогите решить задачу, пожалуйста!

mar_val
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 26.08.2005 (Пт) 21:32

Сообщение mar_val » 22.10.2005 (Сб) 19:05

PPS: Пробовал делать сдвиг и так:
Код: Выделить всё
OLE1.object.Windows(1).ScrollColumn = HScroll1.Value
результат всё тот же отрицательный...

Как же заставить эту Excel-страницу скролиться?...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 180

    TopList  
cron