Текущий архив: 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