![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброе время суток, подскажите что я делаю не так пытаюсь удалить строку в ListView по нажатию в нём кнопки выдает ошибку
Код:
procedure TfrmMain.ListView2ButtonClick(const Sender: TObject;
const AItem: TListItem; const AObject: TListItemSimpleControl);
var
v:integer;
begin
v:= ListView2.ItemIndex ;
ListView2.Items.Delete( v );
exit;
ShowMessage('Нажатие по элементу');
end;Да он ещё обращяется на onClik хотя я его об этом не просил Код:
procedure TfrmMain.ListView2Click(Sender: TObject);
begin
ShowMessage('Нажатие по элементу');
end;Последний раз редактировалось Admin, 12.10.2018 в 19:38. |
|
#2
|
|||
|
|||
|
Есть подозрение, что после удаления объкта происходит попытка возврата управления в объект, который уже не существует. Осюда и AV.
Как обойти - либо удалять извне списка, либо, например, через PostMessage отправить сообщение в форму, там отловить и удалить элемент. По поводу второго вопроса. Тут все просто. Клик получает ListView, соответсвенно, вызывается OnClick, потом видит, что кликнули на внутренном контроле и передает этот клик туда. ЗЫ. Это FMX что-ли? |
|
#3
|
|||
|
|||
|
Доброе время суток, lmikle не могли бы поподробней описать через метод PostMessage и если есть маленький приемчик заранее спасибо.
|
|
#4
|
|||
|
|||
|
закинул на кнопку
Код:
Begin
v:= ListView2.ItemIndex ;
frmMain.Button4Click(nil);
end;
Такая же ошибка
прокинул Через UDP
//клиент
procedure TfrmMain.ListView2ButtonClick(const Sender: TObject;
const AItem: TListItem; const AObject: TListItemSimpleControl);
var
v:integer;
s:string;
begin
v:= ListView2.ItemIndex ;
s:=IntToStr(v);
IdUDPClient1.Send(s);
End;
//Сервер
procedure TfrmMain.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
const AData: TIdBytes; ABinding: TIdSocketHandle);
var
s:string;
v:Integer;
begin
s:='';
s:=bytestostring(AData);
v:= StrToint(s);
ListView2.Items.Delete( v );
end;через раз выдает ошибку можно как-нибудь убить старую процедуру (Клиент) ? Последний раз редактировалось Admin, 15.10.2018 в 19:44. |
|
#5
|
|||
|
|||
|
Сделал Вт так Работает
Код:
procedure TfrmMain.ListView2ButtonClick(const Sender: TObject;
const AItem: TListItem; const AObject: TListItemSimpleControl);
var
v:integer;
s:string;
begin
v:= ListView2.ItemIndex ;
s:=IntToStr(v);
Timer1.Enabled:=true;
Memo2.Text:= s;
exit;
end;
procedure TfrmMain.Timer1Timer(Sender: TObject);
Var
s:string;
v:Integer;
begin
s:=Memo2.Text;
v:= StrToint(s);
if v>=0 then
ListView2.Items.Delete( v );
Timer1.Enabled:=False;
end;Последний раз редактировалось Admin, 15.10.2018 в 19:44. |
|
#6
|
|||
|
|||
|
Тема закрыта .
Админ: недельный бан за игнорирование правил форума. Последний раз редактировалось Admin, 15.10.2018 в 19:45. |