![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Версия 2.16 [Delphi, Windows]
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