Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: TColorListBox mit eigenen Farben aufwerten

  Alt 1. Nov 2008, 15:24
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
  Mit Zitat antworten Zitat