Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Глюк с Win7


Страницы:   1 2

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 всегда


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо