Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
7-68080
Monak
2003-05-11 19:23
2003.07.21
Время...


1-67759
BelCaesar
2003-07-08 19:44
2003.07.21
С канвы на принтер или в bmp файл!


6-67943
LOX
2003-05-15 20:14
2003.07.21
Как сделать кнопки назад и вперёд


3-67697
vavan
2003-06-24 18:53
2003.07.21
Grid


14-68013
Фикус
2003-07-04 08:16
2003.07.21
Интересно, а кто был 20000000 посетителем? :)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский