Dilma писал(а):
на самом деле лучше разделить.Посчитал не стоит, Insert прекрасно работает и как Add, так что вот что получилось. Скорость весьма приличная
procedure ThiMTStrTbl.ActionItm; // проверен
var
Row, Col, iconum: integer;
fd: PData;
begin
case Data.Data_type of
data_null: exit;
end;
Row := Control.Count;
case Mode of
ITM_INSERT, ITM_REPLACE:
begin
Row := ReadInteger(Data, Null);
if (Row > Control.Count - 1) then exit;
end;
end;
Col := 0;
Control.LVItemInsert(Row, ');
if (Assigned(SmIlist) and (Control.LVStyle <> lvsIcon)) or
(Assigned(LgIlist) and (Control.LVStyle = lvsIcon)) then
iconum := ReadInteger(Data, Null)
else
iconum := I_SKIP;
while Col < Control.LVColCount do
begin
Control.LVSetItem(Row, Col, ReadString(Data, Null), iconum, [], I_SKIP, I_SKIP, 0);
inc(Col);
end;
case Data.Data_type of
data_null: exit;
end;
new(fd);
FillChar(fd^, sizeof(TData), 0);
CopyData(fd, @Data);
Control.LVItemData[Row] := cardinal(fd);
end;
Проверил, действительно LVItems никакого выигрыша не дает в сравнении с LVSetItem. Мне кажется, не стоит менять алгоритм, после оптимизации, проверка наличия иконок мало влияет на быстродействие, на уровне погрешности системы