mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-06 09:58:16 +02:00
TCustomListView: trying to implement OnChanging (Win32):
* according to Delph docs (https://docwiki.embarcadero.com/Libraries/Alexandria/en/Vcl.ComCtrls.TCustomListView.CanChange) the function CanClose calls the OnChanging event. It's result indicates wether changing will be allowed.
This commit is contained in:
parent
39eb9884d0
commit
af9412b019
@ -1525,7 +1525,7 @@ type
|
|||||||
function CreateListItems: TListItems; virtual;
|
function CreateListItems: TListItems; virtual;
|
||||||
function CanEdit(Item: TListItem): Boolean; virtual;
|
function CanEdit(Item: TListItem): Boolean; virtual;
|
||||||
procedure Change(AItem: TListItem; AChange: Integer); virtual;
|
procedure Change(AItem: TListItem; AChange: Integer); virtual;
|
||||||
procedure DoChanging(AItem: TListItem; AChange: Integer; var AllowChange: Boolean);
|
function CanChange(AItem: TListItem; AChange: Integer): Boolean;
|
||||||
procedure ColClick(AColumn: TListColumn); virtual;
|
procedure ColClick(AColumn: TListColumn); virtual;
|
||||||
|
|
||||||
procedure Delete(AItem : TListItem); virtual;
|
procedure Delete(AItem : TListItem); virtual;
|
||||||
|
@ -205,10 +205,11 @@ begin
|
|||||||
then FOnChange(Self, AItem, ItemChange);
|
then FOnChange(Self, AItem, ItemChange);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomListView.DoChanging(AItem: TListItem; AChange: Integer; var AllowChange: Boolean);
|
function TCustomListView.CanChange(AItem: TListItem; AChange: Integer): Boolean;
|
||||||
var
|
var
|
||||||
ItemChange: TItemChange;
|
ItemChange: TItemChange;
|
||||||
begin
|
begin
|
||||||
|
Result := True;
|
||||||
case AChange of
|
case AChange of
|
||||||
LVIF_TEXT: ItemChange := ctText;
|
LVIF_TEXT: ItemChange := ctText;
|
||||||
LVIF_IMAGE: ItemChange := ctImage;
|
LVIF_IMAGE: ItemChange := ctImage;
|
||||||
@ -217,14 +218,7 @@ begin
|
|||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
if Assigned(FOnChanging) then
|
if Assigned(FOnChanging) then
|
||||||
begin
|
FOnChanging(Self, AItem, ItemChange, Result);
|
||||||
FOnChanging(Self, AItem, ItemChange, AllowChange);
|
|
||||||
if not AllowChange then
|
|
||||||
begin
|
|
||||||
//ToDo
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------}
|
{------------------------------------------------------------------------------}
|
||||||
@ -335,7 +329,7 @@ begin
|
|||||||
LVN_ITEMCHANGING: begin
|
LVN_ITEMCHANGING: begin
|
||||||
//Check
|
//Check
|
||||||
debugln('TCustomListView.CNNotify: LVN_ITEMCHANGING');
|
debugln('TCustomListView.CNNotify: LVN_ITEMCHANGING');
|
||||||
AMessage.Result:=1;
|
//AMessage.Result:=1; //1=disallow changing
|
||||||
//if nm^.iItem < 0 then
|
//if nm^.iItem < 0 then
|
||||||
// Item := nil
|
// Item := nil
|
||||||
//else
|
//else
|
||||||
@ -344,7 +338,7 @@ begin
|
|||||||
//if Assigned(Item) then
|
//if Assigned(Item) then
|
||||||
//begin
|
//begin
|
||||||
// AllowChange := True;
|
// AllowChange := True;
|
||||||
// DoChanging(Item, nm^.uChanged, AllowChange);
|
// CanChange(Item, nm^.uChanged, AllowChange);
|
||||||
// if not AllowChange then
|
// if not AllowChange then
|
||||||
// AMessage.Result := 1;
|
// AMessage.Result := 1;
|
||||||
//end;
|
//end;
|
||||||
|
@ -300,11 +300,9 @@ var
|
|||||||
var
|
var
|
||||||
nm: PNMListView;
|
nm: PNMListView;
|
||||||
Item: TListItem;
|
Item: TListItem;
|
||||||
AllowChange: Boolean;
|
|
||||||
begin
|
begin
|
||||||
debugln(['HandleListChanging: HandleAllocated=',ALV.HandleAllocated]);
|
debugln(['HandleListChanging: HandleAllocated=',ALV.HandleAllocated,', (wcfInitializing in FWinControlFlags)=',Dbgs(wcfInitializing in ALV.FWinControlFlags)]);
|
||||||
MsgResult := LResult(1);
|
if (wcfInitializing in ALV.FWinControlFlags) then Exit;
|
||||||
EXIT;
|
|
||||||
nm := PNMListView(NMHdr);
|
nm := PNMListView(NMHdr);
|
||||||
if nm^.iItem < 0 then
|
if nm^.iItem < 0 then
|
||||||
Item := nil
|
Item := nil
|
||||||
@ -313,12 +311,11 @@ var
|
|||||||
|
|
||||||
if Assigned(Item) then
|
if Assigned(Item) then
|
||||||
begin
|
begin
|
||||||
AllowChange := True;
|
if ALV.CanChange(Item, nm^.uChanged) then
|
||||||
ALV.DoChanging(Item, nm^.uChanged, AllowChange);
|
MsgResult := 0
|
||||||
//if not AllowChange then
|
else
|
||||||
MsgResult := 0;
|
MsgResult := 1;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure HandleListViewOwnerDataHint(ALV: TCustomListViewAccess);
|
procedure HandleListViewOwnerDataHint(ALV: TCustomListViewAccess);
|
||||||
@ -350,10 +347,11 @@ begin
|
|||||||
HandleListViewFindItem(TCustomListViewAccess(AWinControl));
|
HandleListViewFindItem(TCustomListViewAccess(AWinControl));
|
||||||
LVN_ITEMCHANGING:
|
LVN_ITEMCHANGING:
|
||||||
begin
|
begin
|
||||||
debugln('ListViewParentMsgHandler: LVN_ITEMCHANGING');
|
//debugln('ListViewParentMsgHandler: LVN_ITEMCHANGING');
|
||||||
MsgResult := LResult(-1);
|
//MsgResult := LResult(-1);
|
||||||
//HandleListChanging(TCustomListViewAccess(AWinControl));
|
HandleListChanging(TCustomListViewAccess(AWinControl));
|
||||||
end;
|
end;
|
||||||
|
//LVN_ITEMCHANGED: debugln('ListViewParentMsgHandler: LVN_ITEMCHANGed');
|
||||||
LVN_ODCACHEHINT:
|
LVN_ODCACHEHINT:
|
||||||
HandleListViewOwnerDataHint(TCustomListViewAccess(AWinControl));
|
HandleListViewOwnerDataHint(TCustomListViewAccess(AWinControl));
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user