Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
ВнизНомер символа Найти похожие ветки
← →
mike.dld (2002-03-29 14:13) [0]1. Прошу прощения у MBo за свою безграмотность.
2. Как узнать номер символа в строке, если известно расстояние от ее начала в пикселях.
← →
Alx2 (2002-03-29 14:16) [1]смотреть у canvas свойство TextWidth?
← →
Alx2 (2002-03-29 14:22) [2]То есть, зная из чего состоит начало строки, можно попробовать добавлять по одной букве, пока TextWidth не попадет в нужную окрестность
← →
mike.dld (2002-03-29 14:24) [3]А это не долго?
← →
mike.dld (2002-03-29 14:24) [4]А это не долго? С TextWidth я узнаю ширину всей строки, к примеру =200, а мне нужно, чтобы строка была <100. Так вот как узнать, какой символ стоит на d=100 пикселей.
← →
mike.dld (2002-03-29 14:26) [5]В общем мне нужно вставить в строку, там, где d=100, символ
← →
MBo (2002-03-29 14:35) [6]Это к StringGrid-у относится?
← →
mike.dld (2002-03-29 14:36) [7]Да.
← →
Юрий Зотов (2002-03-29 14:38) [8]Зависит от того, что это за контрол. Для потомков TCustomEdit, например, можно попробовать так:
SelLength := 0;
SetCaretPos(100, ...);
После это, по идее, SelStart должен дать номер символа.
А в общем случае, конечно, надо проверять TextWidth в цикле, добавляя по одному символу ИЗ ТОЙ ЖЕ СТРОКИ (поскольку шрифт может быть и не моноширинным).
← →
MBo (2002-03-29 14:42) [9]ну тогда как Alx2 сказал, что-то типа
i:=0;
repeat
inc(i);
j:=StringGrid1.Canvas.Textwidth(copy(s,1,i));
until (i=length(s)) or (j>100);
← →
MBo (2002-03-29 14:47) [10]а для потомков TCustomEdit удобно EM_CHARFROMPOS
← →
Alx2 (2002-03-29 14:52) [11]>mike.dld (29.03.02 14:24)
>А это не долго?
IMHO долго. Но можно попробовать дихотомию :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c