| View previous topic :: View next topic |
| Author |
Message |
Skybuck Flying Guest
|
Posted: Wed Feb 25, 2004 5:53 pm Post subject: TlistView |
|
|
Hi
I miss an event in TListView
TList.OnItemCheckboxClick or something like that  |
|
| Back to top |
|
 |
Skybuck Flying Guest
|
Posted: Wed Feb 25, 2004 5:59 pm Post subject: Re: TlistView |
|
|
Ah yes found other newsgroup message.
This even should do the trick *:D
procedure TFormMain.ListViewReceiverMulticastMembershipChanging(
Sender: TObject; Item: TListItem; Change: TItemChange;
var AllowChange: Boolean);
:) |
|
| Back to top |
|
 |
Skybuck Flying Guest
|
Posted: Wed Feb 25, 2004 6:02 pm Post subject: Re: TlistView |
|
|
Actually this OnChange is better than OnChanging for what I want to do...
Otherwise it is vice versa :d
procedure TFormMain.ListViewReceiverMulticastMembershipChange(
Sender: TObject; Item: TListItem; Change: TItemChange);
begin
if (Change = ctState) then
begin
if Item.Checked then
begin
ShowMessage('checked');
end else
begin
ShowMessage('unchecked');
end;
end;
end; |
|
| Back to top |
|
 |
Skybuck Flying Guest
|
Posted: Wed Feb 25, 2004 6:08 pm Post subject: Re: TlistView |
|
|
Hmmm seems like both events are needed to determine which property changed
:D
Since these events are used for different properies doh. |
|
| Back to top |
|
 |
Skybuck Flying Guest
|
Posted: Wed Feb 25, 2004 6:33 pm Post subject: Re: TlistView |
|
|
Hmmm it's not as easy as it seems.
Many of these events occur.. which requires the checkbox checked state to be
stored for each list item ! |
|
| Back to top |
|
 |
Skybuck Flying Guest
|
Posted: Wed Feb 25, 2004 6:59 pm Post subject: Re: TlistView |
|
|
Ok,
I found the solution.
On adding and removing items prevent the OnChange and OnChanging events from
happening
( These will otherwise occur a lot and for different items. For example when
removing an item
some of these event will happen becomes a select property changed... and
then the checked
property of another item is assign to the boolean which you dont want )
procedure ButtonAddOrRemoveClick Etc
var
TempOnChange : TLVChangeEvent;
TempOnChanging : TLVChangingEvent;
begin
// prevent OnChange and OnChanging events from happening
TempOnChange := ListView.OnChange;
TempOnChanging := ListView.OnChanging;
ListView.OnChange := nil;
ListView.OnChanging := nil;
// code to add or remove here
// re-enable On Change Event
ListView.OnChange := TempOnChange;
ListView.OnChanging := TempOnChanging;
end;
FormVariable:
var
mReceiverMulticastMembershipItemChecked
Then in OnChange:
procedure TFormMain.ListViewReceiverMulticastMembershipChange(
Sender: TObject; Item: TListItem; Change: TItemChange);
begin
if (Change = ctState) then
begin
// als deze twee verschillen dan is het verandert.
if (mReceiverMulticastMembershipItemChecked <> Item.Checked) then
begin
if Item.Checked then
begin
ShowMessage('checked');
end else
begin
ShowMessage('unchecked');
end;
mReceiverMulticastMembershipItemChecked := Item.Checked;
end;
end;
end;
And in onChanging:
procedure TFormMain.ListViewReceiverMulticastMembershipChanging(
Sender: TObject; Item: TListItem; Change: TItemChange;
var AllowChange: Boolean);
begin
if (Change = ctState) then
begin
mReceiverMulticastMembershipItemChecked := Item.Checked;
end;
end;
Hehe works perfectly (for so far tested ) fucking yeah !  |
|
| Back to top |
|
 |
|