Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

Версия 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 вся ветка

Форум: "KOL";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.008 c
2-1151330730
bulavkin
2006-06-26 18:05
2006.07.16
DelphX --- Отобразить спрайт


15-1150515613
Retr
2006-06-17 07:40
2006.07.16
Как вы защищаете свой компьютер от вирусов?


1-1149593869
tasha
2006-06-06 15:37
2006.07.16
WebBrowser


15-1150406602
Ломброзо
2006-06-16 01:23
2006.07.16
Коэффициенты пересчёта


1-1149138873
KygECHuK
2006-06-01 09:14
2006.07.16
Проблемы с SW_SYSCOMMAND





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский