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

Вниз

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

 
Vladimir Kladov ©   (2008-01-19 17:00) [0]

Новости от 19-Jan-2007 (KOL & MCK v2.86)

[*] KOL: символ условной компиляции TOOLBAR_FORCE_CHILDALIGN больше не
действует  для  Win98  т.к. может там приводит к краху приложения. При
создании  совместимых  с  Win9x  приложений,  избегайте  размещения на
инструментальной линейке выравниваемых дочерних контролов.

[+]  Добавлены  метод  TWStrList.Last  и  функция  WCharIn.  В  методе
TWStrList.MergeFromStream,  обеспечивается  удаление  ведущего символа
$FEFF    при    загрузке   текста   Unicode   из   файла.   В   методе
TWStrList.SetText, обеспечивается терминирующий символ 0.

[*]  UNICODE_CTRLS:  может  теперь комбинироваться с символом USE_PROP
(константы ID_SELF и ID_PREVPROC объявлены как KOLString).

[-] Для UNICODE_CTRLS, исправлено свойство TOpenDirDialog.InitialPath.

[+]   Добавлены   функции:  Scrollbar_GetMinPos,  Scrollbar_SetMinPos,
Scrollbar_SetAll,       Scrollbar_GetMaxPos,      Scrollbar_SetMaxPos,
Scrollbar_GetCurPos,     Scrollbar_SetCurPos,     Scrollbar_SetPageSz,
Scrollbar_GetPageSz,  Scrollbar_SetLineSz,  Scrollbar_GetLineSz  - для
использования вместе с модулем ToGRush в дуальном коде.

[*] IndexOfChar, IndexOfStr изменены и понимают #0 как обычный символ,
не обязательно завершающий строку.

[-] MCK: при генерации кода для установки нестандартного цвета (Color)
добавлено  приведение  типа  для  предотвращения выдачи предупреждения
компилятором.

[-]   Дл  случаев,  когда  CanResize  =  false  или  запрещены  иконки
минимизации   и/или  максимизации  формы,  так  же  окну  отправляется
сообщение   WM_INITMENU,   что   обеспечивает   корректное  запрещение
соответствующих пунктов системного меню.

[+]  Свойство  LikeSpeedButton  обеспечено  для  зеркальных  контролов
TKOLCheckBox,  TKOLRadioBox, и теперь может быть обеспечено для любого
потомка  TKOLCustomControl  простым  перечислением  свойства  в списке
публикуемых.

[*] Обновлены компоненты TKOLGif, TKOLPng.


 
=BuckLr= ©   (2008-01-19 18:01) [1]

Хорошее обновление. Спасибо


 
Compiler ©   (2008-01-19 19:08) [2]

Исправьте, пожалуйста, Parse(). При Separators равном одному символу все работает, а при двухсимвольном (напр #13#10) разделителе глючит. Необходимо заменить Delete( S, 1, Pos ) на Delete( S, 1, Pos+Length(Separators)-1 ). Посмотрите, может меня глючит?. Версия KOL 2.83.


 
Jon ©   (2008-01-19 19:36) [3]


> [-]  Дл  случаев,  когда  CanResize  =  false  или  запрещены
> иконки минимизации   и/или  максимизации  формы,  так  же  
> окну  отправляется сообщение   WM_INITMENU,   что  
> обеспечивает   корректное  запрещение соответствующих пунктов
> системного меню.



> [-] For cases when CanResize is false or minimize or maximize
> icon are disabled, also a code is generated which sends
> WM_INITMENU to a form window handle at startup. This provides
> correct disabling of correspondent system menu items as
> well.


Sorry - still does not work. I still have to add WM_INITMENU to disable maximize menu item:


CanResize := False;
Perform(WM_INITMENU,0,0);


Problem only on first click of form system menu. Click on task bar icon is ok.


 
Vladimir Kladov ©   (2008-01-19 20:01) [4]

В Parse нет многоимвольных сепараторов. Это просто множество символов, из которых первый найденный считается разделителем.


 
Vladimir Kladov ©   (2008-01-19 20:04) [5]

System menu:
For me it works. Check please if WM_INITMENU performed in _1.inc file.


 
Jon ©   (2008-01-19 20:45) [6]


> System menu:
> For me it works. Check please if WM_INITMENU performed in _1.inc file.


I do not use MCK. With this simlpe KOL test, restore and maximize are incorrect.

program test;

uses
 Windows, Messages, KOL;

begin
 Applet := NewForm(nil,"Test");
 Applet.CanResize := False;
//  Applet.Style := Applet.Style and not WS_MAXIMIZEBOX;    //remove to fix
//  Applet.Perform(WM_INITMENU,0,0);                                //remove to fix
 Run(Applet);
end.


 
Vladimir Kladov ©   (2008-01-19 21:20) [7]

Without MCK, it must be called since several different reasons are there in several possible combinations. In MCK, just Perform(WM_INITMENU,... generated and run.


 
MTsv DN   (2008-01-19 21:35) [8]

В начале этого года была плановая смена пароля на сервере www.kolnmck.ru... С хозяином сайта Гэндальфом связаться не могу...надеюсь что пока... Т.ч. обновления пока не ожидается :(


 
Compiler ©   (2008-01-19 22:34) [9]

> Vladimir Kladov ©   (19.01.08 20:01) [4]
> первый найденный считается разделителем.

И удаляется только он один, а остальные остаются.
Пример:
const
 br=#13#10;
var
 s:string;
begin
s:="Один"+br+"Два"+br+"Три";
Showmessage(parse(s,br));//Должно быть Один, возвращается Один
Showmessage(parse(s,br));//Должно быть Два , возвращается пустота
Showmessage(parse(s,br));//Должно быть Три , возвращается Два
end;


 
Elec3C ©   (2008-01-20 00:18) [10]


> WM_INITMENU

За это спасибо.


 
Vladimir Kladov ©   (2008-01-20 09:41) [11]

И удаляется только он один, а остальные остаются.


Так и должно быть. Для многосимвольных разделитей напишите свой parse.


 
D[u]fa   (2008-01-20 12:37) [12]

Новости от 19-Jan-2007 (KOL & MCK v2.86)

=)


 
Jon ©   (2008-01-25 19:29) [13]

In KOL.PAS line 33228:

    fDefWndProc := {$ifdef FPC21}@{$endif}Params.WindowClass.lpfnWndProc;

Is FCP21 correct? I think it should be {$ifdef FPC}


 
_vadim   (2008-01-28 09:47) [14]

Если кому интересно.
Версия 2.86 нормально компилируется в FreePascal вот с такой доработкой:
1. В файле koldef.inc:
- перед строчками

{$IFDEF FPC}
{------------------------------------
by Thaddy de Koning:

поставить

{$DEFINE FPC}
{$DEFINE VER2}

(Рекомендую работать именно с FreePascal версии 2)
В результате получается:

{$DEFINE FPC}
{$DEFINE VER2}
{$IFDEF FPC}
{------------------------------------
by Thaddy de Koning:

2. В файле kol.pas, в той строчке, которую указал Jon:

fDefWndProc := {$ifdef FPC21}@{$endif}Params.WindowClass.lpfnWndProc;

изменить {$ifdef FPC21} на {$ifdef FPC}:

fDefWndProc := {$ifdef FPC}@{$endif}Params.WindowClass.lpfnWndProc;

Теперь у меня компилируется без ошибок.
Но с кучей варнингов... :)
Компилятор FPC 2.2.0.


 
Vladimir Kladov ©   (2008-01-28 15:19) [15]

Символы условной компиляции для того и придуманы, чтобы их можно было задавать не модифицируя исходный файл. В опциях проекта, например, или в командной строке компилятора. FPC21 отличается от FPC из-за бага в FPC2.0, который был исправлен в 2.1. Соответственно, надо ставить оба символа в FPC выше 2.0.


 
_vadim   (2008-01-29 10:00) [16]

Тогда поправка к моему предыдущему постингу. :)
Файл kol.pas не править, а в файл koldef.inc добавить DEFINE:

{$DEFINE FPC}
{$DEFINE FPC21}
{$DEFINE VER2}


 
D[u]fa   (2008-01-29 12:08) [17]

дык наверное нет директивы на тот случай если юзаете 20 фпц а не 21


 
Barloggg   (2008-01-29 12:36) [18]

в KOL.pas много раз встречается несостыковка

в interface стоит
{$IFNDEF STREAM_COMPAT} const {$ENDIF}
а в implementation стоит
const

без скобок.

строки
25169
25204
25242
25267
25635

бяка всплыла при использовании KOLPNG которая в свою очередь использует KOLZLIB в которой сопсно и используются эти недопереписанные строки.

кстати в сам KOLZLIB надо тогда внести эти директивы компиляции если уж руководствоватсья такой логикой.


 
Barloggg   (2008-01-29 12:37) [19]

о, гм, вижу запись об обновлении KOLPNG :)


 
Barloggg   (2008-01-29 12:48) [20]

и, кстати даты на сайте не обновлены. это я про KOLGIF KOLPNG.

Перечитал внимательно новости. хм. KOLZLIB тоже обновлен. Хорошо, значит из моих слов актуально только про kol.pas


 
Jon ©   (2008-01-30 02:37) [21]

Bug found with ListView.

ListView.OnMouse up does not respond to button up messages.
Instead it responds to mouse double click messages.
Here is a simple demonstration:

program test;

uses
 KOL;

var
 Counter: Integer;

procedure ListViewMouseUp(Dummy: Pointer; Sender: PControl; var Mouse: TMouseEventData);
begin
 Applet.Caption := Int2Str(PControl(Sender).LVCurItem);
end;

begin
 Applet := NewForm(nil,"Test");
 with NewListView(Applet,lvsDetail,[lvoGridLines,lvoRowSelect],nil,nil,nil)^ do
 begin
   SetAlign(caClient);
   LVColAdd("Column 1",taCenter,200);
   LVColAdd("Column 2",taCenter,200);
   LVColAdd("Column 3",taCenter,200);
   OnMouseUp := TOnMouse(MakeMethod(nil,@ListViewMouseUp));
   Counter := 0;
   repeat
     LVItemAdd(Int2Str(Counter));
     Inc(Counter);
   until Counter = 100;
 end;
 Run(Applet);
end.


Tested in ASM and PAS version (D7 WinXP).


 
mdw ©   (2008-01-30 18:13) [22]

Заметил небольшой баг в MCK для меню с OwnerDraw := TRUE;
свойство  OwnerDraw := TRUE; устанавливается только для меню верхнего уровня, а вот для подменю нет.
Пока исправил так (жирным - то что добавил):

procedure TKOLMenuItem.SetupAttributesLast(SL: TStringList; const MenuName: String);
var I: Integer;
   MI: TKOLMenuItem;

begin
 if FownerDraw then
   SL.Add( "    " + MenuName + ".Items[ " + IntToStr( ItemIndex ) +
           " ].OwnerDraw := TRUE;" );

 for I := 0 to Count - 1 do
 begin
   MI := SubItems[ I ];
   MI.SetupAttributesLast( SL, MenuName );
 end;

end;


 
Barloggg   (2008-02-04 15:00) [23]

странно. при попытке распарсить пустую строку бабахает. очень странно. а дома работает.


 
shin   (2008-02-11 19:13) [24]

Если обновлять от скаченного KOL&MCK-2.80 до 2.86, то на последнем апдейте kolmck285to286.upd не обновляется mckCtrls.pas, говорит об ошибке


 
=BuckLr= ©   (2008-02-11 19:49) [25]

У меня нормально обновилось с 2,85 на 2,86


 
Rocket ©   (2008-02-24 20:55) [26]

Баг: asm-версия IndexOfStr зацикливается если в S нет Sub. С паскаль-версией всё нормально, возвращает -1.


 
mdw ©   (2008-03-21 12:46) [27]

Что-то Владимир пропал.

Вот еще баг нашел. Не понятно только, как вообще раньше работало, и долго уже....

procedure TWStrList.SetText(const Value: WideString);
....
 L := (Length( Value ) + 1) * Sizeof( WideChar );
 GetMem( fText, L );
 System.Move( Value[ 1 ], fText^, L );

 fText[ L+1 ] := #0; // Вот здесь падает, что и не удивительно, т.к #0 заносится куда-то в двое дальше длины строки

 fTextBufSz := Length( Value );
....

Предлагаю такое исправление:
procedure TWStrList.SetText(const Value: WideString);
....
 fTextBufSz := Length( Value );
 L := (fTextBufSz + 1) * Sizeof( WideChar );
 GetMem( fText, L );
 System.Move( Value[ 1 ], fText^, L );
 fText[ fTextBufSz ] := #0;
....


 
Vladimir Kladov ©   (2008-03-21 18:45) [28]

Не пропал. Не дождётесь.

Версия 2.87:

             Новости от 21марта 2008 (KOL & MCK v2.87)

[+]    Добавлены    функции    NextPowerOf2,   ToRadix,   FromRadiStr,
InsertSeparators, Str2File.

[*]  UNICODE_CTRLS:  обновлены  функции  IndexOfChar, IndexOfCharsMin,
IndexOfStr (с использованием типа KOLString).

[+]  Добавлены функции CrackStack_MapInResource и CrackStack_MapInFile
(могут использоваться при отладке).

[-] Исправлена функция NormalizeUnixText.

[-]  Свойство  TStream.Size  исправлено  для  memory stream для случая
присваивания значения 0 пустому потоку данных.

[+] Исправлена функция TWStrList.SetText (by mdw).


 
MTsv DN   (2008-03-21 19:43) [29]

> Не пропал. Не дождётесь.
Гы...


 
MTsv DN   (2008-03-23 16:16) [30]

Vladimir Kladov ©   (21.03.08 18:45) [28]
>
> Версия 2.87:

Владимир, подключите UNICODE_CTRLS. У меня 8 ошибок сразу выпало...


 
MTsv DN   (2008-03-23 16:22) [31]

1. function CrackStack_MapInResource( const MapName: String; Max_length: Integer; HandleSuspiciousAddresses: Boolean ): String;
Строка:
 Resource2Stream( MapStrm, hInstance, PChar( MapName ), RT_RCDATA );
2е ошибки: несоответствие типов Char и WideChar... Еще насколько я понимаю надо в функции, String на KOLString заменить...

2. function ToRadix( number: Radix_Int; radix: Integer; min_digits: Integer ): KOLString;
Ошибка: несовпадает объявление.

3. function InsertSeparators( const s: KOLString; chars_between: Integer; Separator: KOLChar ): KOLString;
Ошибка: несовпадает объявление.

4. function IndexOfChar( const S : KOLString; Chr : KOLChar ) : Integer;
Строка:
  F := StrScanLen( P, Chr, Length( S ) );
Ошибка: несоответствие типов Char и WideChar...


 
MTsv DN   (2008-03-23 16:35) [32]

Вообще функция IndexOfChar как то странно поддержку UNICODE осуществляет...
function IndexOfChar( const S : KOLString; Chr : KOLChar ) : Integer;
var P, F : PChar;
begin
  P := PChar( S );
  {$IFDEF INPACKAGE}
  F := StrScan( P, Chr );
  {$ELSE}
  F := StrScanLen( P, Chr, Length( S ) );
  {$ENDIF}
  Result := -1;
  if (F = nil) or (S = "") then Exit;
  Result := Integer( F ) - Integer( P )
         {$IFDEF INPACKAGE} + 1 {$ENDIF};
  if {(Result > Length(S)) or} (S[ Result ] <> Chr) then
    Result := -1;
end;

Кроме объявления ничего и нет. В самом начале строка S - WideString приводится к PChar...да и потом Ansi-версия StrScanLen откуда-то взялась...


 
MTsv DN   (2008-03-24 07:35) [33]

Еще один вопрос.

А чем собственно результат IndexOfChar(S, Chr) отличается от Pos(Chr, S)? Или я чего-то недопонимаю?

В любом случае, в 2.87 IndexOfChar не работает с UNICODE.



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

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

Наверх




Память: 0.56 MB
Время: 0.011 c
15-1250312595
Kostya
2009-08-15 09:03
2009.10.18
Параметры запуска программы


1-1219767772
Dr.Andrew
2008-08-26 20:22
2009.10.18
При переключении между чекбоксами - ошибка Stack overflow.


15-1250541003
Юрий
2009-08-18 00:30
2009.10.18
С днем рождения ! 18 августа 2009 вторник


1-1220342126
Vlad Oshin
2008-09-02 11:55
2009.10.18
Как получить список dll, которые использует мое приложение?


2-1250058131
Sergey2
2009-08-12 10:22
2009.10.18
деление без остатка