![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Глюк с Win7
ArcticCat © (2009-08-28 14:58:00)Есть такой код:
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(inttostr(edit1.Perform(EM_GETFIRSTVISIBLELINE,0,0)));
end;
на WinXP он работает нормально, а на Win7 не работает... Подскажите в чём проблема
Заранее спасибо.
TIF (2009-09-12 16:52:00) [1]28 августа создал тему на официальном форуме MSDN Library. Ни ответа, ни привета...
http://social.msdn.microsoft.com/Forums/ru-RU/libraryfeedback/thread/21159ed9-5e5a-4375-ad9e-6a5904e9f8b4
Надежда умирает последней, 22 октября ещё не наступило :)
ArcticCat (2009-08-29 10:31:00) [2]Нет картина совсем не поменялась... мне кажется что это просто баг в 7.
Сергей М. (2009-08-29 10:22:00) [3]
> ArcticCat
А попробуй-ка перенести строчку
memo1.Lines.Add(IntToStr(edit1.Perform(EM_GETFIRSTVISIBLELINE,0,0)));
в Edit1.OnChange..
Картина меняется ?
TIF (2009-08-28 22:12:00) [4]Попробую достучаться по поводу этой странности до Microsoft-а через их официальные форумы...
ArcticCat (2009-08-28 21:43:00) [5]проcто мне надо рисовать эдит под UpdateLayeredWindow и без этого параметра это не сделать... и мне почему то кажется что это баг)
TIF (2009-08-28 19:36:00) [6]> Не меняли.
Беру слова обратно.
Похоже либо-таки поменяли :-(, либо это очередная недоделка-баг
TIF (2009-08-28 19:29:00) [7]clickmaker © (28.08.09 18:03) [13]
> Хотя, возможно, в вин 7 это поведение изменили.
> Надо в последнем msdn смотреть
Не меняли. В online-версии MSDN Library никаких замечаний по этому поводу нет, а изменения относительно Windows 7 туда ещё давно стали вносить, оперативненько... Последний раз в июле правки видел
> ну естественно что текст прокручен
Ну так естественно, что никакой проблемы и нет. Перечитай внимательно [6] и [10]
Лучше скажи, чего ты добиваешься :) Какой конечной цели?
ArcticCat (2009-08-28 18:06:00) [8]ну естественно что текст прокручен
clickmaker (2009-08-28 18:03:00) [9]> [12] ArcticCat (28.08.09 17:54)
чтобы он выдал не 0, текст в нем должен быть прокручен. Чтобы первые символы ушли.
Хотя, возможно, в вин 7 это поведение "For single-line edit controls, the return value is the zero-based index of the first visible character" изменили.
Надо в последнем msdn смотреть
ArcticCat (2009-08-28 17:54:00) [10]а я его проверял на нормальной хр, на другом компе и выдаёт он не 0, просто одно и тоже приложение работает по разному на разных операционках)
Сергей М. © вы имели ввиду это? если да то это не помогло.
showmessage(inttostr(Lo(edit1.Perform(EM_GETFIRSTVISIBLELINE,0,0))));
TIF (2009-08-28 17:53:00) [11]> Игорь Шевченко © (28.08.09 17:44) [9]
> > Лично я всегда считал, что Edit - однострочный control
> И жестоко ошибался. Расширяй кругозор дальше
Не понял юмора
StdCtrls.TEdit is a wrapper for a Windows single-lineedit control.
?
PS: под "Edit - однострочный control" я подразумевал TEdit
TIF (2009-08-28 17:47:00) [12]> для эдита он тоже должен его выдавать.
Никто и не спорит! Но выдавать-то он всегда будет 0, ибо строкаодна:) А нумерация идёт с нуля...
> Вы точно его проверяли этот код на winxp?
Проверял в виртуальной XP. Выдаёт 0, естественно :)
А вот и ответ, почему там не 0 оказался:
> Сергей М. © (28.08.09 17:35) [6]
> В этом случае результатом обработки сообщение будет слово,
> ст.байт которого равен 0, а младший указывает индекс первого
> видимого символа в строке
Текста в edit-е много было во время эксперимента ;-)
Игорь Шевченко (2009-08-28 17:44:00) [13]
> Лично я всегда считал, что Edit - однострочный control
И жестоко ошибался. Расширяй кругозор дальше
ArcticCat (2009-08-28 17:36:00) [14]там TEdit)
ArcticCat (2009-08-28 17:35:00) [15]Edit controls: For single-line edit controls, the return value is the zero-based index of the first visible character. для эдита он тоже должен его выдавать. Вы точно его проверяли этот код на winxp?
Сергей М. (2009-08-28 17:35:00) [16]
> Edit - однострочный control
EM_GETFIRSTVISIBLELINE можно посылать и однострочным контролам.
В этом случае результатом обработки сообщение будет слово, ст.байт которого равен 0, а младший указывает индекс первого видимого символа в строке, которую визуализирует этот контрол.
Вопрос лишь в том, что у автора на самом деле скрывается за контролом по имени Edit1)
clickmaker (2009-08-28 17:29:00) [17]> Это сообщение можно отправить элемент управления редактированием
> или богатый элемент управления редактированием
перевод - просто песня
TIF (2009-08-28 17:25:00) [18]EM_GETFIRSTVISIBLELINE Message
http://msdn.microsoft.com/en-us/library/bb761574(VS.85).aspx
Gets the zero-based index of the uppermost visible line in a multiline edit control. You can send this message to either an edit control or a rich edit control.
Возвращает отсчитываемый с нуля индекс верхней непрерывной открытой видимой строки в элементе управления многострочного редактирования. Это сообщение можно отправить элемент управления редактированием или богатый элемент управления редактированием.
Лично я всегда считал, что Edit - однострочный control
TIF (2009-08-28 17:16:00) [19]> на WinXP он работает нормально
Ничего подобного. Тоже 0 показывает ;-)
ArcticCat (2009-08-28 16:53:00) [20]он вместо индекса первого видимого символа в эдите указывает 0 всегда