Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.16;
Скачать: CL | DM;

Вниз

Версия 2.16   Найти похожие ветки 

 
Vladimir Kladov   (2005-10-17 19:09) [0]

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

                     Новости от 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 = глюкодром :) )


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

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

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

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


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

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 20:06) [3]

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

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...

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


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

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

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


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

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


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

> 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}


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

Привет...
При добавлении 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


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

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

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


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

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


 
GMax   (2005-10-18 13:28) [10]

кстати, KolAdd меняется, в ней тоже номер версии надо бы править.

и может лучше распространять её с KOL в одном архиве, раз уж она является его неотъемлимой частью ?


 
GMax   (2005-10-18 14:15) [11]

забыл сказать,
в KOL есть OpenDirDialog, так вот,
в оригинальном Win32API, в CallBack возвращается Handle окошка выбора каталога, как я понял, а в KOL-версии приходит ссылка на объект KOLOpenDirDialog, из которого никакого Handle"a не извлечь. и, соответственно, ничего в окошке не нарисовать.
а жаль....


 
Vladimir Kladov   (2005-10-18 16:43) [12]

Добавлю DialogWnd - нет проблем.

про KOLadd я уже говорил - мне удобнее держать его отдельно. Если он меняется - отдельно его обновлять. Если меняется основной архив - на 24К меньше выкладывать.


 
fellix   (2005-10-18 16:59) [13]

> Vladimir Kladov   (18.10.05 16:43) [12]
> "про KOLadd я уже говорил - мне удобнее держать его отдельно"

Но тогда желательно, чтобы там лежала та же версия KOLadd, что и KOL/MCK. А то сейчас, например, выложены KOL/MCK 2.10, а KOLadd - обновленный до 2.15 (хоть и написано 2.10).


 
GMax   (2005-10-19 00:35) [14]

2felix: внутри вообще написано 2.04 :)

2Vladimir: а что-нибудь приведённое к TControl можно сделать, чтобы пользоваться KOLовскими New... ? или это потянет за собой множество усложнений ?


 
SPeller ©   (2005-10-19 02:09) [15]

GMax   (19.10.05 0:35) [14]
2Vladimir: а что-нибудь приведённое к TControl можно сделать, чтобы пользоваться KOLовскими New... ?

Статьи почитай, всё описано.


 
GMax   (2005-10-19 13:34) [16]

2SPeller:
какие именно статьи ? окресности обшарил, не нашёл. ткни носом, плз.
конкретно, хотелось бы именя handle какого-то окна, рисовать на нём KOLовские контролы...


 
ECM ©   (2005-10-19 13:46) [17]

http://bonanzas.rinet.ru/WritingComp.htm


 
ECM ©   (2005-10-19 13:49) [18]

P.S.
И вообще почитай все на http://bonanzas.rinet.ru/r_docs.htm
в разделе "Статьи"


 
GMax   (2005-10-19 15:25) [19]

ECM, там я уже был.

и где там "имея handle(HWND) какого-то окна(не обязательно своего), рисовать на нём KOLовские контролы..." ?


 
ECM ©   (2005-10-19 15:34) [20]


> ECM, там я уже был.

Из Ваших постов это было не очивидно...:)
http://happy.kiev.ua/smart-questions-ru.html

Я думаю в общем случае - никак...
Точно так же как и с VCL.

Разве что перехватить отрисовку...


 
GMax   (2005-10-19 15:54) [21]

вот это уже ответ по существу :)


 
ECM ©   (2005-10-19 16:37) [22]

тут  рядом подсказали ...:)
http://lib.align.ru/book/win/12514.html


 
GMax   (2005-10-19 20:42) [23]

старый хороший рассказ :)
однако, боюсь, что он выходит за топик, т.к. (позволю себе процитировать себя же :) ...

MK. в KOL есть OpenDirDialog, так вот,
в оригинальном Win32API, в CallBack возвращается Handle [...], а в KOL-версии [...] никакого Handle"a не извлечь. и, соответственно, ничего в окошке не нарисовать.
VK. Добавлю DialogWnd - нет проблем.
MK. а что-нибудь приведённое к TControl можно сделать, чтобы пользоваться KOLовскими New... ?

как это противоречит окончательной версии вопроса

имея handle(HWND) какого-то окна(не обязательно своего), рисовать на нём KOLовские контролы... ?

"как хорошо уметь читать,
не надо к маме приставать,
не надо бабушку трясти...." :)

а по теме, рисование c помощью винапи прекрасно проходит. только желательно кроме хендла выдавать ещё и другие BrowseCallbackProc параметры


 
ECM ©   (2005-10-19 21:14) [24]


> только желательно кроме хендла выдавать ещё и другие BrowseCallbackProc
> параметры

Флаг в руки! Делайте, проверяйте, вносите предолжения Кладову...
За Вас делать врядли кто-то будет - тут принцип такой кому это нужно тот и реализует  (тем более догадаться что скрывается за понятием
> другие BrowseCallbackProc параметры

нужны телепатические способности)


 
GMax   (2005-10-19 21:50) [25]

да я ведь не настаиваю. есть у Кладова время на реализацию - большое ему спасибо. нету - сам что-нибудь сделаю. в конце концов, выдерну из ShellObj. вопрос-то не в том совсем. я не знал, есть ли возможность сделать на KOL необходимое мне. о том и спросил. нету - сделаю по-другому.

а для "другие BrowseCallbackProc параметры" телепатических способностей не нужно, достаточно знать о чём разговор или посмотреть соответствующую статью MSDN (SHBrowserForFolder). Это если есть желание разобраться.
Если же нет, то, конечно, можно постить ругательные сообщения :)
повторюсь ещё разок на всякий случай, я не настаиваю :)


 
Vladimir Kladov   (2005-10-20 09:12) [26]

нехорошо навешивать на opendirdialog свои контролы. В следующей версии виндов он опять поменяется, и придется вам прогу переписывать. К тому же он СТРАШНО медленно работает. Проще сделать тогда полностью свой диалог.


 
GMax   (2005-10-20 14:45) [27]

знаю что нехорошо, мало того. сообщение об инициализации у диалога есть, а об уничтожении - нету, и это составляет лишнюю проблему.
но очень уж просили. тем более, что это не только под конкретную винду(w2k), но и под конкретных людей и все сложности с апгрейдом они берут на себя :)


 
Reset   (2005-10-26 16:14) [28]

А историю обновлений где можно посмотреть?
Т.е. что именно и в какой версии было исправлено?


 
ECM ©   (2005-10-26 16:21) [29]

http://bonanzas.rinet.ru/r_news.htm



Страницы: 1 вся ветка

Текущий архив: 2006.07.16;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.032 c
15-1150386238
kaif
2006-06-15 19:43
2006.07.16
Футбол. Наемники. Кто как относится к этой практике?


8-1138909150
Flint-1983
2006-02-02 22:39
2006.07.16
mp3 файлы


15-1149946886
Ламот
2006-06-10 17:41
2006.07.16
Диск D: был да сплыл...


1-1149523008
Valerio
2006-06-05 19:56
2006.07.16
Как правильно описать свойство класса?


10-1121850324
serjufa
2005-07-20 13:05
2006.07.16
повернуть ячейку со словом на 45 .