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

?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
TxtWidth chr(9) EditBox
    #34378330
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сам задал сам и отвечу...
Если кому-то пригодится расчет ширины табуляции в пикселях для ЕдитБокса...

?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
2 сообщений из 2, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / TxtWidth chr(9) EditBox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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