Changeset 342 for Generics/TemplateGenerics/Generic/GenericList.inc
- Timestamp:
- Apr 3, 2012, 7:35:26 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Generics/TemplateGenerics/Generic/GenericList.inc
r312 r342 24 24 FItems: array of TGListItem; 25 25 FCount: TGListIndex; 26 FUpdateCount: NativeInt; 27 FOnUpdate: TNotifyEvent; 26 28 function Get(Index: TGListIndex): TGListItem; 27 29 function GetCapacity: TGListIndex; … … 72 74 procedure Sort(Compare: TGListSortCompare); 73 75 procedure SetArray(Values: array of TGListItem); 76 procedure BeginUpdate; 77 procedure EndUpdate; 78 procedure Update; 74 79 property Count: TGListIndex read FCount write SetCount; 75 80 property Capacity: TGListIndex read GetCapacity write SetCapacity; … … 107 112 I := I + 1; 108 113 end; 114 Update; 109 115 end; 110 116 … … 118 124 I := I + 1; 119 125 end; 126 Update; 120 127 end; 121 128 … … 130 137 I := I + 1; 131 138 end; 139 Update; 132 140 end; 133 141 … … 248 256 I := I + 1; 249 257 end; 258 Update; 250 259 end; 251 260 … … 294 303 InsertCount(Index, 1); 295 304 FItems[Index] := Item; 305 Update; 296 306 end; 297 307 … … 319 329 if Index < FCount then 320 330 System.Move(FItems[Index], FItems[Index + ACount], (FCount - ACount - Index) * SizeOf(TGListItem)); 331 Update; 321 332 end; 322 333 … … 409 420 //Delete(CurIndex); 410 421 //Insert(NewIndex, Temp); 422 Update; 411 423 end; 412 424 … … 434 446 end; 435 447 end; 448 Update; 436 449 end; 437 450 … … 469 482 I := I + 1; 470 483 end; 484 Update; 471 485 end; 472 486 … … 475 489 if FCount > 1 then 476 490 QuickSort(0, FCount - 1, Compare); 491 Update; 477 492 end; 478 493 … … 486 501 I := I + 1; 487 502 end; 503 Update; 488 504 end; 489 505 … … 498 514 I := I + 1; 499 515 end; 516 end; 517 518 procedure TGList.BeginUpdate; 519 begin 520 Inc(FUpdateCount); 521 end; 522 523 procedure TGList.EndUpdate; 524 begin 525 Dec(FUpdateCount); 526 Update; 527 end; 528 529 procedure TGList.Update; 530 begin 531 if Assigned(FOnUpdate) and (FUpdateCount = 0) then FOnUpdate(Self); 500 532 end; 501 533 … … 530 562 Result := FCount - 1; 531 563 FItems[Result] := Item; 564 Update; 532 565 end; 533 566 … … 545 578 J := J + 1; 546 579 end; 580 Update; 547 581 end; 548 582 … … 560 594 J := J + 1; 561 595 end; 596 Update; 562 597 end; 563 598 … … 575 610 System.Move(FItems[Index + 1], FItems[Index], (FCount - Index) * SizeOf(TGListItem)); 576 611 SetCapacityOptimized(Capacity - 1); 612 Update; 577 613 end; 578 614 … … 586 622 I := I + 1; 587 623 end; 624 Update; 588 625 end; 589 626 … … 597 634 I := I + 1; 598 635 end; 636 Update; 599 637 end; 600 638 … … 610 648 FItems[Index1] := FItems[Index2]; 611 649 FItems[Index2] := Temp; 650 Update; 612 651 end; 613 652
Note:
See TracChangeset
for help on using the changeset viewer.