Форум: "Основная";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
ВнизНе работает TlistView.Items.EndUpdate ?? Найти похожие ветки
← →
jack128 (2003-07-08 11:49) [0]День добрый.
Есть такой код
procedure TfmMain.tvDeviceTypesChange(Sender: TObject; Node: TTreeNode);
var
i : integer;
procedure AddNodeDataToListView(Node : TTreeNode);
var
ParamRec : PParamRec;
begin
ParamRec := Node.Data;
with lvParams.Items.Add do
begin
Caption := IntToStr(Index+1);
SubItems.Add(ParamRec^.fullname);
SubItems.Add(ParamRec^.shortname);
if (ParamRec^.paramtype <= high(ParamTypeNames)) and
(ParamRec^.paramtype >= low(ParamTypeNames)) then
SubItems.Add(ParamTypeNames[ParamRec^.ParamType])
else
SubItems.Add("Неизвесный тип");
end;
end;
begin
if Node.Level = 0 then
begin
lvParams.Items.BeginUpdate; // здесь проблемы
try
lvParams.Items.Clear;
for i := 0 to Node.Count - 1 do
AddNodeDataToListView(Node.Item[i]);
finally
lvParams.Items.EndUpdate; // здесь проблемы
end;
end
else
begin
lvParams.Items.Clear;
AddNodeDataToListView(Node);
end;
end;
Суть: при выделении TreeNode нулевого уровня в listview(lvParams) должны отобразиться параметры всех дочерних узлов дерева(параметры хранятся в свойстве Data узлов), иначе в lvParams отображаются параметры самого узла.
Проблема в том, что при загрузке приложения заголовок не отрисововается. В последствии (при повторном выделении узла) отрисовка присходит нормально.
Если убрать BeginUpdate/EndUpdate, то отрисовка при загрузке происходит нормально.
← →
Digitman (2003-07-08 11:57) [1]
> заголовок не отрисововается
заголовок чего ?
p.s.
для начала сделай так :
begin
try
lvParams.Items.Clear;
if Node.Level = 0 then
for i := 0 to Node.Count - 1 do
AddNodeDataToListView(Node.Item[i]);
else
AddNodeDataToListView(Node);
finally
lvParams.Items.EndUpdate;
end;
end;
← →
jack128 (2003-07-08 12:03) [2]Sorry, заголовок listview.
Ваш вариант работает, спасибо. Но почему не работает мой???
← →
Digitman (2003-07-08 13:41) [3]а понятия не имею) ...собственно, ничего радикально отличающегося я не привнес в твой код. Очевидно, различия в коде невозможно оценить, "выдрав" из контекста алгоритма задачи в целом. Но смысл в том, что и Items.Clear и Items.Add (равно как и прочие методы, модифицирующие в конечном итоге визуальное содержимое списочного винконтрола) при любых условиях оч и оч желательно заключать в скобки Items.BeginUpdate и Items.EndUpdate.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c