Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.07;
Скачать: CL | DM;

Вниз

Ошибка при удалении Edit.   Найти похожие ветки 

 
Black_Tomcat ©   (2007-09-07 19:58) [0]

У меня возникла не большая проблемка. :-) Решение другое придумать можно, но просто интересно, что происходит.
Дело в том, что на EditOnChange Edit нормально удаляется, а на OnEditKeyDown удаляется, но после окончания происходит ошибка "Access violation at address XXXXXXXX. Read of address XXXXXXXX". Вот то, что я написал.


procedure TCfgForm.PosHorLDblClick(Sender: TObject);
var Edit:TEdit;
begin
Edit:=TEdit.Create(Nil);

Edit.SetBounds(label2.Left-3,Labe2.Top-3,Label2.Width,Label2.Height);
Edit.Text:=PosHorL.Caption;
Edit.Tag:=1;
PrevPosition:=PosHorSB.Position;

Edit.OnChange:=EditOnChange;
Edit.OnKeyPress:=EditOnKeyPress;
Edit.OnKeyDown:=EditOnKeyDown;

Edit.Parent:=GroupBox4;
Edit.SetFocus;
end;

procedure TCfgForm.EditOnKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
Case key of
VK_ESCAPE:Case TEdit(Sender).Tag of
           1:begin
               PosHorSb.Position:=PrevPosition;
               TEdit(Sender).Free;
               Exit;
             end;
            2:begin
               PosVerSb.Position:=PrevPosition;
               TEdit(Sender).Free;
               Exit;
              end;
           end;
VK_RETURN:Case TEdit(Sender).Tag of
           1:begin
               TEdit(Sender).Free;
               Exit;
             end;
            2:begin
               TEdit(Sender).Free;
               Exit;
              end;
           end;
 end;
end;


 
Инс ©   (2007-09-07 20:10) [1]

Однажды отвечал на похожий вопрос:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=46005


 
Вася Правильный   (2007-09-07 20:23) [2]

уничтожение объекта из собственного обработчика чревато


 
Black_Tomcat ©   (2007-09-08 19:49) [3]

Большое спасибо.
Все понятно, буду убивать его чужими руками.


 
MsGuns ©   (2007-09-08 22:40) [4]

Если динамический TEdit отображается в единственном числе, но в разных местах, лучше использовать "обычный" (т.е. созданный в дизайне), показывая его или пряча в нужный момент. В этом случае прятание лучше всего делать в его обработчике OnExit



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.031 c
1-1185336663
Dr. Andrew
2007-07-25 08:11
2007.10.07
Как корректно вызвать функцию function GetIniInt в Inno Setup


2-1189420317
Nikola62
2007-09-10 14:31
2007.10.07
Как не дать форме открыться


2-1188553610
MAXHo
2007-08-31 13:46
2007.10.07
Как добавить запись в конец таблицы?


15-1189053276
ZeroDivide
2007-09-06 08:34
2007.10.07
Turbo вернулись.... и снова пропали, я правильно понял?


2-1189577653
Washington
2007-09-12 10:14
2007.10.07
Местоположение формы