Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Editbox Добавлено: 01.10.03 17:59  

Автор вопроса:  lnu
Как узнать на какой строке в EditBox'е находится каретка?

MSDN пишет (EM_LINEFROMCHAR):

ich
Specifies the character index of the character contained in the line whose number is to be retrieved. If the ich parameter is –1, either the line number of the current line (the line containing the caret) is retrieved or, if there is a selection, the line number of the line containing the beginning of the selection is retrieved.

В методе Change для Edit'a пишу
lineindex = SendMessage(hwnd, EM_LINEFROMCHAR, -1, 0) + 1

но результат не совсем верный (или совсем не верный ), когда я в конце текста, тогда все нормально, а если редактирую текст в середине, тогда результат не изменяется пока не изменится количество строк.

В чем тут дело?

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 DAN



ICQ: 234826 

Вопросов: 10
Ответов: 124
 Web-сайт: visualbasic.boom.ru
 Профиль | | #1
Добавлено: 01.10.03 20:51

Ты наверное имел в виду TextBox, т. к. EditBox в Delphi.

В текстбоксе это можно сделать так:

MsgBox TextBox1.SelStart

Выскочит сообщение, которое покажет местонахождение каретки.

Ответить

Номер ответа: 2
Автор ответа:
 &&&&M



Вопросов: 8
Ответов: 68
 Профиль | | #2 Добавлено: 01.10.03 22:37

Вроде так (для VB6):

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long


Private Const EM_LINEFROMCHAR = &HC9


SendMessage(RT.hwnd, EM_LINEFROMCHAR, RT.SelStart, 0&;) + 1

RT - текстовое поле, "+1" - не помню зачем писал, в объщем поэксперементируй. Удачи!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам