:: Visual Foxpro, Foxpro for DOS
О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
ElenaB
Автор

Сообщений: 326
Откуда: Москва
Дата регистрации: 28.09.2001
Хочу сложить картинки проекта в отдельный APP по статье Вадима Пирожкова - www.foxclub.ru
Конечно, статье уже много лет, но вот как-то только сейчас обратила на нее внимание.

Что выяснилось:

1. Если формы в проекте используются как классы, картинки на кнопках отображаются, только если .Picture задается форматами bmp и ico. Если форму создавать как SCX, переваривает еще tif, png и gif. Jpg не идет ни где.

Это ладно, bmp так bmp, можно переделать, хотя и лениво.

2. Проблема с графикой, которая относится к самой форме - Thisform.Picture и Thisform.Icon. Тестировалось с
WindowType = 0
ShowWindow = 2.
Формы создавались как классы.

Дело в том, что, если запускать exe-к программы из папки проекта, все ок (естественно): иконки показываются, картинки на форме появляются.

Но если завести где-то новую папку, положить в нее exe-к программы и рядом APP с картинками, "потусторонние" силы мешают вызвать жаждуемых "фантомов": вместо своих иконок - системные, вместо картинок - пустота.

Разбираюсь.

В ините формы у меня написано:
WITH Thisform
.Icon = lcPath + 'myIcon.ico'
.Picture = lcPath + 'myFon.bmp'
ENDWITH

Соответственно, запускаются Icon_assign и Picture_assign.
там написано (пример для Icon_assign, в Picture_assign - аналогично):

LPARAMETERS vNewVal
*To do: Modify this routine for the Assign method
THIS.Icon = m.vNewVal

IF !EMPTY(this.Icon)
IF !FILE(this.Icon) && Если файл не найден в исполняемом файле или на диске – переадресуем вызов.
IF FILE('myIMAGES.APP')
DO 'myIMAGES.APP' with (this),'Icon',this.Icon
ENDIF
ENDIF
ENDIF

Так вот, если запускать из папки проекта, и THIS.Icon и m.vNewVal (в строке THIS.Icon = m.vNewVal) содержат то имя файла, которое нам и нужно.

Если запускать из папки для тестирования, m.vNewVal, как и положено, содержит имя файла, а вот THIS.Icon - пустой.

Если же в Ините в лоб не присваивать имена файлов, а сделать это в дизайнере в пропятях, то и THIS.Icon и m.vNewVal оказываются пустыми.

Отсюда и несрабатывание дальнейшего кода.

Если вместо IF !EMPTY(this.Icon) написать IF !EMPTY(m.vNewVal) WriteExpression в APP выполняется, но значения для Thisform.Picture и Thisform.Icon в итоге все равно оказываются пустыми.

Я не всегда слежу за событиями на форуме, может быть что-то по этому поводу и писалось... Мне найти не удалось. Если кто-нибудь сталкивался с такой проблемой, объясните, пожалуйста, из-за чего это и как обойти. Piva, если вы вдруг сюда заглянете, может быть подскажете решение? Уж у Вас оно наверняка есть .

На всякий случай: VFP9+SP2, Windows 7.
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Ещё разрядность Windows обычно указывают.
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
ElenaB
Автор

Сообщений: 326
Откуда: Москва
Дата регистрации: 28.09.2001
Windows7, 64х, SP1.



Исправлено 1 раз(а). Последнее : ElenaB, 08.07.19 13:43
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> Если же в Ините в лоб не присваивать имена файлов, а сделать это в дизайнере в пропятях, то и THIS.Icon и m.vNewVal оказываются пустыми. Отсюда и несрабатывание дальнейшего кода.

Так _Assign и не должен срабатывать, если имя присвоить в пропертях. Он сработает только при программном заполнении свойства (.Icon)
В этом случае в Init формы можно записать обьект.Icon = обьект.Icon, тогда соотв. _Assign сработает...
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
ElenaB
Автор

Сообщений: 326
Откуда: Москва
Дата регистрации: 28.09.2001
of63
> Если же в Ините в лоб не присваивать имена файлов, а сделать это в дизайнере в пропятях, то и THIS.Icon и m.vNewVal оказываются пустыми. Отсюда и несрабатывание дальнейшего кода.
Так _Assign и не должен срабатывать, если имя присвоить в пропертях. Он сработает только при программном заполнении свойства (.Icon)
В этом случае в Init формы можно записать обьект.Icon = обьект.Icon, тогда соотв. _Assign сработает...

Да, не уточнила. Извините.
Я в этом случае в ините писала:

WITH Thisform
.Icon = .Icon
.Picture = .Picture
ENDWITH

Вот после этого в _Assign пусто и для параметра и для свойства.
А в кнопках с .Picture это проходит.

Но основной вопрос-то не в этом, а почему обнуляются данные.



Исправлено 4 раз(а). Последнее : ElenaB, 08.07.19 14:50
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
1. lcPath - Какая-то левая фигня;
2. Icon отрисовывает операционная система, в отличие от Picture, который отрисовывает фокс. Так что не факт, что взлетит.
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
ElenaB
Автор

Сообщений: 326
Откуда: Москва
Дата регистрации: 28.09.2001
pasha_usue
1. lcPath - Какая-то левая фигня
Это результат моей функции типа SYS(5)+SYS(2003) с условиями. Помеха не он, на кнопках работает.

pasha_usue
1. ... Так что не факт, что взлетит.
Жаль.
Возможно, кто пытался что-то сделать по статье, когда она вышла, располагали еще Win XP х32. Не может быть, чтобы никто не попробовал иконки и фон формы.
Я уже сталкивалась, когда под Win 8 не виделись сетевые диски по GETDIR() без последних параметров. Может и здесь что-то вроде.
Тогда получается полуавтомат, для одних BMP-шек на кнопках... Затея лишается смысла.



Исправлено 2 раз(а). Последнее : ElenaB, 08.07.19 17:38
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
У меня была собака была идея все иконки разместить в одной большой бмп-шке, была идея комбинировать из них наложения, типа прозрачных слайдов, для отображения состояния джоговора... чето не нашел простого решения. Посмотри на предмет разворачивания реальных файлов иконок в личном директории (C:\ProgrammData\...), это сработает и в терминальном запуске проги, если предвидятся такие варианты.
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
ElenaB
Хочу сложить картинки проекта в отдельный APP
Буду неоригинален...
Простой и тупой вопрос. Зачем?


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Отвечу за девченку, потому что авторитетный парень, Пива, показал как идею, но собственную мысль прибавлять надо, товарищ ТС...
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Мало ли кто чего показал - в хелпе показано не меньше всякого полезного и интересного, и от не менее авторитетных авторов - но почему то этим крайне редко пользуются
Ил это как у детей - увидел что-то и давай в рот тянуть, на зуб попробовать
Пива чего-то показал в 2005м году, и вроде как для VFP6. С тех пор стали неактуальными даже сами VFP любых версий, не говоря уж про всякие нестандартные и замудрёные приёмы программирования под них


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> Простой и тупой вопрос. Зачем?
Но просто тупо спрашивать у девченок но бесполезно. В ответе они тупо старые тупые бабы
(погорячился\)



Исправлено 2 раз(а). Последнее : of63, 09.07.19 08:24
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Igor Korolyov
Пива чего-то показал в 2005м году, и вроде как для VFP6. С тех пор стали неактуальными даже сами VFP любых версий, не говоря уж про всякие нестандартные и замудрёные приёмы программирования под них
В пятом году Вадик выиграл ажно 3.5 мегабайта редкообновляемых данных приложения. Сейчас 3.5 мегабайта критично, только если по телетайпу передавать.

Аллё! У кого-нибудь остался телетайп?
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
medstrах

Сообщений: 1810
Дата регистрации: 10.06.2019
pasha_usue
Сейчас 3.5 мегабайта критично, только если по телетайпу передавать.
Аллё! У кого-нибудь остался телетайп?

А потом удивляемся почему любое ПО съедает гигабайты на харде
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
ElenaB
Автор

Сообщений: 326
Откуда: Москва
Дата регистрации: 28.09.2001
Igor Korolyov
Простой и тупой вопрос. Зачем?
Простой и тупой ответ: Некоторые ссылки на картинки задаю программно в своих классах. При компиляции иногда забываю их (файлы картинок) включить. Искала по форуму, кто как поступает. Нашла несколько постов со ссылками на статью Пивы. Критики не находила. Подумала, что так, возможно, будет удобно. На даты обратила внимание не сразу.

of63
Но просто тупо спрашивать у девченок но бесполезно. В ответе они тупо старые тупые бабы
(погорячился\)
Да уж, of63, не горячитесь так сильно... А то, как увидела вашу реакцию, сначала пришлось проморгаться, что действительно вижу на любимом и уважаемом мною форуме такой крик души. Сразу беспокойство за человека, не наступила ли ненароком на больную мозоль...
Однако, уважаю, за то, что, как охолонули, не стерли, что написали.

Ладно, поняла.
Засим откланиваюсь. Всем спасибо. Просветили, позабавили.
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
Божья_коровка

Сообщений: 25720
Дата регистрации: 23.08.2001
ElenaB
of63
Но просто тупо спрашивать у девченок но бесполезно. В ответе они тупо старые тупые бабы
(погорячился\)
Да уж, of63, не горячитесь так сильно... А то, как увидела вашу реакцию, сначала пришлось проморгаться, что действительно вижу на любимом и уважаемом мною форуме такой крик души. Сразу беспокойство за человека, не наступила ли ненароком на больную мозоль...
Однако, уважаю, за то, что, как охолонули, не стерли, что написали.
Не обижайтесь на Офу, у него после 0,7 все бабы зло (без исключения).


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 1 раз(а). Последнее : Божья_коровка, 09.07.19 09:27
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Не все )
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
ElenaB
Автор

Сообщений: 326
Откуда: Москва
Дата регистрации: 28.09.2001
Де не, Лен. Что я, маленькая... ;)
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
medstrах
pasha_usue
Сейчас 3.5 мегабайта критично, только если по телетайпу передавать.
Аллё! У кого-нибудь остался телетайп?

А потом удивляемся почему любое ПО съедает гигабайты на харде
Серёж. Ты, вроде ссятник. Если ты взял файл ресурсов, лежащий рядом с экзешником, а потом решил его вкомпилять в экзешник. И при этом ты потерял гигабайт, значит у тебя файл ресурсов состоит из множества мелких файликов общим размером в несколько терабайт.
А значит, этот гигабайт нихрена не критичен уже.
Ratings: 0 negative/0 positive
Re: О фантомах из "потустороннего мира" или Использовании переадресованных вызовов
medstrах

Сообщений: 1810
Дата регистрации: 10.06.2019
pasha_usue
Если ты взял файл ресурсов, лежащий рядом с экзешником, а потом решил его вкомпилять в экзешник. И при этом ты потерял гигабайт, значит у тебя файл ресурсов состоит из множества мелких файликов общим размером в несколько терабайт.
А значит, этот гигабайт нихрена не критичен уже.

Не понял ни мысли, ни логики. Ну да ладно, это неважно. Я пытался сказать совсем о другом. О том, что нельзя руководствоваться принципом "некритично - ну тогда и пофиг". Это приводит к плохим результатам. Софт, который функционально и на 20% не отличается от своих аналогов 20 лет назад, жрет в десятки раз больше места в памяти и на диске. Потому что всем пофиг, ведь пользователь всегда докупит еще памяти и ядер с хардами, а нам некогда, нам надо успевать бабло зарабатывать, выпуская новые версии.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 16 (Гостей: 16)

© 2000-2024 Fox Club 
Яндекс.Метрика