Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.042 c
8-1075583555
Magician_g
2004-02-01 00:12
2004.04.11
Как из последовательности BMP сделать avi.


1-1080227206
Димон
2004-03-25 18:06
2004.04.11
Байты аргумента


14-1082361946
zzet
2004-04-19 12:05
2004.04.11
Испания выводит войска из Ирака.


6-1076327014
Behemoth
2004-02-09 14:43
2004.04.11
Проблема с IdTCPServer....


14-1079256575
ИМХО
2004-03-14 12:29
2004.04.11
А что в Испании творится?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский