Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Как определить было сделано выделение или нет?   Найти похожие ветки 

 
Алексейй   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
14-1079618779
rea
2004-03-18 17:06
2004.04.11
Variant и реляционные DB


1-1082433197
Bond
2004-04-20 07:53
2004.04.11
Печать


1-1082898233
Nord
2004-04-25 17:03
2004.04.11
Поиск фалов по маскам


7-1080053468
dmytro
2004-03-23 17:51
2004.04.11
Запуск от имени


3-1079349931
L.Andrey
2004-03-15 14:25
2004.04.11
Type mismatch in expression - при записе в БД