mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-03 08:18:13 +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 CanEdit(Item: TListItem): Boolean; 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 Delete(AItem : TListItem); virtual;
|
||||
|
@ -205,10 +205,11 @@ begin
|
||||
then FOnChange(Self, AItem, ItemChange);
|
||||
end;
|
||||
|
||||
procedure TCustomListView.DoChanging(AItem: TListItem; AChange: Integer; var AllowChange: Boolean);
|
||||
function TCustomListView.CanChange(AItem: TListItem; AChange: Integer): Boolean;
|
||||
var
|
||||
ItemChange: TItemChange;
|
||||
begin
|
||||
Result := True;
|
||||
case AChange of
|
||||
LVIF_TEXT: ItemChange := ctText;
|
||||
LVIF_IMAGE: ItemChange := ctImage;
|
||||
@ -217,14 +218,7 @@ begin
|
||||
Exit;
|
||||
end;
|
||||
if Assigned(FOnChanging) then
|
||||
begin
|
||||
FOnChanging(Self, AItem, ItemChange, AllowChange);
|
||||
if not AllowChange then
|
||||
begin
|
||||
//ToDo
|
||||
end;
|
||||
end;
|
||||
|
||||
FOnChanging(Self, AItem, ItemChange, Result);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------}
|
||||
@ -335,7 +329,7 @@ begin
|
||||
LVN_ITEMCHANGING: begin
|
||||
//Check
|
||||
debugln('TCustomListView.CNNotify: LVN_ITEMCHANGING');
|
||||
AMessage.Result:=1;
|
||||
//AMessage.Result:=1; //1=disallow changing
|
||||
//if nm^.iItem < 0 then
|
||||
// Item := nil
|
||||
//else
|
||||
@ -344,7 +338,7 @@ begin
|
||||
//if Assigned(Item) then
|
||||
//begin
|
||||
// AllowChange := True;
|
||||
// DoChanging(Item, nm^.uChanged, AllowChange);
|
||||
// CanChange(Item, nm^.uChanged, AllowChange);
|
||||
// if not AllowChange then
|
||||
// AMessage.Result := 1;
|
||||
//end;
|
||||
|
@ -300,11 +300,9 @@ var
|
||||
var
|
||||
nm: PNMListView;
|
||||
Item: TListItem;
|
||||
AllowChange: Boolean;
|
||||
begin
|
||||
debugln(['HandleListChanging: HandleAllocated=',ALV.HandleAllocated]);
|
||||
MsgResult := LResult(1);
|
||||
EXIT;
|
||||
debugln(['HandleListChanging: HandleAllocated=',ALV.HandleAllocated,', (wcfInitializing in FWinControlFlags)=',Dbgs(wcfInitializing in ALV.FWinControlFlags)]);
|
||||
if (wcfInitializing in ALV.FWinControlFlags) then Exit;
|
||||
nm := PNMListView(NMHdr);
|
||||
if nm^.iItem < 0 then
|
||||
Item := nil
|
||||
@ -313,12 +311,11 @@ var
|
||||
|
||||
if Assigned(Item) then
|
||||
begin
|
||||
AllowChange := True;
|
||||
ALV.DoChanging(Item, nm^.uChanged, AllowChange);
|
||||
//if not AllowChange then
|
||||
MsgResult := 0;
|
||||
if ALV.CanChange(Item, nm^.uChanged) then
|
||||
MsgResult := 0
|
||||
else
|
||||
MsgResult := 1;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
procedure HandleListViewOwnerDataHint(ALV: TCustomListViewAccess);
|
||||
@ -350,10 +347,11 @@ begin
|
||||
HandleListViewFindItem(TCustomListViewAccess(AWinControl));
|
||||
LVN_ITEMCHANGING:
|
||||
begin
|
||||
debugln('ListViewParentMsgHandler: LVN_ITEMCHANGING');
|
||||
MsgResult := LResult(-1);
|
||||
//HandleListChanging(TCustomListViewAccess(AWinControl));
|
||||
//debugln('ListViewParentMsgHandler: LVN_ITEMCHANGING');
|
||||
//MsgResult := LResult(-1);
|
||||
HandleListChanging(TCustomListViewAccess(AWinControl));
|
||||
end;
|
||||
//LVN_ITEMCHANGED: debugln('ListViewParentMsgHandler: LVN_ITEMCHANGed');
|
||||
LVN_ODCACHEHINT:
|
||||
HandleListViewOwnerDataHint(TCustomListViewAccess(AWinControl));
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user