Главная страница
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.011 c
7-68082
dim-
2003-05-08 12:04
2003.07.21
Сканеры с автоподачей


7-68091
Dion
2003-05-13 07:33
2003.07.21
Подскажите, Плз, как можно программно определить имя пользователя


1-67791
IronHawk
2003-07-08 17:42
2003.07.21
Можно ли показывать слева от текста в RichEdite № строки?


11-67747
SPeller
2002-11-17 13:36
2003.07.21
DesignTime отрисовка


1-67878
Tornado
2003-07-08 09:33
2003.07.21
Форма в DLL