Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2006-02-06

Вставка нумерации листов в Word-документе

Hello comp,

Пишу программу, которая вставляет картинки-tif-образы
отсканированных страниц в документ Ворда. Все здорово получается, вот
только, как все эти страницы пронумеровать?
Вот кусок Делфи-кода, чтобы быть конкретным

// Создаем "ссылку" на Ворд-приложение
WD := CreateOLEObject('Word.Application');
// Открываем новый док
WD.Application.Documents.Add('NORMAL.DOT', FALSE, wdNewBlankDocument, TRUE);
// Размеры рабочей области страницы
Height := WD.Application.Selection.PageSetup.PageHeight-
WD.Application.Selection.PageSetup.BottomMargin-
WD.Application.Selection.PageSetup.TopMargin; // в точках
Width := WD.Application.Selection.PageSetup.PageWidth -
WD.Application.Selection.PageSetup.RightMargin-
WD.Application.Selection.PageSetup.LeftMargin; // в точках

// Имена файлов картинок берем из ЛистБокса
for i := 0 to lbx.Items.Count-1 do
begin
lbx.ItemIndex := i;

// "Ссылка" на объект картинки на листе
s := WD.Application.Selection.InlineShapes.AddPicture(dlbx.Directory+'\'+lbx.Items[i],
False, True);

// Выставим размеры картинки на листе
s.LockAspectRatio := False;
s.Height := Height-20;
s.Width := Width-5;

// Если еще картинки есть - вставляем разрыв
if i < lbx.Items.Count-1 then
WD.Application.Selection.InsertBreak(wdPageBreak);

end; // конец цикла обхода файлов-картинок

Я так понимаю, что нумерация расставлется уже после создания всех
страниц с использованием коллекции PageNumbers -
PageNumbers.Add(wdAlignPageNumberLeft, True). Проблема в том, что не
могу "подлезть" к этой самой PageNumbers.
Делал макросы в Ворде и смотрел на их листинг - ничего не дает, Делфи
не хочет признавать например такую конструкцию
s := WD.Application.Selection.Sections.Items[0].Footers
Если подскажете, как решить это, буду благодарен.
--
Вадим Шешунов

Номер выпуска : 5164
Возраст листа : 869 (дней)
Количество подписчиков : 548
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/511615
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   Вадим Шешунов 2006-02-06 18:09:23 (#511615)

Re: Мигание

'******************************************************************
' Author : Lior Ben-Arie
'
' This code shows how to synconize and function with Scroll Lock,
' Num Lock and Caps Lock Keys.
'
' Most of the code is taken from Microsoft MSDN...
'
' Enjoy ...
'******************************************************************
Option Explicit
' Declare Type for API call:
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type
' Constant declarations:
Const VK_NUMLOCK = &H90
Const VK_SCROLL = &H91
Const VK_CAPITAL = &H14
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Const VER_PLATFORM_WIN32_NT = 2
Const VER_PLATFORM_WIN32_WINDOWS = 1
Const KEY_COLOR_ON = vbGreen
Const KEY_COLOR_OFF = &H8000000F
' API declarations:
Private Declare Function GetVersionEx Lib "kernel32" Alias
"GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" _
(lppbKeyState As Byte) As Long
Private OSInfo As OSVERSIONINFO
Private keys(0 To 255) As Byte
Private Sub cmdCaps_Click()
' Call to Sub ChangeKeyStatus in order to change the actual status of
the key
Call ChangeKeyStatus(VK_CAPITAL, cmdCaps.BackColor = KEY_COLOR_OFF)
' Indicate Key status by it's color (Only for Win9x,
' In WINNT color status changes in Form_KeyDown)
If OSInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '--> Win9x
cmdCaps.BackColor = IIf(cmdCaps.BackColor = KEY_COLOR_OFF,
KEY_COLOR_ON, KEY_COLOR_OFF)
End If
End Sub
Private Sub cmdNum_Click()
' Call to Sub ChangeKeyStatus in order to change the actual status of
the key
Call ChangeKeyStatus(VK_NUMLOCK, cmdNum.BackColor = KEY_COLOR_OFF)
' Indicate Key status by it's color (Only for Win9x,
' In WINNT color status changes in Form_KeyDown)
If OSInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '--> Win9x
cmdNum.BackColor = IIf(cmdNum.BackColor = KEY_COLOR_OFF, KEY_COLOR_ON,
KEY_COLOR_OFF)
End If
End Sub
Private Sub cmdScroll_Click()
' Call to Sub ChangeKeyStatus in order to change the actual status of
the key
Call ChangeKeyStatus(VK_SCROLL, cmdScroll.BackColor = KEY_COLOR_OFF)
' Indicate Key status by it's color (Only for Win9x,
' In WINNT color status changes in Form_KeyDown)
If OSInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '--> Win9x
cmdScroll.BackColor = IIf(cmdScroll.BackColor = KEY_COLOR_OFF,
KEY_COLOR_ON, KEY_COLOR_OFF)
End If
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
' When pressing the Key on the keyboard the button color will change
accordingly
Select Case KeyCode
Case VK_CAPITAL: cmdCaps.BackColor = IIf(cmdCaps.BackColor =
KEY_COLOR_OFF, KEY_COLOR_ON, KEY_COLOR_OFF)
Case VK_SCROLL: cmdScroll.BackColor = IIf(cmdScroll.BackColor =
KEY_COLOR_OFF, KEY_COLOR_ON, KEY_COLOR_OFF)
Case VK_NUMLOCK: cmdNum.BackColor = IIf(cmdNum.BackColor =
KEY_COLOR_OFF, KEY_COLOR_ON, KEY_COLOR_OFF)
End Select
End Sub
Private Sub Form_Load()

' Get operating system information
OSInfo.dwOSVersionInfoSize = Len(OSInfo)
GetVersionEx OSInfo

' Get keyboard status into keys array
GetKeyboardState keys(0)

' Indicate Key status by it's color
cmdNum.BackColor = IIf(keys(VK_NUMLOCK), KEY_COLOR_ON, KEY_COLOR_OFF)
cmdCaps.BackColor = IIf(keys(VK_CAPITAL), KEY_COLOR_ON, KEY_COLOR_OFF)
cmdScroll.BackColor = IIf(keys(VK_SCROLL), KEY_COLOR_ON,
KEY_COLOR_OFF)

End Sub
Private Sub ChangeKeyStatus(ByVal lngKey As Long, ByVal bOn As
Boolean)

' It's quite clear what this sub does...

If OSInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '--> Win9x
keys(lngKey) = IIf(bOn, 1, 0)
SetKeyboardState keys(0)
ElseIf OSInfo.dwPlatformId = VER_PLATFORM_WIN32_NT Then '--> WinNT
'Simulate Key Press
keybd_event lngKey, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'Simulate Key Release
keybd_event lngKey, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If

End Sub

Номер выпуска : 5163
Возраст листа : 869 (дней)
Количество подписчиков : 546
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/511454
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2006-02-06 02:48:44 (#511454)