Текущий архив: 2005.11.13;
Скачать: CL | DM;
Вниз
Опасен ли CM_RECREATEWND? Найти похожие ветки
← →
Mister Twister (2005-09-10 22:03) [0]В моей проге заполняется ListView:
MyListView.Items.BeginUpdate;
try
... (здесь заполнение)
finally
MyListView.Items.EndUpdate;
end;
SendMessage(MyListView.Handle, CM_RECREATEWND, 0, 0);
Хотелось бы узнать, насколько корректен вызов CM_RECREATEWND после заполнения списка?
Нет ли тут подводных камней?
← →
Турист (2005-09-10 23:15) [1]Может быть это "подводные камни" ?
{ ComCtrls.pas }
procedure TCustomListView.CreateWnd;
procedure ReadCols;
var
Reader: TReader;
begin
if FColStream = nil then Exit;
Columns.Clear;
Reader := TReader.Create(FColStream, 1024);
try
Reader.ReadValue;
Reader.ReadCollection(Columns);
finally
Reader.Free;
end;
FColStream.Destroy;
FColStream := nil;
end;
begin
inherited CreateWnd;
ResetExStyles;
SetTextBKColor(Color);
SetTextColor(Font.Color);
SetAllocBy(AllocBy);
if FMemStream <> nil then
begin
Items.BeginUpdate;
FReading := True;
try
Columns.Clear;
FMemStream.ReadComponent(Self);
FMemStream.Destroy;
FMemStream := nil;
if OwnerData then Items.Count := FOwnerDataCount;
if FCheckboxes then RestoreChecks;
ReadCols;
Font := Font;
finally
Items.EndUpdate;
FReading := False;
end;
end;
Columns.UpdateCols;
if (LargeImages <> nil) and LargeImages.HandleAllocated then
SetImageList(LargeImages.Handle, LVSIL_NORMAL);
if (SmallImages <> nil) and SmallImages.HandleAllocated then
SetImageList(SmallImages.Handle, LVSIL_SMALL);
if (StateImages <> nil) and StateImages.HandleAllocated then
SetImageList(StateImages.Handle, LVSIL_STATE);
DoAutoSize;
end;
procedure TCustomListView.DestroyWnd;
begin
if FMemStream = nil then
FMemStream := TMemoryStream.Create
else
FMemStream.Size := 0;
if OwnerData then FOwnerDataCount := Items.Count;
FMemStream.WriteComponent(Self);
FMemStream.Position := 0;
if FCheckboxes then
SaveChecks;
inherited DestroyWnd;
end;
Страницы: 1 вся ветка
Текущий архив: 2005.11.13;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.029 c