чёта я туплю или вопрос про TextBox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

чёта я туплю или вопрос про TextBox

Сообщение Бяка » 24.01.2006 (Вт) 0:43

как програмно отлавить переход на новую стороку в TextBox`e при MultiLine = true
если я туда ввожу "2222222222222222222222222222222...."
т.е. КАК отловить тот мамент когда TextBox , при достижении каретки Width`а переброст её на новуя сторку вот так :
"22222222222222222
222222222222...."
Я идиот! Убейте меня, кто-нибудь!

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 24.01.2006 (Вт) 0:49

Бяка
Судя по аватару, ты этот момент отловить просто-напросто не успеваешь :lol:

P.S.: зато я уже отловил :) Учись!!
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 24.01.2006 (Вт) 1:00

Если Me.Font идентичен с Text1.Font то этот момент наступит, когда
Код: Выделить всё

Me.TextWidth(Text1.Text) Mod Text1.ScaleWidth

станет на 1 больше. Иначе - никак. (Ну если только не через з-цу, ковыряться на низком уровне)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 24.01.2006 (Вт) 1:40

искать в строке vbCrLf
Лучше думать чем жевать.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 24.01.2006 (Вт) 2:15

Нет, vbCrLf будет если ввести Enterom a13+a10. А здесь нужно определить момент, когда TextBox перенесёт на новую строчку. И тут даже предложенный мною способ наверное не пойдёт: ведь перенос осуществляется не по буквам, а по цельным символьным блоком (т.е. по словам).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 24.01.2006 (Вт) 2:24

он прокатывает , но только когда я набираю текст, а если я меняю резмер шрифта и приетом у меня набрано уже больше 2х строчек то он сглючивает

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 24.01.2006 (Вт) 2:25

vvs_adm
угу :shock:

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.01.2006 (Вт) 2:48

Хакер писал(а):ведь перенос осуществляется не по буквам, а по цельным символьным блоком


Ну дык нечего давать новой строке право на жизнь :)

Бяка писал(а):он прокатывает , но только когда я набираю текст, а если я меняю резмер шрифта и приетом у меня набрано уже больше 2х строчек то он сглючивает


Изменяя шрифт TextBox, меняй и шрифт формы.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 24.01.2006 (Вт) 8:13

Держи:
Код: Выделить всё
Private Declare Function SendMessageL Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Const EM_GETLINECOUNT As Long = &HBA

Public LC As Long, LCold As Long

Private Sub Text1_Change()
LC = SendMessageL(Text1.hwnd, EM_GETLINECOUNT, 0, 0)
If LC <> LCold Then
  'Тот самый момент, когда меняется количество строк
  LCold = LC
  Me.Caption = "Количество строк = " & LC
End If
End Sub
Нет ничего невозможного для человека с интеллектом.

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 24.01.2006 (Вт) 19:21

Класс! спасибо! 8)

а некто не знает где мона узнать цифровые значения констант:
DT_BOTTOM
DT_CALCRECT
DT_CENTER
DT_EDITCONTROL
DT_END_ELLIPSIS or DT_PATH_ELLIPSIS
DT_EXPANDTABS
DT_EXTERNALLEADING
DT_LEFT
DT_MODIFYSTRING
DT_NOCLIP
DT_NOPREFIX
DT_RIGHT
DT_RTLREADING
DT_SINGLELINE
DT_TABSTOP
DT_TOP
DT_VCENTER
DT_WORDBREAK

для DrawTextEx
в API-Guide нету :( я сматрел!

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 24.01.2006 (Вт) 19:24

Api text viewer из набора стандартных утилит Visual Studio.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.01.2006 (Вт) 20:26

Лучше смотреть хидеры студии. Так точнее.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 190

    TopList