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

Вниз

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

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

Наверх





Память: 0.54 MB
Время: 0.006 c
2-1250150825
tytus
2009-08-13 12:07
2009.10.18
SNMP и Delphi 2009 - непонятки с указателем


2-1250155374
Сергей_Власов
2009-08-13 13:22
2009.10.18
Провести линию параллельно заданной через заданные координаты


2-1250593303
Miklyha
2009-08-18 15:01
2009.10.18
Не срабатывает Form1.Close;


15-1247399936
xayam
2009-07-12 15:58
2009.10.18
Обновился DMSearch (поисковик по делфимастеру)


2-1250081231
Dmitry1987
2009-08-12 16:47
2009.10.18
TADOTable





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