Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.21;
Скачать: 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 вся ветка

Текущий архив: 2003.07.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
14-68027
Klot
2003-07-04 18:43
2003.07.21
Настройка среды


1-67840
AndrewVolkov
2003-07-07 18:09
2003.07.21
И снова PopupMenu ;-((


14-68029
McSimm
2003-07-04 17:37
2003.07.21
Вот, раздразнили темой


3-67703
Status_I
2003-06-24 00:27
2003.07.21
LookUp-поле


1-67793
jiura84
2003-07-07 15:54
2003.07.21
Как отследить перевод каретки при вставке данных?