Hallo,
Zitat von
martinf16:
[...]es existiert aber kein Zugriff auf das selektierte Item, wie es bei normalen Listboxen der Fall ist.
Der Zugriff erfolgt über die Eigenschaft
ItemIndex - wie bei einer normalen ListBox.
Das Verschieben per Drag&Drop erfordert ein Setzen der Eigenschaft
DragMode, und die ist bei der ColorListBox leider nicht öffentlich. Du musst dir also über einen kleinen Trick Zugriff auf diese Eigenschaft verschaffen:
Delphi-Quellcode:
type
TColorListBoxCracker = class (TColorListBox);
procedure TDemoForm.FormCreate(Sender: TObject);
begin
TColorListBoxCracker(ColorListBox).DragMode := dmAutomatic;
end;
procedure TDemoForm.ColorListBoxDragDrop(Sender, Source: TObject; X, Y: Integer);
var
TargetIndex : Integer;
begin
with (Sender as TColorListBox) do
begin
TargetIndex := ItemAtPos(Point(X, Y), False);
if (TargetIndex >= Items.Count) then
TargetIndex := Pred(Items.Count);
Items.Move(ItemIndex, TargetIndex);
end;
end;
procedure TDemoForm.ColorListBoxDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := ((Sender is TColorListBox) and (Source = Sender));
end;
Gruß Hawkeye