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

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

Версия 2.16 [Delphi, Windows]


Страницы:   1 2

Vladimir Kladov ©   (2005-10-17 19:09:00) 

Изменений и исправлений для новой версии накопилось достаточно. Версия пошла.

                     Новости от 17 октября 2005

Новости KOL & MCK (v2.16):

[-]KOL:  добалено  свойство  TControl.SystemTime  для  'data picker' и
исправлено  присваивание NAN свойству DateTime. Спасибо за баг-репорт:
GMax.

[*]KOL: функция WndProcMenu объявлена в интерфейсной части KOL.pas, по
предложению  shalex.

[-]KOL:  исправлена компиляция (и установка компонентов MCK) в Delphi2
(не объявлена Get/SetThreadPriorityBoost в Windows.pas)

[-]KOL:   обработчик   события  TControl.OnTVSelChanging  (asm-версия)
исправлен:  возвращаемое  значение интерпретировалось неверно. Спасибо
за баг-репорт: Truf.

[-]KOL:  процедуры  DoDrawChildrenBuffered,  DoDrawDblBuffered       и
WndProcBufferedDraw   изменены   в  процессе  дальнейшего  исправления
рисования  DoubleBuffered   и  Transparent. Символ условной компиляции
DBLBUF_OLD более не используется. Спасибо homm за bug-report и хороший
тестовый проект для отлова багов.
Процедура  WndProcPaint  так же изменена, и fCollectUpdRegion более не
используется.  Если не будет требований на это поле, оно будет удалено
за ненадобностью - в будущем.

[-]KOL:   исправлена   загрузка  битмапов  true  color  закодированных
BI_BITFIELDS  (такой  формат  используется при копировании изображения
рабочего  стола  в  буфере  обмена при нажатии клавиши PrntScrn, когда
текущая глубина цвета - true color). Спасибо за баг-репорт: dvk.

[-]MCK:  сохранение  свойства  Image  исправлено  для  TKOLButton (для
иконки,  VCL.TIcon  почти всегда в процессе загрузки превращает иконку
любого  размера  в  32x32, так что пришлось использовать KOL.TIcon для
исправления этого глюка).
(над этим мне вообще пришлось 3 часа биться. VCL = глюкодром :) )


Vladimir Kladov   (2005-10-18 09:47:00) [21]

Кто бы их в дизайн-тайме рисовал, и где бы они еще брались - сам контрол берет их из ресурса экзешника в ран-тайм, соответственно, отрисовка должна быть другая. А я вообще NOY_KOLCTRLWRAPPER - и Delphi меньше падает. Если PaintType = ptSchematic, там еще и удобнее рулить, и тормозов меньше.


MTsv DN   (2005-10-18 08:49:00) [22]

И еще... Не знаю почему, но в ДизайнТайме картинки на BitBtn не прорисовываются... Может только у меня?.. mckCtrls восстановил до родного 2.16 (только if и then удалил) и пересобрал с ICON_DIFF_WH.

С Уважением MTsv DN


MTsv DN   (2005-10-18 08:44:00) [23]

Привет...
При добавлении ICON_DIFF_WH пакет пересобирается нормально. Однако, после апдейта, получается такой кусок:
begin
    Rpt( 'Button has icon, generating code SetButtonIcon:'#13#10 + Result,
         WHITE );
    if
    {$IFDEF ICON_DIFF_WH}
    (FimageIcon.Width = 32) and (FimageIcon.Height = 32)
    {$ELSE}
    if FImageIcon.Size = 32 then
    {$ENDIF}
    then
    Result := Result + '.SetButtonIcon( LoadIcon( hInstance, ''' +
           ImageResourceName + ''' ) )'
    else
    Result := Result + '.SetButtonIcon( LoadImage( hInstance, ''' +
           ImageResourceName + ''', IMAGE_ICON, ' +
           Int2Str( FimageIcon.Width ) + ', ' + Int2Str( FimageIcon.Height ) +
           ', LR_SHARED ) )'
end

В выделенной строке, if и then надо удалить...

С Уважением MTsv DN


fellix   (2005-10-17 22:54:00) [24]

> MTsv DN   (17.10.05 20:06) [3]

Я пофиксил чуть шире (сделал обе ветви $IFDEF):

    {$IFDEF ICON_DIFF_WH}
    Result := Result + '.SetButtonIcon( LoadImage( hInstance, ''' +
           ImageResourceName + ''', IMAGE_ICON, ' +
           Int2Str( FimageIcon.Width ) + ', ' + Int2Str( FimageIcon.Height ) +
           ', LR_SHARED ) )'
    {$ELSE}
    Result := Result + '.SetButtonIcon( LoadImage( hInstance, ''' +
           ImageResourceName + ''', IMAGE_ICON, ' +
           Int2Str( FimageIcon.Size ) + ', ' + Int2Str( FimageIcon.Size ) +
           ', LR_SHARED ) )'
    {$ENDIF}

и

  {$IFDEF ICON_DIFF_WH}
  Sz := FImageIcon.Width;
  {$ELSE}
  Sz := FImageIcon.Size;
  {$ENDIF}


Vladimir Kladov   (2005-10-17 22:46:00) [25]

Надо в пакет добавить символ компиляции ICON_DIFF_WH, и ни в коем случае НЕ Compile - только BUILD. Я разбирался и с этим и уже внес исправления в описание процедуры UPGRADE для всех Delphi - в readme - будет потом в полном пакете. Только BUILD! Из-за того, что для INPACKAGE должен перекомпилироваться KOL.pas - он ведь входит в design-time пакет, а сам Delphi почему-то не видит, что для пакета опции не те же самые, при которых он компилируется в MCK-проектах (и в чисто KOL-проектах тоже)


SuperCommander   (2005-10-17 21:03:00) [26]

Да, быстро вы соображаете, - я только что ставил 4.16 - и с сожалением упёрся в эти ошибки...
Пришлось поставить назад 2.14 :(
Кстати - только закончил свой проэкт с Thread'ами, и с TreeView'ом, - помучился конешно с WinApi, - но работает :-), а тут смотрю - вы ошибочки пофиксили как раз по этой части :-)

P.$. так держать ;)


MTsv DN   (2005-10-17 20:06:00) [27]

Решение, заменить здесь:

function TKOLButton.GenerateTransparentInits: String;
begin
 asm
   jmp @@e_signature
   DB '#$signature$#', 0
   DB 'TKOLButton.GenerateTransparentInits', 0
 @@e_signature:
 end;
 Result := inherited GenerateTransparentInits;
 if assigned( FimageIcon ) and not FimageIcon.Empty
   {$IFDEF _D2orD3}
      and (FimageIcon.Width > 0) and (FimageIcon.Height > 0)
   {$ENDIF}
 then
 begin
     Rpt( 'Button has icon, generating code SetButtonIcon:'#13#10 + Result,
          WHITE );
     if
     {$IFDEF ICON_DIFF_WH}
     (FimageIcon.Width = 32) and (FimageIcon.Height = 32) then
     {$ELSE}
      FImageIcon.Size = 32 then
     {$ENDIF}
     Result := Result + '.SetButtonIcon( LoadIcon( hInstance, ''' +
            ImageResourceName + ''' ) )'
     else
     {$IFDEF ICON_DIFF_WH}
     Result := Result + '.SetButtonIcon( LoadImage( hInstance, ''' +
            ImageResourceName + ''', IMAGE_ICON, ' +
            Int2Str( FimageIcon.Width ) + ', ' + Int2Str( FimageIcon.Height ) +
            ', LR_SHARED ) )'
     {$ENDIF}
 end
   else
 if Assigned( FimageBitmap ) and not FimageBitmap.Empty then
 begin
   Rpt( 'Button has bitmap, generating code SetBittonBitmap', WHITE );
   Result := Result + '.SetButtonBitmap( LoadBitmap( hInstance, ''' +
          ImageResourceName + ''' ) )';
 end;
 if LikeSpeedButton then
   Result := Result + '.LikeSpeedButton';
end;


и здесь:

procedure TKOLButton.SaveImageIcon(Writer: TWriter);
var Strm: KOL.PStream;
   s, h: String;
   B: Byte;
   Sz: Integer;
begin
 Strm := NewMemoryStream;
 TRY
   {$IFDEF ICON_DIFF_WH}
   Sz := FImageIcon.Width;
   {$ENDIF}
   Strm.Write( Sz, 1 );
   FImageIcon.SaveToStream( Strm );
   {if FImageIcon.Width = 32 then
     ShowMessage( 'wayay SaveImageIcon:32' );}

   SetLength( s, Strm.Size * 2 );
   Strm.Position := 0;
   s := '';
   while Strm.Position < Strm.Size do
   begin
     Strm.Read( B, 1 );
     h := Int2Hex( B, 2 );
     s := s + h;
   end;
   Writer.WriteString( s );
 FINALLY
   Strm.Free;
 END;
end;


Модуль mckCtrls...

Но думаю это не правильно...


MTsv DN   (2005-10-17 19:55:00) [28]

2 Vladimir Kladov
Здравствуйте...
Обновил с 2.15 до 2.16, прошло "без сучка и без задоринки". При перекомпиляции сразу вылетела ошибка...вот здесь (я ничего не добавил и не выкинул):
 begin
     Rpt( 'Button has icon, generating code SetButtonIcon:'#13#10 + Result,
          WHITE );
     if
     {$IFDEF ICON_DIFF_WH}
     (FimageIcon.Width = 32) and (FimageIcon.Height = 32) then
     {$ELSE}
     if FImageIcon.Size = 32 then
     {$ENDIF}
     then  // Здесь лишний "then"
     Result := Result + '.SetButtonIcon( LoadIcon( hInstance, ''' +
            ImageResourceName + ''' ) )'
     else
     Result := Result + '.SetButtonIcon( LoadImage( hInstance, ''' +
            ImageResourceName + ''', IMAGE_ICON, ' +
            Int2Str( FimageIcon.Width) + ', ' + Int2Str( FimageIcon.Height) +
            ', LR_SHARED ) )' // А здесь компилятор говорит, что ни Width, ни Height не существует...
 end


Были еще какие-то ошибки...

С Уважением MTsv DN


MTsv DN   (2005-10-17 19:45:00) [29]

Привет, Всем...

Обновил: KOLnMCK 2.16 + KOLadd (15.10.2005), по адресу: http://www.uus4u.com/download/modules/KOLnMCK.rar

С Уважением MTsv DN


Страницы:   1 2

Наверх

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