Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / TxtWidth chr(9) EditBox / 2 сообщений из 2, страница 1 из 1
06.03.2007, 19:51
    #34375794
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TxtWidth chr(9) EditBox
Как правильно определить на сколько пикселей увеличить ЕдитБокс
Если строка содержит спец-символ табуляцию

?TXTWIDTH(CHR(9),"Arial",10)*FONTMETRIC(6,"Arial",10) && 10
?TXTWIDTH(' ',"Arial",10)*FONTMETRIC(6,"Arial",10) && 4
?TXTWIDTH('a',"Arial",10)*FONTMETRIC(6,"Arial",10) && 7
Edit1.FontName = "Arial"
Edit1.FontSize = 10
Edit1.Value = Chr(9)+' a'

А реальный Edit1.Width=40 тогда символ а не переходит на другую строку...

Плиз хелп рассчитать длину едитбокса...
Заранее сенкс...
...
Рейтинг: 0 / 0
07.03.2007, 18:14
    #34378330
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TxtWidth chr(9) EditBox
Сам задал сам и отвечу...
Если кому-то пригодится расчет ширины табуляции в пикселях для ЕдитБокса...

?proba(CHR(9),"Arial",10)
?proba(CHR(9),"Arial",11)
?proba(CHR(9),"Arial",12)
proba.prg
Код: 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.
38.
PARAMETERS my_string,my_msg_F_N,my_msg_F_S,my_msg_F_St
LOCAL my_obj_tab, my_width_tab
m.my_msg_F_N = IIF(TYPE("m.my_msg_F_N")#"C","Arial",m.my_msg_F_N)
m.my_msg_F_S = IIF(TYPE("m.my_msg_F_S")#"N", 9 ,m.my_msg_F_S)
m.my_msg_F_St = IIF(TYPE("m.my_msg_F_St")#"C","",m.my_msg_F_St)
STORE  0  TO m.my_width_tab
STORE '' TO m.my_ret
IF OCCURS(CHR( 9 ),m.my_string)# 0  && Если присутствует спец-символ табуляции
	m.my_obj_fr = CREATEOBJECT('form')
	m.my_obj_fr.Left = -  1000 
	m.my_obj_fr.Visible = .T.
	m.my_obj_fr.AddObject('my_obj_tab','Editbox')
	WITH m.my_obj_fr.my_obj_tab
		.ScrollBars =  0 
		.Visible = .T.
		.Width= 9 
		.FontName = m.my_msg_F_N
		.FontSize = m.my_msg_F_S
		IF "B"$m.my_msg_F_St
			.FontBold = .T.
		ENDIF
		IF "I"$m.my_msg_F_St
			.FontItalic = .T.
		ENDIF
		.Value = CHR( 9 )+'a'
		STORE  0  TO .SelStart
		DO WHILE .SelStart# 2  AND .Width<=SYSMETRIC( 1 )
			.Width = .Width+ 1 
			.SetFocus
			STORE  0  TO .SelStart
			KEYBOARD '{END}' PLAIN
			DOEVENTS
		ENDDO
		m.my_w_a = TXTWIDTH('a',m.my_msg_F_N,m.my_msg_F_S,m.my_msg_F_St)*FONTMETRIC( 6 ,m.my_msg_F_N,m.my_msg_F_S,m.my_msg_F_St)
		m.my_ret = .Width-m.my_w_a- 8 
	ENDWITH
	RELEASE m.my_obj_tab
ENDIF
RETURN m.my_ret
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / TxtWidth chr(9) EditBox / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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