Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Патчи и исправления библиотек, Выкладываем свои решения 
:(
    Опции темы
Alex
Дата 12.2.2005, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Ели вы нашли ошибку или неточность в VCL или сторонних библиотеках, нашли методику решения выкладывайте информацию об этом в этом топике. А мы будем помещать ее в FAQ.

http://forum.vingrad.ru/index.php?act=modu...aq§ion=1013


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
StayAtHome
Дата 13.2.2005, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


Профиль
Группа: Участник
Сообщений: 456
Регистрация: 26.1.2004
Где: Украина

Репутация: 1
Всего: 16



Delphi 6 Enterprise Update pack 2 + WinXP SP1
В Delphi 7 не замечено
Если в обычном TListBox включить AutoComplete:=True, то, согласно справке (и исходникам) когда я нажимаю в нем алфавитно-цифровые клавиши, он должен "искать" строку, которая начинается с введенных символов. (см. procedure TCustomListBox.KeyPress) Но, если в списке есть две строки начинающиеся с одного символа -- фокус устанавливается всегда на ВТОРУЮ.
Думаю, дело в том, что после "поиска" строки методами VCL, срабатывет также стандартный поиск "виндовсовского" контрола List Box. Вроде-бы для предотвращения этого в указанной TCustomListBoxKeyPress есть следующие строки:
Код
if not Ord(Key) in [VK_RETURN, VK_BACK, VK_ESCAPE] then
     Key := #0;  // Clear so that the listbox's default search mechanism is disabled

Но они почему-то не срабатывают.
Если же отключить AutoComplete, то работает только стандарный "поиск" контрола Windows и все в порядке. Но искать он в отличие от TListBox умеет только по первой букве. :-(

Решение: Написал потомка от TCustomListBox чтобы не править VCL
Код

procedure TMyListBox.KeyPress(var Key: Char);
begin
.....
   inherited KeyPress(Key);
 Key:=#0;
.....
end;


Это сообщение отредактировал(а) StayAtHome - 13.2.2005, 02:03
PM MAIL WWW ICQ YIM   Вверх
December
Дата 13.2.2005, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Баг в функциях TControl.ClientToParent и ParentToClient. Явная ошибка при проверке условия цикла. Ошибка проявляется когда ищешь координаты у непосредственного предка или детёныша (то есть второй параметр - опускается).

Лечение - написать свою процедуру перевода координат, благо она состоит из двух строчек smile Править VCL не хочется.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Alex
Дата 13.2.2005, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



December, пример процедуры smile


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
December
Дата 14.2.2005, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Ещё один баг, связанный с реализацией установки Parent'а в TControl'е подробно описан на примере TWebBrowser в этой теме:
http://forum.vingrad.ru/index.php?showtopic=40245
Там же можно найти и решение проблемы (частное для TWebBrowser и частичное в плане эффективности). Но стабильное smile


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
December
Дата 14.2.2005, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Цитата(Alex @ 13.2.2005, 23:54)
December, пример процедуры

Код

function ImmediateParentToClient(gControl:TControl;
                                const Point: TPoint): TPoint;
begin
Result.X:=Point.X-gControl.Left;
Result.Y:=Point.Y-gControl.Top;
end;//ImmediateParentToClient



--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
December
Дата 28.2.2005, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Ошибка с TComboBox: при показе/выборе пустой строки из списка возникает AV или ntdll error.
Причина: ошибка в VCL Delphi7. В сервиспаке для оного ошибка исправлена.
Как профиксить самому: в файле StdCtrls.pas, в методе TCustomComboBoxStrings.Get заменить строку
Код

if Len <> CB_ERR then

на
Код

if (Len <> CB_ERR) and (Len > 0) then



--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Петрович
Дата 26.7.2005, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



Уже давно обнаружена ошибка в tMaskEdit. Сделан соответствующий корректирующий модуль. Вот комментарий из него описывающий проблему и способ решения. Сам модуль приложен к сообщению.

Код

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// В стандартном компоненте tMaskEdit в Delphi, имеется ошибка, из-за         //
// которой в шаблоне невозможно использование литералов '/' и ':' - они       //
// ВСЕГДА заменяются на TimeSeparator и DateSeparator соответственно.         //
//                                                                            //
// Это вызванно отсутствием разницы обработки mcLiteral, mcIntlLiteral в      //
// процедурах MaskDoFormatText и PadInputLiterals модуля MaskUtils.           //
//                                                                            //
// Для исправления этой ошибки, этот модуль, при инициализации подменяет      //
// процедуры MaskDoFormatText и PadInputLiterals в модуле MaskUtils на        //
// собственные, полученные копированием исходных, с внесением необходимых     //
// исправлений.                                                               //
//                                                                            //
// Подмена корректно выполняется как при компиляции проекта с использованием  //
// пакетов, так и без их использования.                                       //
//                                                                            //
// Для использования, достаточно в любом из модулей проекта, или в самом      //
// проекте (.dpr), добавить в список используемых модулей (uses) этот модуль. //
//                                                                            //
// Однако, на поведение tMaskEdit во время дизайна этот модель повлиять не    //
// может. Разве что подкомпоновать его в какой нибудь design-time пакет.      //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////


Это сообщение отредактировал(а) Петрович - 26.7.2005, 13:53

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  awPatchTMaskEdit.zip 3,32 Kb


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0995 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.