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

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

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

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

С уважением, Алексей
Хм, а он мне в ответ
...
Рейтинг: 0 / 0
10.08.2006, 16:45
    #33911136
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добраться до свойства объекта
1. Какая версия VFP?
2. А есть ли у вас вторая панель в ActiveX?
С уважением, Алексей
...
Рейтинг: 0 / 0
10.08.2006, 16:54
    #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
11.08.2006, 09:09
    #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
11.08.2006, 09:21
    #33912119
Кузнецов Игорь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добраться до свойства объекта
Хотя нет!
Команда успешно отработала из окна Command VFP при пошаговой отладке, а вот в рантайме вызывает ту же ошибку.
...
Рейтинг: 0 / 0
11.08.2006, 09:45
    #33912189
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добраться до свойства объекта
А разве в VFP 6.0 уже былоа команда LOADPICTURE ?
С уважением, Алексей
...
Рейтинг: 0 / 0
11.08.2006, 09:47
    #33912200
Кузнецов Игорь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добраться до свойства объекта
Да, в шестерке она присутствует.
...
Рейтинг: 0 / 0
11.08.2006, 09:50
    #33912208
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добраться до свойства объекта
А Run-Time на той же машине, что и среда разработки?
С уважением, Алексей
...
Рейтинг: 0 / 0
11.08.2006, 10:13
    #33912278
Кузнецов Игорь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добраться до свойства объекта
Да, конечно. Более того. Запущенный в среде VFP exe-шник останавливается с ошибкой на данной строке. Копирую эту строку с окно Command - работает, пытаюсь продолжить выполнение программы - ошибка!
...
Рейтинг: 0 / 0
11.08.2006, 11:14
    #33912542
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добраться до свойства объекта
А если написать так:

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

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

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

Смысл в том, чтобы был только один уровень иерархии COM-объекта в операторе присвоения (одна точка)
Все равно программа остановилась с той же ошибкой на строке, где LOADPICTURE. Скопировал строку и выполнил её из Command Window успешно.
...
Рейтинг: 0 / 0
11.08.2006, 12:01
    #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
11.08.2006, 13:40
    #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
11.08.2006, 14:11
    #33913309
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добраться до свойства объекта
Ну тогда чот-то у вас в "кончерватории" :)
Может ActiveX зарегистрирован не корректно или Windows корево работает?
Попробуйте на другой машине?
С уважением, Алексей
...
Рейтинг: 0 / 0
11.08.2006, 14:55
    #33913487
Кузнецов Игорь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добраться до свойства объекта
Aleksey-KНу тогда чот-то у вас в "кончерватории" :)
Может ActiveX зарегистрирован не корректно или Windows корево работает?
Попробуйте на другой машине?
С уважением, Алексей
Может быть. Но на другой машине все повторилось в точности. VFP там тот же.
...
Рейтинг: 0 / 0
11.08.2006, 15:22
    #33913591
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добраться до свойства объекта
У меня все прекрасно работает.

VFP6SP5.

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

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

VFP6SP5.

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

Без проблем. Пример во вложенном файле. Допустимо использовать файлы: bmp, ico, wmf
Ваш пример работает. А мой нет. Я продолжу поиски причины в понедельник.
...
Рейтинг: 0 / 0
14.08.2006, 09:32
    #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
14.08.2006, 10:09
    #33915528
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добраться до свойства объекта
1. Может у вас иконка такого формата, что ее не понимает LOADPICTURE?
Попробуйте заменить ваш ico на простую картинку BMP размером 16 на 16 пиксел.
2. Упростите до невозможности на периода отладки код метода UpdateStatusBar в виде:
THISFORM.LowStatus.Panels(2).Picture = LOADPICTURE("Images\MyBMP.BMP")

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


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