Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизКак определить было сделано выделение или нет? Найти похожие ветки
← →
Алексейй (2004-03-22 19:53) [0]Всё мучаюсь с edit"ом
Есть обработчик нажатия клавиши, есть обработчик изменения текста.. а вот как узнать произошло ли выделение текста или нет (ну синим)? Ведь выделять можно и мышкой и клавиатурой... В общем, такой вот маленький вопросик:)
← →
Defunct © (2004-03-22 19:58) [1]SelLength > 0
← →
Алексейй (2004-03-22 20:02) [2]Это я знаю.. но жму shift+home - как выловить sellength? Он на keydown остаётся равным 0, на formshortcut вообще отрицательный.. ХМ.
← →
Алексейй (2004-03-24 12:51) [3]Итак, напишу поподробнее, что надо сделать и какая проблема.
Хочу сделать суперэдит (уже давно хочу, многое получается). Ну там форматирование вводимого числа, проверки. Вроде, всё сделал, осталось проработать выделение. В суперэдите число постоянно справа. Чтобы это реализовать я добавляю всегда пробелы перед числом. Даже сделал так, чтобы курсор был всегда в пределах числа (т.е. на пробелах стоять не может.. если его туда ставят - "перепрыгивает" на начало числа). Одно но: не работает выделение.
Т.е., я хочу, чтобы было так: нажимаешь шифт, нажимаешь левую стрелку и начинает выделяться текст.. выделяется выделяется, пока не дойдёт до границы (дальше - пробелы).
С Shift+Home - то же самое.. и с мышиным выделением тоже.. Как бю это сделать? У кого какие мысли?
← →
[lamer]Barmaglot © (2004-03-24 13:32) [4]EN_UPDATE ?
Хотя помоему не с того конца подходим к проблеме... Помоему легче сделать свой OwnerDraw...
← →
Алексейй (2004-03-24 13:53) [5]2 [lamer]Barmaglot ©
"EN_UPDATE ?"
? Что это и как применимо к моей задаче (извините за неграмотность)
"Помоему легче сделать свой OwnerDraw"
Хм.. а это как и чем легче (лучше)?
← →
[lamer]Barmaglot © (2004-03-24 14:43) [6]Былоб за что извиняться, сам такой же неграмотный...
ЕN_UpDate - да и все что я советую - это WinApi. просто на чистом Delphi не пишу уже давно. Ладно забудь об EN_Update, глупость сморозил.
Как я понял, основная твоя проблема, в том, что ты хочешь прижать выводимый текст не к левому краю, а к правому? именно для этого добавляешь пробелы, но добавляя пробелы, ты не можешь использовать дефолтное выделение, поскольку оно выделит и твои пробелы.
Вообщем я предлагаю тебе использовать Маргины. Проще вот код попробуй и оцени...
SendMessage(Edit1.handle, EM_SetMargins, EC_LEFTMARGIN, MakeLong(100,100));
Это уберет проблему с пробелами, хотя прибавит других проблем :-).
Насчет того, что OwnerDraw лучше. Насколько я понял, ты наследуешь свой компонент от эдита. Получается, что он делает много лишней работы. Если же ты напишешь еомпонент с нуля, то он будет работать быстрее и не будет таких проблем, с позиционированием текста...
← →
Алексейй (2004-03-24 14:48) [7][lamer]Barmaglot ©
"Как я понял, основная твоя проблема, в том, что ты хочешь прижать выводимый текст не к левому краю, а к правому? именно для этого добавляешь пробелы, но добавляя пробелы, ты не можешь использовать дефолтное выделение, поскольку оно выделит и твои пробелы."
Совершенно верно!
"Насчет того, что OwnerDraw лучше. Насколько я понял, ты наследуешь свой компонент от эдита. Получается, что он делает много лишней работы. "
Ещё как много лишней работы... Просто ужас какой-то. Думаю, мой эдит на 486-х машинах будет тормозить :)))
" Если же ты напишешь еомпонент с нуля, то он будет работать быстрее и не будет таких проблем, с позиционированием текста..."
:)))) согласен.. но если учесть, что сроку неделя...
Спасибо конечно, но я *уже написал* суперэдит, модифицировав стандартный (куча кода повешена на onchange, formshortcut, keydown, mouseup и т.д.). Отсалось лишь используюя стандартные edit.selstart и edit.sellength сделать красивое выделение:)
← →
[lamer]Barmaglot © (2004-03-24 14:54) [8]Тогда лови события мыши нажатие, удерживание и т.д. Рас переписать в более культурном виде нет времени. Правда тогда тормозить будет и на первом Пентиуме :-)
← →
Алексейй (2004-03-24 14:59) [9][lamer]Barmaglot ©
"Тогда лови события мыши нажатие, удерживание и т.д."
Ловлю.. уже весь день сегодня ловлю - никак поймать не могу:))
"Правда тогда тормозить будет и на первом Пентиуме :-)"
Слава богу на компах где будет стоять система ниже Р4 с 256Мб оперативки не будет:) Вот те и экстенсивный путь))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.054 c