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

Вниз

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

 
Vladimir Kladov   (2006-07-30 21:22) [0]

Новости KOL и MCK (v2.37):
[+]KOL/MCK: добавлены функция LBItemAtPos и свойство LBTopIndex для использования с listbox"ом, автор  ECM .
[-]KOL: некоторые изменения в Scroll Box-элементе, автор  ECM .
[-]KOL: исправлена функция NewToolbar (asm-версия), автор  ECM .
[-]MCK: добавлено создание Popupmenu для MDIChild, автор Дмитрий Матвеев.
[*]KOL: добавлено свойство OpenReadOnly для  TOpenSaveDialog, коллективно.
[-]KOL: метод SetHasBorder исправлен (для более корректного поведения TabStop), автор MTsv DN.
[-]KOL/MCK: использование ActionList исправлено для работы с включенной опцией USE_NAMES (код, генерировавшийся в MCK приводил к исключению AV).
[+]KOL/MCK: добавлены свойства AnchorLeft, AnchorTop и исправлен метод Anchor, автор Sormart.
[*]KOL: метод LVSetItem исправлен, чтобы позволить изменять индекс пиктограммы для любой колонки, автор ... (напомните, пожалуйста, кто автор).


 
GMax   (2006-07-30 22:50) [1]

текущее решение по LVSetItem моё, ECM предлагал вообще от "if Col = 0 then" избавиться


 
L`Autour ©   (2006-07-31 11:30) [2]

Обновление на 2.37 криво работает:
с 2.30 на 2.37 ругается на KOLDirDlgEx.pas,
с 2.36 на 2.37 ругается на mirror.pas


 
MTsv DN ©   (2006-07-31 14:13) [3]

Привет...

Обновление можно скачать с http://www.kolnmck.ru...

С Уважением MTsv DN


 
ANTPro ©   (2006-07-31 22:12) [4]

В версиях 2.30,2.35,2.36,2.37 есть баг в Convert2Mask.(В 1.91 все работает)
Появляется при отрисовке Bitmap"a 640x480x15 (DrawTransparent)

Патч:
///////////////////////////
procedure TBitmap.Convert2Mask(TranspColor: TColor);

...

       MOV  DL, 8
@@32_1: ADD  ESI, 4
       LOOP @@Xloop_pf32bit
@@nextline:
{        TEST DL, DL
       JZ   @@nx1
@@finloop1:
       SHL  AL, 1
       DEC  DL
       JNZ  @@finloop1
       STOSB
@@nx1:            }
       POP  EDX
       INC  EDX
       JMP  @@Yloop
@@exit:
       POP  EDX

...

         end;
       end;
     end;
   END;  
{   if C > 0 then
   begin
     while C > 0 do
     begin
       B := B shl 1;
       dec( C );
     end;
     Dst^ := B;
   end;  }
 end;
 Assign( TmpMsk );
 TmpMsk.Free;
end;
{$ENDIF ASM_VERSION}
///////////////////////////


PS: Мой код делает маску в 2 раза быстрее.


 
D[u]fa   (2006-08-02 12:55) [5]

Маску менять не пробовал, но обновление тоже не работает, скачал комплект с http://www.kolnmck.ru и всё норм =)


 
AndreyRus   (2006-08-02 16:05) [6]


> В версиях 2.30,2.35,2.36,2.37 есть баг в Convert2Mask.(В
> 1.91 все работает)Появляется при отрисовке Bitmap"a 640x480x15
> (DrawTransparent)

А в чем это собственно проявляется?


> Мой код делает маску в 2 раза быстрее.

А где код? Вижу только закомментированный участок функции Convert2Mask.


 
ANTPro ©   (2006-08-02 21:07) [7]

AndreyRus   (02.08.06 16:05) [6]
А в чем это собственно проявляется?

Первые 8 бит НЕ прозрачные

AndreyRus   (02.08.06 16:05) [6]
А где код?

Он пока не держит любой Bitmap Width и/или Height которого не кратны 8


 
AndreyRus   (2006-08-02 23:08) [8]

> Первые 8 бит НЕ прозрачные
8 бит чего?


 
miek ©   (2006-08-03 08:04) [9]

По-прежнему остается глюк с KolButton в not windowed режиме. Если кликнуть на форме, не отпуская перетащить курсор на кнопку и отпустить - она исчезает навсегда:(


 
AndreyRus   (2006-08-03 11:18) [10]


> По-прежнему остается глюк с KolButton в not windowed режиме.

IMHO, смысла в использовании контролов с windowed:= false нет.


 
D[u]fa   (2006-08-03 14:47) [11]

а что это за режим такой?


 
ANTPro ©   (2006-08-03 18:15) [12]

procedure TForm1.Button1Click(Sender: PObj);
var
 BMP:PBitmap;
begin
 BMP:=NewBitmap(0,0);
 BMP.LoadFromFile("BMP.BMP");
 BMP.DrawTransparent(Form.Canvas.Handle,0,0,0);
 BMP.Free;
end;

Если первые 8 бит BMP.BMP будут Черными, то они и остануться черными, а не прозрачными.


 
Vladimir Kladov   (2006-08-03 20:30) [13]

Про глюк с button слышу впервые. Решение простое.

procedure TControl.GraphicButtonMouse(var Msg: TMsg);
var Pt: TPoint;
begin
 CASE Msg.message OF
 WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
   begin
     GraphButtonSetFocus;
     RefInc;
     SetCapture( Parent.Handle );
     Parent.fPushedBtn := @ Self;
     fPushed := TRUE;
     Invalidate;
   end;
 WM_LBUTTONUP:
   begin
     ReleaseCapture;
     Invalidate;
     if fPushed then
     begin
       Pt.X := SmallInt( LoWord( Msg.lParam ) );
       Pt.Y := SmallInt( HiWord( Msg.lParam ) );
       if PtInRect( ClientRect, Pt ) then
         DoClick;
       fPushed := FALSE;
       Parent.fPushedBtn := nil;
       RefDec;
     end;
   end;
 END;
end;


Про прозрачность: этот код все рисует правильно. Черный становится прозрачным. Только черный должен быть именно 0,0,0, а не каким-то еще цветом. Я проверил. Если есть возражения, высылайте битмап, или ссылку дайте, где взять.


 
ANTPro ©   (2006-08-04 00:22) [14]

Bitmap тут не причем

procedure TForm1.Button1Click(Sender: PObj);
var
 BMP:PBitmap;
begin
//  BMP:=NewBitmap(257,257);//Нет бага
 BMP:=NewBitmap(256,256);//Есть
//  BMP:=NewBitmap(257,256);//Нет бага
//  BMP:=NewBitmap(256,257);//Есть
 BMP.DrawTransparent(Form.Canvas.Handle,0,0,0);
 BMP.Free;
end;


 
Vladimir Kladov   (2006-08-04 10:14) [15]

Понятно теперь. Не в битмапе, а в его размере. Я проверял 40х40, там вообше ничего не проявлялось. Вот минимально необходимое исправление.

procedure TBitmap.Convert2Mask(TranspColor: TColor);
asm
...
@@nextline:
       TEST DL, DL
       JZ   @@nx1
       CMP  DL, 8
       JE   @@nx1
@@finloop1:
,,,
end;
{$ELSE ASM_VERSION} //Pascal
procedure TBitmap.Convert2Mask(TranspColor: TColor);
...
   END;
   if (C > 0) and (C < 8) then
...
end;
{$ENDIF ASM_VERSION}


 
ANTPro ©   (2006-08-22 18:43) [16]

Если читать файл только через ReadStr (т.е. по строкам), и если последний байт файла будет равен 13, то прога повиснет :(

Патч:
//[function TStream.ReadStr]
function TStream.ReadStr: String;
...
 if (C <> #10)and(C <> #0) then Position := Position - 1;
...
end;


 
thaddy   (2006-08-22 19:16) [17]

I can confirm this bug.

This generates more efficient code:

if not (C in [ #0,#10] ) then position := position -1;


 
ANTPro ©   (2006-08-22 21:38) [18]

Да действительно не знал ... учту на будущее:

if (C <> #10)and(C <> #0) then Position := Position - 1;
cmp byte ptr [esi],$0a
jz +$16
cmp byte ptr [esi],$00
jz +$11

if not ( C in [ #0,#10] ) then Position := Position - 1;
mov al,[esi]
test al,al
jz +$15
sub al,$0a
jz +$11

Может кому пригодиться :)

PS: Можно ли добавить в KOL возможность выбирать ипользовать ли ActiveX или нет, а то по умолчанию он включается в компиляцию, чем увеличивает размер на 1024 байта. Думаю 1кб {$SMALLEST_CODE} не помешает :)


 
thaddy   (2006-08-22 23:09) [19]

Here"s a very usefull demonstration of this efficient code generation.
It is hard to optimize by hand (the loop!). I have an even faster version for PChars but that would not allow for #0. Try it on a very, very long string!
The compiler is really good at optimizing sets.

Maybe a good, usefull  addition to kol.pas?


Type
Tcharset = set of #0..#255;
// Function returns index of first character found or -1 if
// none of the characters  is found
function IndexOfAny(const s:string;c:TCharset):integer;
var
 i:integer;
begin
 Result := -1;
 for i:= 1 to length(S) do
   if S[i] in C then
   begin
     Result := i;
     Break;
   End;
end;


 
AndreyRus   (2006-08-23 01:42) [20]

Very thanks! Thaddy!



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

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

Наверх




Память: 0.52 MB
Время: 0.067 c
6-1162023817
Sinkler
2006-10-28 12:23
2007.04.22
VPN соеденение


15-1174914604
eXPell
2007-03-26 17:10
2007.04.22
Вот согласно письму - мы потенциальные вирусописатели)))


3-1170353899
Константинов
2007-02-01 21:18
2007.04.22
Как создать пустую базу MS Access?


15-1174896516
Нулевой
2007-03-26 12:08
2007.04.22
Кто такой?


15-1175077376
atruhin
2007-03-28 14:22
2007.04.22
Как перенести данные Outlook 2003