Ещё ошибки киньте в багрепорт

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Сообщение Сергей Смирнов » 09.11.2005 19:09:44

TRadioGroup - нет TabOrder
1411
TBitBtn - нет NumGliph
1412
TDBRadioGroup - нажатие Tab приводит к изменению выбранного
пункта - должен быть просто выход из контрола,
изменение выбора делаетс¤ стрелками или мышкой
1413

Пока репортил 1413, 1412 уже пофиксили :) (точнее - опубликовали соответствующее свойство из TCustomBitBtn в надежде, что оно работает как надо)
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение alexs » 12.11.2005 04:01:05

Ещё баг нарыл
Нахождение этого жука было вызвано переносом полностью рабочего кода из дельфина

1. в модуле Win32WSStdCtrls для совместимости с Delphi и для правильного
управления положением курсора ввода в TEdit и его наследниках

в процедуре установки курасора вызов лишний EM_SCROLLCARET

procedure EditSetSelStart(WinHandle: HWND; NewStart: integer);
begin
Windows.SendMessage(WinHandle, EM_SETSEL, Windows.WParam(NewStart), Windows.LParam(NewStart));
// scroll caret into view
Windows.SendMessage(WinHandle, EM_SCROLLCARET, 0, 0);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
end;

должно быть

procedure EditSetSelStart(WinHandle: HWND; NewStart: integer);
begin
Windows.SendMessage(WinHandle, EM_SETSEL, Windows.WParam(NewStart), Windows.LParam(NewStart));
// scroll caret into view
Windows.SendMessage(WinHandle, EM_SCROLLCARET, 0, 0);
end;
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3879
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Иван Шихалев » 12.11.2005 04:20:11

должно быть

Не понял — где тут десять отличий?
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1140
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Сообщение alexs » 12.11.2005 19:20:32

// scroll caret into view
Windows.SendMessage(WinHandle, EM_SCROLLCARET, 0, 0);

яж его подчеркнул
вот этой строки быть не должно
смысл такой
я пишу код
Код: Выделить всё
Edit1.Text:='a';
Edit1.SelectStart:=1

- в дельфях курсор становится после симовла 'a'
а вот в лазаре указанная строка смещает курсор в начало поля ввода
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3879
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Иван Шихалев » 13.11.2005 02:26:38

яж его подчеркнул

Угу. А потом "должно быть" и снова все то же самое.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1140
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Сообщение pda » 13.11.2005 21:15:00

Модуль rtl\win32\WinSock.pp

Константа INVALID_SOCKET определена как:
Код: Выделить всё
INVALID_SOCKET = TSocket(not(1));

что, учитывая, что TSocket = u_long = dword, даёт значение: 4294967294, что в знаковом виде даёт -2, в то время, как этаже константа в заголовках windows определена, как -1.

В этом случае, кстати, возможен подводный камен в функции rtl\win32\sockets.pp
Код: Выделить всё
function fpsocket       (domain:cint; xtype:cint; protocol: cint):cint;
begin
 fpSocket:=WinSock.Socket(Domain,xtype,ProtoCol);
 if fpSocket<0 then
   SocketError:=WSAGetLastError

Т.е., происходит преобразование беззнакового в знаковый и сравнение на меньше. Учитывая, что в руководстве по WinSock сказано: "Socket handles may take any value in the range 0 to INVALID_SOCKET-1.", если учесть, что тип SOCKET - беззначый, получается ситуация, когда корректный результат функции будет считаться ошибочным.
Аватара пользователя
pda
постоялец
 
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Сообщение alexs » 15.11.2005 23:59:49

Это снова я :D
Вот глюк IDE

1. В дизайнере глюк
отследил на примере TRxMemoryData
Есть компонент - наследник DataSet, реализован редактор - заполнение FieldDefs из другого DataSet в редакторе компонента после изменения компонента сделан Modified - посылка сигнала IDE о том что компонент изменён.

В ObjectInsepctor-е в свойстве FieldDefs как отображался 0 так и отображется

После того, как уйдёш на другой компонет, а потом вернёшся обратно - всё в норме
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3879
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение alexs » 29.11.2005 03:15:03

Надо оживлять тему :)
очередной глюк

В методе TCustomComboBox.SetItemIndex файлы CustomComboBox.INC необходимо добавить
проверку - отмечено символами >>>

procedure TCustomComboBox.SetItemIndex(Val : integer);
begin
//if CompareText(Name,'TextToFindComboBox')=0 then
// debugln('TCustomComboBox.SetItemIndex A ',DbgSName(Self),' Text="',Text,'"');
if Val=GetItemIndex then exit;
if Val>=Items.Count then exit;

FItemIndex:= Val;
//if (FItemIndex>=0) and (not (csLoading in ComponentState)) then
// Text:=FItems[FItemIndex];
if HandleAllocated then
begin
TWSCustomComboBoxClass(WidgetSetClass).SetItemIndex(Self, FItemIndex);
end else begin
// remember text, in case one reads text without creating handle
>>> if (FItemIndex>=0) and (FItemIndex < FItems.Count) then
Text := FItems.Strings[FItemIndex]
>>> else
>>> Text := '';
end;
//if CompareText(Name,'TextToFindComboBox')=0 then
// debugln('TCustomComboBox.SetItemIndex END ',DbgSName(Self),' Text="',Text,'"');
end;
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3879
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение alexs » 21.12.2005 01:14:31

ещё:
в CheckListBox не опубликовано PopupMenu
---------------------------
ещё один прикол
в модуле
IniPropStorage.pas

есть
тип класса
Type
{ TCustomIniPropStorage }
TIniFileClass = Class of TCustomIniFile;

функция
function TCustomIniPropStorage.IniFileClass: TIniFileClass;
begin
Result:=TIniFile;
end;

так вот, вызов
FInifile:=IniFileClass.Create(GetIniFileName);
всегда возвращает TCustomIniFile
пришлос этот вызов закоментировать и вставить напрямую
FInifile:=TIniFile.Create(GetIniFileName);

тогда объект TIniPropStorage нормально востанавливает сохраненные данные
я так и не понял - толь глюк компилятора - толи LCL
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3879
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: MSN [Bot] и гости: 8

Рейтинг@Mail.ru