Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Номер символа [D6, Win95/98, WinME]


mike.dld ©   (2002-03-29 14:13:00) 

1. Прошу прощения у MBoза свою безграмотность.
2. Как узнать номер символа в строке, если известно расстояние от ее начала в пикселях.


Alx2   (2002-03-29 14:52:00) [1]

>mike.dld (29.03.02 14:24)
>А это не долго?
IMHO долго. Но можно попробовать дихотомию :)


MBo   (2002-03-29 14:47:00) [2]

а для потомков TCustomEdit удобно EM_CHARFROMPOS


MBo   (2002-03-29 14:42:00) [3]

ну тогда как Alx2 сказал, что-то типа
i:=0;
repeat
inc(i);
j:=StringGrid1.Canvas.Textwidth(copy(s,1,i));
until (i=length(s)) or (j>100);


Юрий Зотов   (2002-03-29 14:38:00) [4]

Зависит от того, что это за контрол. Для потомков TCustomEdit, например, можно попробовать так:

SelLength := 0;
SetCaretPos(100, ...);

После это, по идее, SelStart должен дать номер символа.


А в общем случае, конечно, надо проверять TextWidth в цикле, добавляя по одному символу ИЗ ТОЙ ЖЕ СТРОКИ (поскольку шрифт может быть и не моноширинным).


mike.dld   (2002-03-29 14:36:00) [5]

Да.


MBo   (2002-03-29 14:35:00) [6]

Это к StringGrid-у относится?


mike.dld   (2002-03-29 14:26:00) [7]

В общем мне нужно вставить в строку, там, где d=100, символ


mike.dld   (2002-03-29 14:24:00) [8]

А это не долго?


mike.dld   (2002-03-29 14:24:00) [9]

А это не долго? С TextWidth я узнаю ширину всей строки, к примеру =200, а мне нужно, чтобы строка была <100. Так вот как узнать, какой символ стоит на d=100 пикселей.


Alx2   (2002-03-29 14:22:00) [10]

То есть, зная из чего состоит начало строки, можно попробовать добавлять по одной букве, пока TextWidth не попадет в нужную окрестность


Alx2   (2002-03-29 14:16:00) [11]

смотреть у canvas свойство TextWidth?


Наверх

Титульная страница Поиск, карта сайта Написать письмо