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