powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Добраться до свойства объекта
25 сообщений из 28, страница 1 из 2
Добраться до свойства объекта
    #33897835
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
На форме лежит ActiveX Microsoft StatusBar. На панелях этого StatusBar'a с помощью дизайнера можно поместить картинку. А вот как это сделать программно? Я смог лишь добраться до объекта Picture.
Код: plaintext
THISFORM.OleControl1.Panels.Item( 2 ).Picture.???="MyPicture.gif"
А вот дальше никак. Даже в хелпе не нашел.
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33898012
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
положите рядом активикс imagelist
в имаджлист всуньте свой гиф и присвойте кей
а затем уже статусбару кей показывайте
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33898022
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у вас нет на форме ActiveX ImageList, то можно так:

Код: plaintext
THISFORM.OleControl1.Panels.Item( 2 ).Picture=LOADPICTURE("MyPicture.gif")

С уважением, Алексей
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33898025
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thisform.stbar1.Panels(1).picture=LOADPICTURE('img\add.bmp')
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33898027
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или проще так:
Код: plaintext
THISFORM.OleControl1.Panels( 2 ).Picture=LOADPICTURE("MyPicture.gif")

С уважением, Алексей
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33910860
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-KИли проще так:
Код: plaintext
THISFORM.OleControl1.Panels( 2 ).Picture=LOADPICTURE("MyPicture.gif")

С уважением, Алексей
Хм, а он мне в ответ
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33911136
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Какая версия VFP?
2. А есть ли у вас вторая панель в ActiveX?
С уважением, Алексей
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33911176
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот мой рабочий код для VFP 9.0 + SP1:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
	WITH THISFORM.StatusBar
		.Panels( 2 ).Text = ALLTRIM(ListQuery.User_Name)
		.Panels( 4 ).Text = TTOC(ListQuery.VOC)
		.Panels( 6 ).Text = TTOC(ListQuery.VOP)
		IF EOF("ListQuery")
			.Panels( 7 ).Picture = .NULL.
		ELSE
			.Panels( 7 ).Picture = LOADPICTURE(IIF(ListQuery.IsLock =  0 , ;
				"bitmaps\unlock.bmp", "bitmaps\lock.bmp"))
		ENDIF
	ENDWITH
С уважением, Алексей
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33912088
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня VFP6SP5. Панелей 3 штуки. Использую Microsoft StatusBar Control, Version 6.0
Кажется разобрался.
Для всех остальных свойств у меня нормально работает синтаксис вида:
Код: plaintext
THISFORM.OleControl1.Panels.Item( 2 ).Text="bla-bla-bla"
а вот для картинки пришлось написать так, как у вас:
Код: plaintext
THISFORM.OleControl1.Panels( 2 ).Picture=LOADPICTURE("MyFace")
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33912119
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя нет!
Команда успешно отработала из окна Command VFP при пошаговой отладке, а вот в рантайме вызывает ту же ошибку.
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33912189
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А разве в VFP 6.0 уже былоа команда LOADPICTURE ?
С уважением, Алексей
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33912200
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в шестерке она присутствует.
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33912208
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Run-Time на той же машине, что и среда разработки?
С уважением, Алексей
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33912278
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, конечно. Более того. Запущенный в среде VFP exe-шник останавливается с ошибкой на данной строке. Копирую эту строку с окно Command - работает, пытаюсь продолжить выполнение программы - ошибка!
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33912542
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если написать так:

Код: plaintext
1.
2.
3.
LOCAL loPanel
loPanel = THISFORM.OleControl1.Panels( 2 )
loPanel.Picture=LOADPICTURE("MyFace")

Смысл в том, чтобы был только один уровень иерархии COM-объекта в операторе присвоения (одна точка)
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33912652
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМА если написать так:

Код: plaintext
1.
2.
3.
LOCAL loPanel
loPanel = THISFORM.OleControl1.Panels( 2 )
loPanel.Picture=LOADPICTURE("MyFace")

Смысл в том, чтобы был только один уровень иерархии COM-объекта в операторе присвоения (одна точка)
Все равно программа остановилась с той же ошибкой на строке, где LOADPICTURE. Скопировал строку и выполнил её из Command Window успешно.
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33912792
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаем "дробить" конструкцию. Вот так что получится?

Код: plaintext
1.
2.
3.
4.
LOCAL loPanel, loPicture
loPanel = THISFORM.OleControl1.Panels( 2 )
loPicture = LOADPICTURE("MyFace")
loPanel.Picture = m.loPicture

Кстати, то, что файл картинки без расширения и без пути доступа - это так и есть, или для примера? Этот файл вообще-то "виден" в процессе выполнения программы?

Код: plaintext
?File("MyFace")

Не в командном окне, а именно перед его использованием?
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33913177
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка появилась на строке, где LOADPICTURE.
Вынес этот кусок в отдельный метод формы. Привожу его теперь с использованием своих имен объектов.
Код: plaintext
1.
2.
3.
4.
5.
6.
PARAMETER lcImg
loPanel = THISFORM.LowStatus.Panels( 2 )
IF FILE(lcImg)
	MESSAGEBOX("File Enable")
ENDIF
loPicture = LOADPICTURE(lcImg)   && error
loPanel.Picture = m.loPicture
В переменной lcImg находится полный путь и имя файла с расширением .ico
MessageBox появляется.
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33913309
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда чот-то у вас в "кончерватории" :)
Может ActiveX зарегистрирован не корректно или Windows корево работает?
Попробуйте на другой машине?
С уважением, Алексей
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33913487
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-KНу тогда чот-то у вас в "кончерватории" :)
Может ActiveX зарегистрирован не корректно или Windows корево работает?
Попробуйте на другой машине?
С уважением, Алексей
Может быть. Но на другой машине все повторилось в точности. VFP там тот же.
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33913591
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня все прекрасно работает.

VFP6SP5.

Проверял и на "Microsoft StatusBar Control, version 5.0 (SP2)" и на "Microsoft StatusBar Control 6.0 (SP4)"

Без проблем. Пример во вложенном файле. Допустимо использовать файлы: bmp, ico, wmf
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33913595
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень интересно.. А свой пример можете выложить?
С уважением, Алексей
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33913625
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМУ меня все прекрасно работает.

VFP6SP5.

Проверял и на "Microsoft StatusBar Control, version 5.0 (SP2)" и на "Microsoft StatusBar Control 6.0 (SP4)"

Без проблем. Пример во вложенном файле. Допустимо использовать файлы: bmp, ico, wmf
Ваш пример работает. А мой нет. Я продолжу поиски причины в понедельник.
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33915461
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, судя по всем признакам все дело в моей программе. Влияют какие-то настройки. Вот только какие? Попробую привести структуру данного участка моей программы. Головной модуль:
Код: plaintext
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.
*_SCREEN.Visible=.F.
*
PUBLIC HKEY_USERS, oReestr, oftp, f_mainbody, main_path
LOCAL ARRAY OldScreen( 5 )

SET DATE 		YMD
SET CENTURY 	ON
SET MARK TO		"-"
SET DECIMALS TO  2 
SET STATUS BAR 	OFF
SET STATUS 		OFF
SET COMPATIBLE 	OFF
SET SAFETY 		OFF
SET TALK 		OFF
SET CPDIALOG 	OFF
SET PATH TO		.\DLL, .\dll\gcs_engine, .\CLASS
SET PROCEDURE TO PROCLIB, ftp, e_report ADDITIVE
SET CLASSLIB  TO registry, mybase

main_path 	 = SYS( 5 )+SYS( 2003 )
c_versionPrg = "3.0"
cprgname	 = "PBC " + c_versionPrg
HKEY_USERS	 = - 2147483645 
OldScreen( 1 ) = _SCREEN.HEIGHT
OldScreen( 2 ) = _SCREEN.WIDTH
OldScreen( 3 ) = _SCREEN.ICON
OldScreen( 4 ) = _SCREEN.CAPTION
OldScreen( 5 ) = _SCREEN.BORDERSTYLE

oReestr	= CREATEOBJECT("registry")	
DO FORM f_mainbody NAME f_mainbody LINKED
f_mainbody.Caption=cprgname

* Главное тело программы

f_mainbody.DO

* Завершение
В Inite формы никаких установок не делается, только вычитываются значения из реестра. На форме периодически срабатывает таймер и тоже вычитывает из реестра одно значение. В зависимости от полученного значения я хочу показать в StatusBar'e различные картинки. Вот код таймера:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
cValue=SPACE( 20 )
oReestr.GetRegKey("BACKstatus",@cValue,".DEFAULT\Software\KUI\PBC\CurrentSet",HKEY_USERS)
cValue=ALLTRIM(cValue)
DO CASE
CASE cValue="StartOk"
	THISFORM.UpdateStatusBar(main_path+"\Images\trffc10c.ico")
CASE cValue="StopOk"
	THISFORM.UpdateStatusBar(main_path+"\Images\trffc10a.ico")
CASE cValue="CancelOk"
CASE cValue="NotifyOk"
OTHERWISE
	THISFORM.LowStatus.Panels.Items( 2 ).text="xz"
ENDCASE
THISFORM.Refresh
Метод UpdateStatusBar создан специально для решения вышеозначеной проблемы. Его код:
Код: plaintext
1.
2.
3.
4.
PARAMETER lcImg
loPanel = THISFORM.LowStatus.Panels( 2 )
loPicture = LOADPICTURE(lcImg)   && error
loPanel.Picture = m.loPicture
Где собака порылась?
...
Рейтинг: 0 / 0
Добраться до свойства объекта
    #33915528
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Может у вас иконка такого формата, что ее не понимает LOADPICTURE?
Попробуйте заменить ваш ico на простую картинку BMP размером 16 на 16 пиксел.
2. Упростите до невозможности на периода отладки код метода UpdateStatusBar в виде:
THISFORM.LowStatus.Panels(2).Picture = LOADPICTURE("Images\MyBMP.BMP")

С уважением, Алексей
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Добраться до свойства объекта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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