ubuntu 64; 64 bit
da human bei der trackbar probleme macht, habe ich gilouche-posh (irgendwo runtergeladen)
ahh ok.
virtual treview 4.0.17.26
von hier
http://sourceforge.net/project/showfile ... _id=183363" onclick="window.open(this.href);return false;
laut synaptic fp 2.20
EDIT:
Ok ich habe es jetzt in Kommentare gesetzt und nun kommt woanders ein Fehler:
"mein pfad"/virtualtrees.pas(18391,34) Error: Argument can't be assigned to
Code: Alles auswählen
function TBaseVirtualTree.InternalAddToSelection(NewItems: TNodeArray; NewLength: Integer;
ForceInsert: Boolean): Boolean;
// Internal version of method AddToSelection which does not trigger OnChange events
var
I, J: Integer;
CurrentEnd: Integer;
Constrained,
SiblingConstrained: Boolean;
begin
// The idea behind this code is to use a kind of reverse merge sort. QuickSort is quite fast
// and would do the job here too but has a serious problem with already sorted lists like FSelection.
// 1) Remove already selected items, mark all other as being selected.
if ForceInsert then
begin
for I := 0 to NewLength - 1 do
Include(NewItems[I]^.States, vsSelected);
end
else
begin
Constrained := toLevelSelectConstraint in FOptions.FSelectionOptions;
if Constrained and (FLastSelectionLevel = -1) then
FLastSelectionLevel := GetNodeLevel(NewItems[0]);
SiblingConstrained := toSiblingSelectConstraint in FOptions.FSelectionOptions;
if SiblingConstrained and (FRangeAnchor = nil) then
FRangeAnchor := NewItems[0];
for I := 0 to NewLength - 1 do
if ([vsSelected, vsDisabled] * NewItems[I]^.States <> []) or
(Constrained and (Cardinal(FLastSelectionLevel) <> GetNodeLevel(NewItems[I]))) or
(SiblingConstrained and (FRangeAnchor^.Parent <> NewItems[I]^.Parent)) then
Inc(Cardinal(NewItems[I])) // hier!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
else
Include(NewItems[I]^.States, vsSelected);
end;
I := PackArray(NewItems, NewLength);
if I > -1 then
NewLength := I;
Result := NewLength > 0;
if Result then
begin
// 2) Sort the new item list so we can easily traverse it.
if NewLength > 1 then
QuickSort(NewItems, 0, NewLength - 1);
// 3) Make room in FSelection for the new items.
if FSelectionCount + NewLength >= Length(FSelection) then
SetLength(FSelection, FSelectionCount + NewLength);
// 4) Merge in new items
J := NewLength - 1;
CurrentEnd := FSelectionCount - 1;
while J >= 0 do
begin
// First insert all new entries which are greater than the greatest entry in the old list.
// If the current end marker is < 0 then there's nothing more to move in the selection
// array and only the remaining new items must be inserted.
if CurrentEnd >= 0 then
begin
while (J >= 0) and (Cardinal(NewItems[J]) > Cardinal(FSelection[CurrentEnd])) do
begin
FSelection[CurrentEnd + J + 1] := NewItems[J];
Dec(J);
end;
// early out if nothing more needs to be copied
if J < 0 then
Break;
end
else
begin
// insert remaining new entries at position 0
Move(NewItems[0], FSelection[0], (J + 1) * SizeOf(Pointer));
// nothing more to do so exit main loop
Break;
end;
// find the last entry in the remaining selection list which is smaller then the largest
// entry in the remaining new items list
FindNodeInSelection(NewItems[J], I, 0, CurrentEnd);
Dec(I);
// move all entries which are greater than the greatest entry in the new items list up
// so the remaining gap travels down to where new items must be inserted
Move(FSelection[I + 1], FSelection[I + J + 2], (CurrentEnd - I) * SizeOf(Pointer));
CurrentEnd := I;
end;
Inc(FSelectionCount, NewLength);
end;
end;
EDIT: @monta, hab deinen Beitrag garnicht gesehn, und habe ich schon gemacht...
