Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 calll function from UserObject  [new]
UserObject
Guest
В user nonvisual object  'uo_GetStringLength' ,
Содержащий функцию 
Exec()
Как ней воспользоваться из
Другого пользовательского объекта
uo_st_tipbox?
Создал объектную переменную
 
uo_getstringlength uo_1

во вкладке ‘declare instence variables'
Объекта uo_st_tipbox, который поставил на 
dialog window.

string ls_1
ls_1 = "С.Петербург"
обе нижеидущие строки 
//uo_1.exec(ls_1)
uo_1.FUNCTION exec(ls_1)
завершаются

Error: Null object reference at line 33 ..
Т.е. на строке
uo_1.FUNCTION exec(ls_1)


К сообщению приложен файл. Размер - 0Kb
1 дек 07, 09:28    [4990437]     Ответить | Цитировать Сообщить модератору
 Re: calll function from UserObject  [new]
Локшин Марк
Member

Откуда: Воронеж
Сообщений: 3154
Перед
uo_1.exec(ls_1)
Вставить
uo_1 = create uo_getstringlength
а после испольлзования
DESTROY uo_1
И еще - ширина и высота шрифта зависит от параметров начертания этого шрифта. Имя, размер, стиль и т.д.
1 дек 07, 12:13    [4990538]     Ответить | Цитировать Сообщить модератору
 Re: calll function from UserObject  [new]
то как определить ширину строки?
Guest
Как определить ширину строки Static text
uo_st_tipbox.width = 600 // просто 600 угадал для строки "С.Петербург_Voronezh"
как определить вот эти 600 ?
Отсутствует у меня описание функции:
GetTextExtentPoint32(HDC,txt,len(txt),SFS)

Если строка содержит 20 символов, ширина символов разная,
Т.к. исходные условия таковы:
long il_Weight = 400
long il_Italic=0
long il_Underline = 0
long il_StrikeOut = 0
long il_charset = 204
long il_Height = 10
// Но в каких единицах, pixel ?
//+ string is_fontname=  'Arial' // имя шрифта влияет на высоту
// и ширину. Для 'Arial'   str_fontsize.cx = 136 и  str_fontsize.cy = 16
string is_fontname=  'courier' // Для  'courier'  str_fontsize.cx = 160 и  str_fontsize.cy = 13
то как определить ширину строки?
В свойствах контрола st_1 ширина = 1782,
Если поместить в него мою строку, то справа
В концовке остаётся пустое пространство


К сообщению приложен файл. Размер - 0Kb
2 дек 07, 18:48    [4992283]     Ответить | Цитировать Сообщить модератору
 Re: calll function from UserObject  [new]
Локшин Марк
Member

Откуда: Воронеж
Сообщений: 3154
В PowerBuilder'е есть функция для перевода из pixels в PBUnits
PixelsToUnits(str_fontsize.cx,XPixelsToUnits! )
Описание функции GetTextExtentPoint32
2 дек 07, 21:58    [4992708]     Ответить | Цитировать Сообщить модератору
 Re: calll function from UserObject  [new]
Voitovych
Member

Откуда:
Сообщений: 128
внизу снимки объясняющие проблему.
Объектные переменные польз-го объекта
object 'uo_getstringlength' – ничего не менял.
long il_Weight = 400
long il_Italic=0
long il_Underline = 0
long il_StrikeOut = 0
long il_charset = 204
long il_Height = 10
string is_fontname=  'Arial' тип шрифта True 

нижеидущие строки поставил в event constructor
командной кнопки

This.is_tip = "PB10.5 float prompt \ suggest 29,11,200712222222345"
string ls_1
ls_1 = This.is_tip
uo_1.exec(ls_1)
integer Value
Value = PixelsToUnits(gs_fontsize.cx,XPixelsToUnits! )
uo_st_tipbox.width = Value


К сообщению приложен файл. Размер - 0Kb
4 дек 07, 11:06    [4999344]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить