Форум: "KOL";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
ВнизВерсия 2.61 Найти похожие ветки
← →
Vladimir Kladov (2007-05-17 19:15) [0]
Новости от 17 мая 2007 (KOL & MCK v2.61)
[+] Добавлена функция: ExePath.
[*] Еще несколько функций переведено на ассемблер: ShowMsg,
IncludeTrailingChar, ExtractFileNameWOExt, ReplaceExt, GetTempDir,
CreateTempFile.
[-] UNI Некоторые изменения для UNICODE_CTRLS:
- GetStartDir (исправлен передаваемый системе размер буфера для
строки);
- конструкции, подобные{$IFDEF UNICODE_CTRLS} MessageBoxW {$ELSE}
MessageBoxA {$ENDIF} ( ... устранены где это возможно (т.к. они
объявлены соответствующим образом в KOL_Unicode.inc).
[-] Исправлена функция RegKeyGetSubkeys (последний символ подкюча
обрезался).
[-] Метод TMenu.Destroy - исправлено Галковым.
[-] Метод TTimer.SetEnabled (Pascal-версия) исправлен, чтобы в
точности работал как asm-версия (таймер не включается, если переменная
Applet еще или уже равна nil, для случая, когда определен символ
TIMER_APPLETWND).
[-] TBitmap.GetHandle: добавлен вызов fDetachCanvas. Когда Handle
требуется для передачи в некоторые функции API, он не должен быть
присоединен ни к какому контексту DC, иначе фукнции могут не работать.
Этот вызов устраняет проблему.
[-] Метод TBitmap.LoadFromStreamEx исправлен для изображений,
упакованных RLE4 и RLE8: память для DIB не была проинициализирована
(аналогичный баг наблюдается в стандартном Промотре в XP :) ). Для
большей скорости при работе с большими картинками инициализация памяти
делается только для RLE-упакованных битмапов.
[-] !!! Метод TBitmap.Convert2Mask исправлен для форматов pf24bit и
pf32bit. Вместе с небольшим изменением в KOLGRushControls, это
исправляет окончательно прозрачность для GrushCheckbox и GrushRadiobox
когда разрешение рабочего стола составляет 64K цветов.
[-] TBitmap.CopyToClipboard: предыдущее исправления для формата
pf24bit отменено (требуется исправление только для формата pf32bit,
тогда как для pf24bit это приводит к тому, что старые приложения
вообще отказываются получать картинку из буфера обмена).
[*] Изменения в KOLadd.ShowQuestionEx:
1. Если не определять символ NO_CHECK_STAYONTOP, то активная форма
проверяется на предмет StayOnTop и если да, то вопрос так же
появляется в режиме StayOnTop=true;
2. Если не определять символ NOT_ALLOW_EXTRACT_TITLE, то заголовок для
диалога извлекается из самого сообщения (начало сообщения должно иметь
вид "!titlestring!");
[*] MCK Изменения в MCK: функция RemoveSpaces используется для
проверки сигнатуры MCK (для устранения различий, внесенных
авто-форматирующим софтом).
[*] Lnk Изменения в Lnk.pas:
1. Добавлена функция FileTypeReg2Ex, которая работает точно так же,
как процедура FileTypeReg2, но при этом формирует и возвращает строку
с протоколом всех изменений в реестре. И добавлена процедура
FileTypeUnreg, которая может использовать такую строку для отката всех
изменений, сделанных функцией FileTypeReg2Ex;
2. Изменена функция GetSystemFolder - всегда включает завершающий
слэш.
[*] GRush Изменения в ToGRush.pas:
1. Если только не объявлен символ TOGRUSH_NO_MESSAGEBOX, все вызовы
MessageBox и основанные на нем (MsgBox, ShowMessage, ShowMsg)
перенаправляются к ShowQuestionEx (которая уже использует ToGRush,
если определен символ USE_GRUSH), так что сообщения выглядят
"принадлежащими" приложению, а не системе;
2. Если только не объявлен символ TOGRUSH_NO_SCROLLBARS, фон для
контрола типа scrollbar изменяется (но не для встроенных линеек
прокрутки некоторых окон, вроде мемо).
← →
homm © (2007-05-17 20:06) [1]> Вместе с небольшим изменением в KOLGRushControls
Эти исправления тоже где-то выложены?
← →
Vladimir Kladov (2007-05-17 20:26) [2]нет, но я отправил письмом. Не пришло еще наверное.
← →
homm © (2007-05-17 20:44) [3]
{$IFDEF NOT_IMMIDIATLYONLY}
{$IFNDEF FIX_16BITMODE} //*****
if UseDIB then begin
TBM := NewDIBBitmap(W, H, pf32bit);
Bitmap.Draw(TBM.Canvas.Handle, 0, 0);
Bitmap.Free;
Bitmap := TBM;
end;
{$ENDIF FIX_16BITMODE} //*****
{$ENDIF NOT_IMMIDIATLYONLY}
Bitmap.RemoveCanvas;
//Tag := Tag + 1;
end;
Тогда уж и так тоже (конец той-же процедуры).
Только это помоему должно по быстродействию ударить немного. Раньше фишка была, что большие поверхности для панелей хранились в видеопамяти, теперь этого не будет :(
← →
D[u]fa © (2007-05-17 21:12) [4]и как всегда не обновляется....
← →
D[u]fa © (2007-05-17 21:14) [5]хм.. а после того как стер старые *.old бекапы, все обновилось
← →
D[u]fa © (2007-05-17 21:16) [6]если добавлена функция ExePath то тогда ParamStr(0) отпдает
← →
Vladimir Kladov (2007-05-17 21:27) [7]Это понятно, что по быстродействию хуже. Но ведь нужна прозрачность, а при столе 64К цветов не выходит. Можно ограничить "маленькими" контролами, типа label, checkbox и radiobox (меня собственно последние 2 и подвигли на это: как-то неприятно видеть, что они не хотят принять Transparent). Возможно, другое решение можно найти, если "подогнать" сразу цвет прозрачности, чтобы он не искажался форматом pf16bit. Т.е. отбросить младшие 3 бита у каналов R и B и 2 бита у G: color := color and $F8FCF8;
← →
Vladimir Kladov (2007-05-17 21:32) [8]ParamStr(0) лучше не пользоваться. Что-то такое проскакивало, что при таком пути к экзешнику из командной строки, могут возникнуть неприятности, если он был запущен из текущей директории в FARе, например. При этом текущая директория для самого экзешника уже может отличаться. В общем, есть шанс заблудиться. GetModule.... как там дальше - более надежный способ. GetStartDir тоже использует этот способ.
← →
homm © (2007-05-17 22:06) [9]Преобразовать цвет в виндовый 16 бит обрезанием не получиться, иначе в 16 битах не было бы либо абсолютно черного $00 либо абсолютно белого $ff. Потому где-то я и нашел функцию, которая до сих пор в модуле лежит. Называеться AlignColorTo16Bit.
Как вариано предлагаю так сделать:
if UseDIB then
Bitmap := NewDIBBitMap(W, H, pf32bit);
else
Bitmap := NewBitMap(W, H);
а вот это вообше убрать тогда:{$IFDEF NOT_IMMIDIATLYONLY}
if UseDIB then begin
TBM := NewDIBBitmap(W, H, pf32bit);
Bitmap.Draw(TBM.Canvas.Handle, 0, 0);
Bitmap.Free;
Bitmap := TBM;
end;
{$ENDIF NOT_IMMIDIATLYONLY}
Вообще насколько помню, преобразование в DIB было в конце как раз потому, что иначе глючело, видимо исправили «наоборот»
а FIX_16BITMODE для этого лучше не использовать, она для другово (градиент в NT рисуеться лесенкой даже в 32 бит), используйте FIX_DRAWTRANSPARENT.
← →
MTsv DN © (2007-05-18 08:28) [10]> [-] UNI Некоторые изменения для UNICODE_CTRLS:
Версия 2.61, режим UNICODE. Сразу "посыпались" ошибки. Очень много, вот некоторые:
1. Функция DiskFreeSpace,GetVersionEx
( POSVersionInfoA( @ V )^ ); // bug in Windows.pas !
POSVersionInfoA -> POSVersionInfo
2. Функцияfunction ImageList_LoadBitmap(Instance: THandle; Bmp: PKOLChar;
CX, Grow: Integer; Mask: TColorRef): HImageList; stdcall;
begin
Result := ImageList_LoadImageA(Instance, Bmp, CX, Grow, Mask, IMAGE_BITMAP, 0);
end;
ImageList_LoadImageA -> ImageList_LoadImage
Ну и так далее...
← →
MTsv DN © (2007-05-18 08:29) [11]> ImageList_LoadImageA -> ImageList_LoadImage
Пардон... Заменить на{$IFDEF UNICODE_CTRLS}ImageList_LoadImageW{$ELSE}ImageList_LoadImageA{$ENDIF}
← →
MTsv DN © (2007-05-18 08:32) [12]А также: procedure DrawFormattedText( Ctl: PControl; DC: HDC; var R: TRect; Flags: DWORD {EditCtl: Boolean} );
Windows.DrawText( DC, PKOLChar( Ctl.Caption ), Length( Ctl.Caption ), R,
DrawText -> {$IFDEF UNICODE_CTRLS}DrawTextW{$ELSE}DrawTextA{$ENDIF}
И чуть ниже:
Windows.DrawText( DC, PKOLChar( Ctl.Caption ), Length( Ctl.Caption ), R, Fmt );
← →
L`Autour © (2007-05-18 10:29) [13]Еще в KOL_ASM.inc надо {$IFDEF UNICODE_CTRLS} поубирать:
{$IFDEF UNICODE_CTRLS}
CALL MessageBoxW
{$ELSE}
CALL MessageBox
{$ENDIF}
{$IFDEF UNICODE_CTRLS}
CALL SendMessageW
{$ELSE}
CALL SendMessage
{$ENDIF}
{$IFDEF UNICODE_CTRLS}
CALL DefWindowProcW
{$ELSE}
CALL DefWindowProc
{$ENDIF}
{$IFDEF UNICODE_CTRLS}
CALL Windows.SendMessageW
{$ELSE}
CALL Windows.SendMessage
{$ENDIF}
← →
L`Autour © (2007-05-18 10:42) [14]Еще неплохо бы перевести
function LVAdd( const aText: String; ImgIdx: Integer; State: TListViewItemState;
StateImgIdx, OverlayImgIdx: Integer; Data: DWORD ): Integer;
в
function LVAdd( const aText: KOLString; ImgIdx: Integer; State: TListViewItemState;
StateImgIdx, OverlayImgIdx: Integer; Data: DWORD ): Integer;
← →
MTsv DN © (2007-05-18 11:35) [15]И "в догонку" для НЕ-UNICODE. В KOL_ASM.INC каждая функция по одному разу...не помню где:
GetSaveFileNameA
GetOpenFileNameA
Shell_NotifyIconA
Во всех убрать "А"
← →
Vladimir Kladov (2007-05-18 14:51) [16]Букву A в asm-verсии постирать забыл. 4 раза, сами поправьте (но обновление будет скоро, может и сегодня).
Еще по GRush-контролам: под NT4 не знаю с какой радости tree view (не прозрачное) положенное на GRushPanel не очищает полностью весь свой фон, область слева, где линии и кнопки +/-, остается залитой цветом родителя панели. Удалось поправить, подложив под tree view панель цвета clWindow - в KOLDirDlgEx (будет с обновлением).
← →
homm © (2007-05-18 15:55) [17]> Еще по GRush-контролам:
Не думаю что это «по GRush контроллам» :)
В кранем случае это по прозрачности, но граши то причем ? :)
← →
Vladimir Kladov (2007-05-18 19:37) [18]
Новости от 18 мая 2007 (KOL & MCK v2.62)
[-] ASM KOL_asm.inc: исправлены вызовы Shell_NotifyIconA,
GetOpenFileNameA, GetSaveFileNameA (похоже, что была положена не та
версия файла, и в нее не вошли вчерашние исправления для
TBitmap.Convert2Mask, теперь исправляюсь).
[-] MCK Исправлена проблема с передвижением вверх контролов на самой
форме, имеющих AnchorBottom = true, при загрузке проекта MCK и при
изменении главного меню.
[-] UNI Метод LVAdd изменен (String -> KOLString).
[+] delphicommctrl.inc: объявлена константа TVM_SETLINECOLOR.
[*] KOLDirDlgEx исправлен для рисования tree view в NT4 в случае
GRush-стиля (с использованием ToGRush). А именно: область линий к
узлам дерева затиралась предварительно фоном формы, вместо фона самого
Tree View.
[+] GRush Дополнения в ToGRush: добавлено опциональное перенаправление
для NewGradientPanel и NewGradientPanelEx в GRushPanel, с поддержкой
большинства стилей заливки (но GRush-контролы заливаются качественнее
в случае рабочего стола 64K цветов).
← →
MTsv DN © (2007-05-18 20:20) [19]Обновление доступно на http://www.kolnmck.ru
← →
Don © (2007-05-21 17:00) [20]в версии 2.62 не исправлены вызовы ImageList_LoadImageA, Windows.DrawText и POSVersionInfoA.
← →
MTsv DN © (2007-05-21 18:27) [21]Угу... Я Владимиру уже скинул UPD-файл...
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.406 c