|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.11.2008, 20:16 | #1 |
Регистрация: 02.11.2008
Сообщений: 5
|
Как передать в TEdit подстроку под курсор
Добрый день, не нашел на форуме. Проблема такая:
1)При нажатии на TButton1 в TEdit передается, например, символ "а", при нажатии на TButton2 передается символ "б", но так что бы символы добавлялись в то место, где стоит(стоял до потери фокуса) курсор edit'a. -- Если можно с кодом, спасибо за помощь. |
02.11.2008, 21:10 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Текущая позиция курсора равна Edit.SelStart. Эту величину нужно отслеживать в событиях EditChange, EditMouseUp, EditKeyUp и хранить в глобальной переменной.
Так вы всегда будете знать позицию курсора в Edit. |
03.11.2008, 18:33 | #3 |
Регистрация: 02.11.2008
Сообщений: 5
|
Решено. Все дело было в том что я использовал TButton, который снимает фокус с TEdit и устанавливает на себя. А SelStart и SelLenght теряют смысл (устанавливаются в 0) после потери фокуса. Решением было сменить TButton на TSpeedButton. Код, кому интересно, такой:
procedure TfmMain.SpeedButton1Click(Sender: TObject); var tmp: String; i: Word; pos: Word; begin pos := Edit1.SelStart; for i := 1 to Edit1.SelStart do tmp := tmp + Edit1.Text[i]; tmp := tmp + 'w'; if Edit1.SelStart < Length(Edit1.Text) then for i := Edit1.SelStart + 1 to Length(Edit1.Text) do tmp := tmp + Edit1.Text[i]; Edit1.Text := tmp; Edit1.SelStart := pos + Length('w'); end; |
03.11.2008, 18:50 | #4 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
А вот так - с простым TButton
Код:
|
04.11.2008, 03:23 | #5 |
Регистрация: 02.11.2008
Сообщений: 5
|
mihali4, а ты случаем не в курсе, как узнать где стоит курсор на веб-странице (на каком INPUT,e), загруженной в TWebBrowser. Как получить handle этого input'a ???
|
05.11.2008, 05:01 | #6 | |
Регистрация: 02.11.2008
Сообщений: 5
|
Цитата:
Когда документ уже загружен, OnDocumentComplete, в обработчике пишем: // Нужно получить handle 2го уровня //из окна TWebBrowser global myHandle: Thandle; ----- var h: THandle; begin h:=GetWindow(myWebbrowse.Handle, GW_CHILD); // Это уровень 1 h:=GetWindow(h, GW_CHILD); // а это уже 2 myHandle:=h; end; Далее myHandle уже можно использовать в SendMessage. Правда насколько я понял такой прием не будет работать с фреймами. И еще одна проблема: я хочу что бы по щелчку кнопки добавлялся новый page в pageControl и соответственно программно рождался новый TWebBrowser. Вот тут опять возникает тот же вопрос, как получить handle активного элемента, поиск GW_CHILD уже ни чего не дает для 2 го уровня. Вопрос знатокам...? Как вообще корректно решить this? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как передать параметр? | Иллидан | Общие вопросы Delphi | 8 | 12.07.2008 12:57 |
Как удалить из строки подстроку по маске ? | - fenix - | Помощь студентам | 4 | 23.04.2008 15:04 |
Как передать указатель в процедуру??? | kate4ka | Общие вопросы Delphi | 1 | 17.03.2008 12:49 |
Поставить курсор в конец строки в TEdit | Никки | Общие вопросы Delphi | 2 | 17.03.2008 00:27 |
Как передать объект по наследству | Legat | Win Api | 6 | 03.11.2007 11:19 |