powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сообщение в подвале окна Application
22 сообщений из 22, страница 1 из 1
Сообщение в подвале окна Application
    #38675583
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня господа !

Необходимо вывести сообщение в подвале окна приложения
Приложение = Excel 2007
Подвал окна = скрин прилагаю
Собщение = String(100,ChrW(9609)) & String(100,ChrW(9620))

Заранее благодарен !

P.S. Свойство Application.StatusBar:="......" в моем случае не подходит
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38675584
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38675634
Читайте справку о SysCmd
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38675657
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ),

Это метод Access-а , хотелось бы средствами VB
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38675675
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,
Application.StatusBar = "bla-bla"
......
Application.StatusBar = false
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38675680
Не заметил, что Excel...
HOME_XСвойство Application.StatusBar : ="......" в моем случае не подходит Почему не подходит? Может двоеточие лишнее? Без него работает (проверил).
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38675709
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев )Не заметил, что Excel...
HOME_XСвойство Application.StatusBar : ="......" в моем случае не подходит Почему не подходит? Может двоеточие лишнее? Без него работает (проверил).

Моя функция работает в потоке, не могу синхронизировать ресурс Application.StatusBar
с действиями системы.
Соответственно эту переменную Application.StatusBar не использую, просто хочу использовать
свою прорисовку на системной панели.

P.S. - там вроде должно ипользоваться функция
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38675716
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев )Не заметил, что Excel...
HOME_XСвойство Application.StatusBar : ="......" в моем случае не подходит Почему не подходит? Может двоеточие лишнее? Без него работает (проверил).

Моя функция работает в потоке, не могу синхронизировать ресурс Application.StatusBar с
действиями системы.
Соответственно пременную StatusBar не использую, хочу организовать свою прорисовку (прогресс бар)
на системной панели.

P.S.
Там вроде используеться FindWindow и поиск Handle -ов...., но в деталях не помню.
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38675749
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
о как интересно:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
?chrw(9609)
?
?chrw(9620)
?
?string(100,chrw(9609))& string(100,chrw(9620))
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?string(200,chr(63))
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

может так попроще:
Код: vbnet
1.
Application.StatusBar = string(200,chr(63))

все работает
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38675766
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вернее так:
Код: vbnet
1.
string(200,63)
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38675865
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,

Это текстовый эммулятор ProgressBar-а, потому 9609 (квадратик в изображении)

Вопрос как доступиться к панели через функции Windows
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38675866
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[/src] все работает[/quot]

Моя функция работает в потоке
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38675898
HOME_XВопрос как доступиться к панели через функции Windows Функция FindWindowEx вернет вам дискриптор дочернего окна требуемого класса.
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38676151
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ),

Да что-то такое помню , а как прорисовать текст имея дискриптор ?

Если не в тягость, бросьте пожалуйста пример кода
- нашел "подвал" приложения (если ДВА приложения активны ?)
- задал координаты рисования текста
- прорисовал текст

Заранее благодарен !
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38676258
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Handle - обнаружены....., только прорисовать текст не получается

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
  Dim lSuccess As Long, hWndChild As Long
  Dim sPrintText As String
  sPrintText = "Print this text"
  hWndChild = FindWindowEx(Application.hwnd, ByVal 0&, "EXCEL4", "")
  MsgBox hWndChild
  lSuccess = TextOut(hWndChild, 1, 1, sPrintText, Len(sPrintText))
  MsgBox lSuccess



Подскажите кто сталкивался ?
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38677023
Во-первых, все функции прорисовки принимают не hWnd (дискриптор окна), а HDC - дескриптор контекста устройства (в вашем случае - экрана).
Во-вторых вам нужно получить координаты рабочей области СтатусБар-а (GetClientRect) и передать их в TextOut.

В общем - задача нетривиальная...

ЗЫ. Вы уверены, что класс окна СтатусБар называется "EXCEL4"?
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38680721
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев )Во-первых, все функции прорисовки принимают не hWnd (дискриптор окна), а HDC - дескриптор контекста устройства (в вашем случае - экрана).
Во-вторых вам нужно получить координаты рабочей области СтатусБар-а (GetClientRect) и передать их в TextOut.

В общем - задача нетривиальная...

ЗЫ. Вы уверены, что класс окна СтатусБар называется "EXCEL4"?

Извините за задержку !!!
Типа так - но результат все равно нет....
А у Вас получаеться ?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Type PAINTSTRUCT
    hdc As Long
    fErase As Long
    rcPaint As RECT
    fRestore As Long
    fIncUpdate As Long
    rgbReserved(32) As Byte
End Type

Private Const DT_BOTTOM = &H8
Private Const DT_CENTER = &H1
Private Const DT_LEFT = &H0
Private Const DT_RIGHT = &H2
Private Const DT_TOP = &H0
Private Const DT_VCENTER = &H4
Private Const DT_WORDBREAK = &H10

Private Declare Function GetClientRect Lib "user32" (ByVal lhwnd As Long, lpRect As RECT) As Long
Private Declare Function BeginPaint Lib "user32" (ByVal lhwnd As Long, lpPaint As PAINTSTRUCT) As Long
Private Declare Function EndPaint Lib "user32" (ByVal lhwnd As Long, lpPaint As PAINTSTRUCT) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function TextOut Lib "gdi32.dll" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Sub MyDraw()
  Dim sText As String, lSucces As Long, hWndChild As Long, psPaint As PAINTSTRUCT, rcCell As RECT, hdcDraw As Long
  sText = "Print this text"
  hWndChild = FindWindowEx(Application.hWnd, ByVal 0&, "EXCEL2", "")
  hWndChild = FindWindowEx(hWndChild, ByVal 0&, "MsoCommandBar", "Строка состояния")
  hWndChild = FindWindowEx(hWndChild, ByVal 0&, "MsoWorkPane", "Строка состояния")
  'hWndChild = FindWindowEx(hWndChild, ByVal 0&, "NUIPane", "")
  'hWndChild = FindWindowEx(hWndChild, ByVal 0&, "NetUIHWND", "")
  Call GetClientRect(hWndChild, rcCell)
  hdcDraw = BeginPaint(hWndChild, psPaint)
  lSucces = DrawText(hdcDraw, sText, Len(sText), rcCell, DT_LEFT)
  hdcDraw = EndPaint(hWndChild, psPaint)
End Sub
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38680802
Я никогда не рисовал текст в окне с помощью API и нет времени на опыты. Заглянул в справку, смущает это: "Приложение не должно вызвать функцию BeginPaint, кроме как в ответ на сообщение WM_PAINT." Т.е. эти действия должны выполняться внутри оконной процедуры.

HOME_XМоя функция работает в потоке, не могу синхронизировать ресурс Application.StatusBar с
действиями системы. Может расшифруете? Где находится функция и что она делает?
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38680944
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ),

Суть и цели
Создание "текстового" прогресс бар для отображения процессов EXCEL-я
Реализован в надстройке EXCEL-я (A.XLA)

Реализован в виде класса (текст 1)

Вызов класса в модуле надстройки (текст2) в виде !!! ФУНКЦИИ !!!!
(не процедуры), так как будет вызоваться из ячейки Excel-я
Механизм реализации - поток CreateThread - отсюда вопрос как синхро-
низировать потоки Excel-я (редактирования ячейки) и изменения ресурса
Application.StatusBar

Понятны ли мои пояснения ?

Текст 1
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
Option Explicit

Private StatusBarState As Boolean
Private EnableEventsState As Boolean
Private ScreenUpdatingState As Boolean
Private FULLS_CHAR As String
Private FRAME_CHAR As String
Private SPACE_CHAR As String
Private Const NUM_BAR As Integer = 50
Private Const MAX_LEN As Integer = 255

Private Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long)
Private Sub Class_Initialize()
  StatusBarState = Application.DisplayStatusBar
  EnableEventsState = Application.EnableEvents
  ScreenUpdatingState = Application.ScreenUpdating
  FULLS_CHAR = ChrW(9609)
  FRAME_CHAR = ChrW(9597)
  SPACE_CHAR = ChrW(9620)
  'Application.DisplayStatusBar = True
  'Application.ScreenUpdating = False
  'Application.EnableEvents = False
End Sub
Public Function Refresh(ByVal Value As Integer, Optional ByVal MaxValue As Integer = 0, Optional ByVal Status As String = "", Optional ByVal ShowPercent As Boolean = True) As String
  Dim Display As String
  If Value < 0 Or MaxValue < 0 Or (Value > 100 And MaxValue = 0) Then Exit Function
  If MaxValue > 0 Then Value = Int((Value * 100) / MaxValue) + IIf(Int((Value * 100) / MaxValue) = (Value * 100) / MaxValue, 0, 1)
  Display = String(Int(Value / (100 / NUM_BAR)), FULLS_CHAR)
  Display = Display & String(NUM_BAR - Int(Value / (100 / NUM_BAR)), SPACE_CHAR)
  Display = Status & "  " & FRAME_CHAR & Display & FRAME_CHAR
  If ShowPercent = True Then Display = Display & "(" & Value & "%)"
  If Len(Display) > MAX_LEN Then Display = Right(Display, MAX_LEN)
  Refresh = Display
End Function
Public Sub WaitTime(ByVal Time As Integer)
  Dim I As Integer
  For I = 1 To NUM_BAR
    Application.StatusBar = Refresh(I, NUM_BAR, "Execute Query", True)
    Sleep CInt(Time * 1000# / NUM_BAR)
  Next
End Sub
Private Sub Class_Terminate()
  Application.StatusBar = False
  'Application.DisplayStatusBar = StatusBarState
  'Application.ScreenUpdating = ScreenUpdatingState
  'Application.EnableEvents = EnableEventsState
End Sub




Текст 2
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Option Explicit

Global Thread_ID As Long

Public Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long)

Private Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long
Private Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function AttachThreadInput Lib "user32" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
Function Start(Time As Integer) As String
  Dim ThreadID As Long
  Thread_ID = CreateThread(ByVal 0&, ByVal 0&, AddressOf Start_ProgressBar, Time, 0, ThreadID)
  'Call Start_ProgressBar(Time)
  Start = CStr(Time)
End Function
Public Sub Start_ProgressBar(Time As Integer)
  Dim pbExes As ProgressBar1
  Set pbExes = New ProgressBar1
  Call pbExes.WaitTime(Time)
  'Set pbExes = Nothing
  'CloseHandle Thread_ID
End Sub



Рисунок 1
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38684583
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Господа - никто не подскажет ?
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38684675
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
HOME_Xне могу синхронизировать
DoEvents не помогает?
...
Рейтинг: 0 / 0
Сообщение в подвале окна Application
    #38685977
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

не - совсем не помогает !!!
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сообщение в подвале окна Application
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]