Ещё ошибки киньте в багрепорт
Модератор: Модераторы
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
АУ - кто нибудь отозвался?
Ещё накропал ошибки (мучаю компонент TCurrencyEdit из RX):
не срабатывают сообщения LM_ENTER и LM_EXIT
не работает функция FormatFloat если в строке форматирования присутсвуют кавычки (не важно одинарные или двойные) - т.е. на конструкции типа
A := FormatFloat('#,##0.00"р."', 125.20)
функция повесится
там напутали с закрывающими end-ми в цикле форматирования
Ещё накропал ошибки (мучаю компонент TCurrencyEdit из RX):
не срабатывают сообщения LM_ENTER и LM_EXIT
не работает функция FormatFloat если в строке форматирования присутсвуют кавычки (не важно одинарные или двойные) - т.е. на конструкции типа
A := FormatFloat('#,##0.00"р."', 125.20)
функция повесится
там напутали с закрывающими end-ми в цикле форматирования
- Сергей Смирнов
- энтузиаст
- Сообщения: 595
- Зарегистрирован: 28.04.2005 13:23:25
- Откуда: Москва
- Контактная информация:
Разработчики Лазаря категорически рекомендуют не пользоваться сообщениями. Как это осуществлять на практике - не совсем понятно. Вероятно, перекрывать какие-то методы... А что касается LM_ENTER и LM_EXIT, то видим в исходниках TWinControl следующее:не срабатывают сообщения LM_ENTER и LM_EXIT
Код: Выделить всё
procedure TWinControl.WMEnter(var Message: TLMEnter);
begin
Assert(False, Format('Trace: TODO: [TWinControl.LMEnter] %s', [ClassName]));
end;
procedure TWinControl.WMExit(var Message: TLMExit);
begin
Assert(False, Format('Trace: TODO: [TWinControl.LMExit] %s', [ClassName]));
end;
Вот такая петрушка
Обычное дело. Высылай патч в список fpc-devel.там напутали с закрывающими end-ми в цикле форматирования
- Сергей Смирнов
- энтузиаст
- Сообщения: 595
- Зарегистрирован: 28.04.2005 13:23:25
- Откуда: Москва
- Контактная информация:
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
RxLib у меня уже не помню откуда - по моему с DelphiPlus брал
JVCL в свое время не стал тащить - або большой очень и много не нужного
а то что много не работает - дык совместимость у лазаря с дельфи весьма посредственная (он в этом не виноват - практически все библиотеки очень сильно пользуют WinAPI) - но ничего - прорвёмся
на народе обновил версию порта RX
дописал работу TCurencyEdit-ра - вроде работает
а вот насчёт сообщений - это плохо, если они не рекомендуют ими пользоваться - то надо чдял нормального написания компонент предоставлять аналоги в виде перекрываемых методов.
кстати вместо
LM_Enter и LM_Exit использую DoEnter и DoExit
JVCL в свое время не стал тащить - або большой очень и много не нужного
а то что много не работает - дык совместимость у лазаря с дельфи весьма посредственная (он в этом не виноват - практически все библиотеки очень сильно пользуют WinAPI) - но ничего - прорвёмся
на народе обновил версию порта RX
дописал работу TCurencyEdit-ра - вроде работает
а вот насчёт сообщений - это плохо, если они не рекомендуют ими пользоваться - то надо чдял нормального написания компонент предоставлять аналоги в виде перекрываемых методов.
кстати вместо
LM_Enter и LM_Exit использую DoEnter и DoExit
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Это опять я со ошибками, выложтие кого не затруднит.
1. TDBEdit в момент начала редактирования форматирует
данные по DisplayForma вместо EditFormat
- как я понимаю надо писть свой обработчик Pain для ситуации когда фокуса нет в поле ввода
2. При установке свойства TLabel.Enabled:=false если заголовок
метки состоит из нескольких слов - то последенее слово отличается
по цвету
3.
в модуле PropertyStorage.pas
есть
procedure TCustomPropertyStorage.WriteInteger(const Ident: string; Value: Longint);
begin
DowReadInteger(RootSection, Ident, Value);
end;
надо
procedure TCustomPropertyStorage.WriteInteger(const Ident: string; Value: Longint);
begin
DoWriteInteger(RootSection, Ident, Value);
end;
1. TDBEdit в момент начала редактирования форматирует
данные по DisplayForma вместо EditFormat
- как я понимаю надо писть свой обработчик Pain для ситуации когда фокуса нет в поле ввода
2. При установке свойства TLabel.Enabled:=false если заголовок
метки состоит из нескольких слов - то последенее слово отличается
по цвету
3.
в модуле PropertyStorage.pas
есть
procedure TCustomPropertyStorage.WriteInteger(const Ident: string; Value: Longint);
begin
DowReadInteger(RootSection, Ident, Value);
end;
надо
procedure TCustomPropertyStorage.WriteInteger(const Ident: string; Value: Longint);
begin
DoWriteInteger(RootSection, Ident, Value);
end;
Насчет JVCL , в конфе спросил насчет Лазаря сказали что планов на перенос нет. А JCL перенесен. Так что сначала надо оттестировать JCL и затем портировать некие компоненты на базе JCL из JVCL. Так как JCL более стабилен чем сами классы Лазаря. Да и на самом деле из тех сотен компонентов надо то от силы 20-30, ну может 50.
- Сергей Смирнов
- энтузиаст
- Сообщения: 595
- Зарегистрирован: 28.04.2005 13:23:25
- Откуда: Москва
- Контактная информация:
Мда, прикольно... баг №13822. При установке свойства TLabel.Enabled:=false если заголовок
метки состоит из нескольких слов - то последенее слово отличается
по цвету
Это о вреде копи-пэста3. в модуле PropertyStorage.pas
Не понял о чём речь: в TDBEdit нет этих свойств.1. TDBEdit в момент начала редактирования форматирует
данные по DisplayForma вместо EditFormat
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Не понял о чём речь: в TDBEdit нет этих свойств.
DisplayFormat есть у TField
так вот правильно TDBEdit должен вести себя так:
когда в нём находится фокус клавиатурного ввода он должен подставлять значение как есть или сформатированное по TField.EditFormat
а вот когда фокус ввода покинул TDBEdit то вот тут он должен уже отображать данные по формату TField.DisplayForma и поддерживать выравнивание (если задано)
вот этой функциональности нет
- Сергей Смирнов
- энтузиаст
- Сообщения: 595
- Зарегистрирован: 28.04.2005 13:23:25
- Откуда: Москва
- Контактная информация:
- Сергей Смирнов
- энтузиаст
- Сообщения: 595
- Зарегистрирован: 28.04.2005 13:23:25
- Откуда: Москва
- Контактная информация:
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
О каком TField идёт речь? Где в лазаре вызывается редактор полей? Для каких компонент?
Авторитетно заявляю
хоть редактора полей DataSet-а нет всёже наседники TField в датасетах создаются
Так вот в этих полях то и есть DisplayForma
а доступ к этим поляем получаем когда пишем
SupeMuperDataSet.FieldByName('Bla-bla').DisplayFormat
SupeMuperDataSet.FieldByName('Bla-bla').EditFormat
- Сергей Смирнов
- энтузиаст
- Сообщения: 595
- Зарегистрирован: 28.04.2005 13:23:25
- Откуда: Москва
- Контактная информация:
Это всё в рантайме. В дизайне далеко не все наследники TDataSet умеют создавать поля (сам TDataSet не умеет совсем), а те которые умеют - не все содержат обсуждаемые свойства (например TDBF). ИМХО это не совсем баг, а скорее недоделка, которых в лазаре и без того куча. Честно говоря, я не знаю что с этим делать. Просить доделать я не буду, потому как релиз 1.0 хочется уже в этом году или, в крайнем случае, в первом квартале следующего. С другой стороны, мириться с таким положением дел тоже невозможно (к примеру с недоступностью DataModule в дизайне). Так что вопрос остаётся открытым.хоть редактора полей DataSet-а нет всёже наседники TField в датасетах создаются
- Сергей Смирнов
- энтузиаст
- Сообщения: 595
- Зарегистрирован: 28.04.2005 13:23:25
- Откуда: Москва
- Контактная информация:
