Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.01;
Скачать: CL | DM;

Вниз

Глюк с 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).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


 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
2-1253022337
Drowsy
2009-09-15 17:45
2009.11.01
Откат транзакции в InterBase.


2-1252426330
Alexei
2009-09-08 20:12
2009.11.01
Программное нажатие клавиши или сочетания клавиш


15-1251906031
AlexDan
2009-09-02 19:40
2009.11.01
вроде биос пикает..


15-1251803846
DVM
2009-09-01 15:17
2009.11.01
Разбор командной строки на имя файла и параметры


3-1229078488
Nik
2008-12-12 13:41
2009.11.01
отпределить тип колонки