Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.037 c
15-1194543809
@!!ex
2007-11-08 20:43
2007.12.09
Настройка марщрутизатора


6-1175434020
Lyberzon
2007-04-01 17:27
2007.12.09
Как отправить на печать документ из TWebBrowser?


15-1194560860
Умка
2007-11-09 01:27
2007.12.09
Помогите!


11-1181305391
=BuckLr=
2007-06-08 16:23
2007.12.09
PStrList и Юникод


15-1194027609
Черный Шаман
2007-11-02 21:20
2007.12.09
Мы ведем работы по созданию искусственного интеллекта





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский