Модератор: Модераторы
qivi писал(а):Лишней темой марать форум не стал, решил тут спросить.
К какому событию TListView можно прикрутить процедуру которая если не выбранно ни одного элемента TListView блокирует некоторые кнопки?
OnChange (если не ошибаюсь любое изменение) не отрабатывает как надо?
procedure TForm1.ListView1SelectItem ( Sender: TObject; Item: TListItem; Selected: Boolean ) ;
begin
if
not Selected
then
SetBtnState;
end;
procedure TForm1.ListView1Exit ( Sender: TObject ) ;
begin
if
ListView1.SelCount = 0
then
SetBtnState;
end;
procedure TForm1.SetBtnState;
begin
if
ListView1.SelCount = 0
then
begin
//Set State of Buttons
end;
end;
procedure TForm1.ListView1SelectItem ( Sender: TObject; Item: TListItem; Selected: Boolean ) ;
begin
SetBtnState;
end;
procedure TForm1.ListView1Exit ( Sender: TObject ) ;
begin
SetBtnState;
end;
procedure TSelectAntibioticSetForm.AntibioticSetsGridSelectItem(Sender: TObject;
Item: TListItem; Selected: Boolean);
...
begin
if Item=Nil then Exit;
{$IFDEF FPC}if not Item.Selected then Exit;{$ENDIF}
...
end;
Vcl.ComCtrls.TListView.OnSelectItem
Description
Occurs when an item is selected in the list view control.
Vcl.ComCtrls.TListView.OnSelectItem inherits from Vcl.ComCtrls.TCustomListView.OnSelectItem. All content below this line refers to Vcl.ComCtrls.TCustomListView.OnSelectItem.
Occurs when an item is selected in the list view control.
Use OnSelectItem to perform actions when an item is selected.
OnSelectItem is an event handler of type Vcl.ComCtrls.TLVSelectItemEvent.
Vcl.ComCtrls.TLVSelectItemEvent
Description
TLVSelectItemEvent is the type of a list view's TCustomListView.OnSelectItem and TListView.OnSelectItem event handlers.
Sender is the list view object in which an item has been selected or unselected.
Item is the item that has been selected or unselected.
Selected is True if the item has been selected and False if the item has been unselected.
slyubez писал(а):Посмотрел. В Delphi обработчик таки также дергается дважды, но такого глюка, который был у меня в Лазаре, не отметилось. Отчего, почему - не знаю. Может в GTK2 действительно какой-то баг есть...
procedure BeginUpdate – блокирует обновление экрана до тех пор,пока не будет выполнен метод EndUpdate. Используется при одновременной вставке нескольких элементов списка для предотвращения мерцания экрана;
но кажется такая штука лечится с помощью ListView.BeginUpDate; ... ListView.EndUpDate;
slyubez писал(а):Нет. Мой косяк был не при обновлении ListView, а при выборе строчки в нем. Никакой вставки в это время не происходило.
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;Selected: Boolean);
begin
if Selected then
begin
// заполняем мемо
end;
end;
Но зачем мучать обработчик OnSelectItem для получения текущего элемента если есть TListView.Selected и TListView.Selected.Index ?
slyubez писал(а):Чтобы получить в момент выделения из Item.Data идентификатор записи для вычитывания из базы в мемо.
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;Selected: Boolean);
begin
if Selected then
begin
// заполняем мемо
Memo1.Lines.text:= PString ( Item.Data)^
end;
end;
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;Selected: Boolean);
begin
if Selected then
begin
// заполняем мемо
Memo1.Lines.text:= PString ( ListView1.Selected.data )^;
end;
end;
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;Selected: Boolean);
begin
Inherited ;
if Selected then
begin
// заполняем мемо
Memo1.Lines.text:= PString ( ListView1.Selected.data )^;
end;
end;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18