Главная страница
    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.49 MB
Время: 0.034 c
2-1175763871
inoc
2007-04-05 13:04
2007.04.22
передача массива в процедуру


2-1175751344
vitv
2007-04-05 09:35
2007.04.22
Переброска данных с одной базы в другую


15-1174924673
Knight
2007-03-26 19:57
2007.04.22
У кого какая цветовая схема на эдиторе?


15-1175239220
Ketmar
2007-03-30 11:20
2007.04.22
не дали пообщаться...


2-1175771291
Steep
2007-04-05 15:08
2007.04.22
Icon -> BitMap





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