Вверх ↑
Ответов: 1926
Рейтинг: 172
#1: 2009-08-02 07:59:08 ЛС | профиль | цитата
nesco, нигде. Я писал:

destructor THiAsmClass.Destroy;
var i:integer;
begin
for i:=0 to ArrayOfCB.Count do PControl(ArrayOfCB.Items[i]).Free;
ArrayOfCB.Free;
inherited Destroy;
end;

Но если таблицу перед выходом не очистить (т.е. когда флажки есть), то возникает runtime eroor при выходе.

Однако я, кажется, понял, в чём там было дело.
В моих циклах while уничтожались и создавались флажки в зависимости от количества строк таблицы. И после удаления каждого из флажков шла перерисовка и вновь запускалось событие TableRepait, в котором вновь происходил вход в циклы.
То есть, один и тот же цикл мог запуститься много раз.

Теперь в самом начале обработчика отрисовки я пишу:

TableCtl.OnLVCustomDraw := nil;[/code]
Это значит, что обработчика отрисовки больше нет. То есть, когда первый раз запускается обработчик, больше запуститься он уже не может.

А в конце обработчика я пишу:
TableCtl.OnLVCustomDraw := TableRePaint;[/code]

То есть назначаю тот же самы обработчик отрисовки вновь.
Таким образом, пока не закончатся все циклы в обработчике, вновь запущен он не будет.

[size=-2]------ Добавлено в 07:59 [/size]
Спасибо всем, кто мне помогал
карма: 9
0