Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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).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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
4-1221144592
тимохов
2008-09-11 18:49
2009.11.01
Магические числа при асинхронном чтении из канала.


15-1251919459
GanibalLector
2009-09-02 23:24
2009.11.01
USB-RS232


11-1207200531
Дмитрий Пырин
2008-04-03 09:28
2009.11.01
Подскажите грамотный способ загрузить данные из файла в ListBox


2-1252244112
Andrey K
2009-09-06 17:35
2009.11.01
Виснет прога.


6-1209374740
AlexTitov
2008-04-28 13:25
2009.11.01
Как включить/выключить подключение по локальной сети? Варианты...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский