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

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

BUG: SizeGrip и ASM-версия NewForm


ECM ©   (2005-10-13 15:01:00) 

Отправил письмо Владимиру ...
На всякий случай тут продублирую (вроде завтра версия 2.15 должна появиться...?...) :
Заметил одну неприятность в ASM-функции  NewForm.
(Почему-то в асм-версии пропал SizeGrip в углу статусбара - в PAS все
впорядке)

//[FUNCTION NewForm]
{$IFDEF ASM_VERSION}
function NewForm( AParent: PControl; const Caption: String ): PControl;
...
       INC      [EBX].TControl.fSizeGrip         // fSizeGrip = 1 !!!
       OR       byte ptr [EBX].TControl.fClsStyle, CS_DBLCLKS
       MOV      EDX, offset[WndProcForm]
       CALL     TControl.AttachProc
       MOV      EDX, offset[WndProcDoEraseBkgnd]
       MOV      EAX, EBX
       CALL     TControl.AttachProc
       POP      EDX
       MOV      EAX, EBX
       CALL     TControl.SetCaption
       {INC      [EBX].TControl.fSizeGrip
       INC      [EBX].TControl.fIsForm}
       DEC      WORD PTR [EBX].TControl.fIsForm <- ИМХО:Здесь задумывалось
"одним махом" присвоить FF(TRUE) и fSizeGrip и fIsForm,... НО... в fSizeGrip
УЖЕ сидит 1! Таким образом в WORD PTR(@fIsForm) = 0x0100 и после
декремента там будет 0x00ff, что соответсвует значениям
      fSizeGrip = FALSE(0x00)
      fIsForm   = TRUE (0xFF)
     
Предлагаю закомментировать строку:
       INC      [EBX].TControl.fSizeGrip

Тогда
       DEC      WORD PTR [EBX].TControl.fIsForm
будет работать правильно


GMax   (2005-10-15 23:16:00) [1]

насчёт NAN:
вот именно для этого он и используется - снять чекбокс в DateTimePicker. и не получается - падает на Trunc(NAN) внутри DateTime2SystemTime

кстати, может всё-таки добавить в DateTimePicker  "property SystemTime", чтобы при необходимости избежать излишних преобразований туда-сюда ?


Vladimir Kladov   (2005-10-15 20:40:00) [2]

обновление есть, 2.15.
Вот насчет NAN - я наврное, пропустил. Но там IsNAN используется для установки флага "нет значения" - DTS_NONE=1. Проверю, конечно, что там не так, но уже не в этой версии.
Rpt - все исправлены были в базовом 2.10. От него все обновления теперь должны работать, я перевыложил все от 2.00 до текущей, которые изменились после верификации.


ECM   (2005-10-15 18:12:00) [3]

2Кладов
Напоминаю на всякий случай:
1) проверьте состояние многострадального объявления KOLAction(List) - должно быть объявлено в KOLAdd - его (KOLAdd) имхо лучше перевыложить - последние обновления его не смогли обновить.
2) mck*.inc вызовый Rpt(.., clWhite)


GMax   (2005-10-15 17:39:00) [4]

что-то мне подсказывает, что Вы о моём исправлении DateTime не прокомментировали ничего - могли и забыть :)

@@ -33017,6 +33017,6 @@
procedure TControl.SetDateTime(Value: TDateTime);
var ST: TSystemTime;
begin
-  DateTime2SystemTime( Value, ST );
+  if Not IsNAN(Value) then DateTime2SystemTime( Value, ST );


Vladimir Kladov   (2005-10-15 16:21:00) [5]

выход версии уже вот-вот, я уже описание изменений делаю. Рою форум носом за последнюю неделю, пытаюсь вспомнить, что еще не сделано.


Наверх

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