Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.10.2018, 17:17
hesperusvz hesperusvz вне форума
Прохожий
 
Регистрация: 18.02.2018
Сообщения: 5
Версия Delphi: 10xe
Репутация: 10
По умолчанию ListView2ButtonClick

Доброе время суток, подскажите что я делаю не так пытаюсь удалить строку в 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;
Изображения
Тип файла: png Снимок.PNG (10.4 Кбайт, 0 просмотров)

Последний раз редактировалось Admin, 12.10.2018 в 19:38.
Ответить с цитированием
  #2  
Старый 14.10.2018, 05:43
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,481
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

Есть подозрение, что после удаления объкта происходит попытка возврата управления в объект, который уже не существует. Осюда и AV.

Как обойти - либо удалять извне списка, либо, например, через PostMessage отправить сообщение в форму, там отловить и удалить элемент.

По поводу второго вопроса. Тут все просто. Клик получает ListView, соответсвенно, вызывается OnClick, потом видит, что кликнули на внутренном контроле и передает этот клик туда.

ЗЫ. Это FMX что-ли?
Ответить с цитированием
  #3  
Старый 15.10.2018, 09:30
hesperusvz hesperusvz вне форума
Прохожий
 
Регистрация: 18.02.2018
Сообщения: 5
Версия Delphi: 10xe
Репутация: 10
По умолчанию

Доброе время суток, lmikle не могли бы поподробней описать через метод PostMessage и если есть маленький приемчик заранее спасибо.
Ответить с цитированием
  #4  
Старый 15.10.2018, 13:07
hesperusvz hesperusvz вне форума
Прохожий
 
Регистрация: 18.02.2018
Сообщения: 5
Версия Delphi: 10xe
Репутация: 10
По умолчанию

закинул на кнопку
Код:
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  
Старый 15.10.2018, 15:19
hesperusvz hesperusvz вне форума
Прохожий
 
Регистрация: 18.02.2018
Сообщения: 5
Версия Delphi: 10xe
Репутация: 10
По умолчанию

Сделал Вт так Работает

Код:
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  
Старый 15.10.2018, 15:46
hesperusvz hesperusvz вне форума
Прохожий
 
Регистрация: 18.02.2018
Сообщения: 5
Версия Delphi: 10xe
Репутация: 10
По умолчанию

Тема закрыта .

Админ: недельный бан за игнорирование правил форума.

Последний раз редактировалось Admin, 15.10.2018 в 19:45.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:39.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2019

ВКонтакте   Facebook   Twitter