Текущий архив: 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.53 MB
Время: 0.01 c