Вниз
Скачать: CL | DM;

Не работает 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
1-67882
Urvin
2003-07-06 12:28
2003.07.21
AcriveX : подключение


3-67674
Пубертанец
2003-06-26 12:25
2003.07.21
Как в SQL-запросе писать в Мемо-поле (INSERT INTO ...)?


1-67787
FRT
2003-07-09 12:12
2003.07.21
StringGrid


8-67931
bkv
2003-03-28 15:03
2003.07.21
Работа с tiff форматом


1-67788
bobr12
2003-07-09 11:57
2003.07.21
Обработка нажатия правой кнопкой мыши на визуальный компонент




   Наверх