Eigenschaft: DragKind (TLabel-TList)

Verweis: DragMode DragCursor
Uses: StdCtrls
Eingabe: dkDrag oder dkDock
Ausgabe: Bei dkDrag wird die Komponente im Fenster behalten bei Dock nicht.
Funktion: Bestimmt, ob die neue Komponente in ein Fenster verschoben wird.

Beispiel 1

Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie ein TLabel und ein TPanel auf die Form. Erstellen Sie zusätzlich ein OnActivate-Ereignis.

procedure TForm1.FormActivate(Sender: TObject);
begin
  Panel1.Align := alTop;
  Panel1.DockSite := True;
  Label1.Color := clYellow;
  Label1.DragKind := dkDock;
  Label1.DragMode := dmAutomatic;
  Label1.AutoSize := False;
end;

Die DragKind Eigenschaft beschreibt, ob die Komponente verschoben werden soll oder nur eine Eigenschaft. Hier sollten zunächst einmal die Begriffe in Bezug aus das Dragging geklärt werden.

Drag und Drop

Man bezeichnet eine Verschiebe-Operation als Drag und Drop, wenn man nicht eine Komponente verschiebt, sondern nur einen Teil Ihrer Eigenschaft. Die Komponente selbst bleibt dabei an ihrem Platz. In diesem Fall benötigt man die Eigenschaft DragKind:=dkDrag. Diese Eigenschaft ist immer voreingestellt. Für diese Operation können Sie alle sichtbaren Komponenten benutzen.Sie können programmtechnisch nach dem Verschieben einen anderen Vorgang auslösen. Dies ist Jedoch unüblich.

Drag und Dock

Man bezeichnet eine Verschiebe-Operation als Drag und Dock, wenn man eine Komponente verschiebt. Hierbei geht es nicht um eine Änderung der Funktion der Komponente, sondern der Platzierung. Das Verschieben der Komponente ermöglicht es dem Benutzer die Anwendung individuell zu gestalten. Dies ist ein zweischneidiges Schwert.

Vorteile

Zum einen kann er festlegen wie seine Anwendung auszusehen hat. Im Fall einer Toolbar kann er sich eine Toolbar nach seinen Wünschen zusammenstellen und hat so die Befehle die er häufig benötigt.

Nachteile

Sollte jedoch der Wunsch nach einer anderen Funktion vorhanden sein, so könnte dieser beim Lesen der Anleitung ein wenig durcheinander geraten. Den hier geht die Anleitung von der Grundeinstellung des Programms aus. Mit der Grundeinstellung ist hier die Einstellung direkt nach der Installation gemeint. Wenn der Benutzer das Programm sehr häufig mit seinen Funktionen verwendet, dann wäre es sowieso besser im Hotkey-Tasten für die Verwendung der Befehle zur Verfügung zu stellen. Durch die Benutzung dieser Tasten ist der User ohne hin schneller, als durch das Benutzen mit der Maus.

Ein weiteres Problem ist ein Up-Date Ihres Programms. Soll die neue Funktion nun angezeigt werden oder nicht? Wenn ja, dann wohin? Ärgerlich ist es für den Benutzer wenn er nach dem Update wieder alles neu einstellen muss. Dies sind Dinge die Sie beim Verwenden der Drag und Dock-Operation berücksichtigen sollten.

Beschreibung des Beispiel

Beispiel 1

Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie drei TLabel und eine TListBox auf die Form. Wenn sie nicht wissen wie man mehrere Komponenten des gleichen Typs auf die Form bringt, dann schauen sie bitte hier. Erstellen Sie zusätzlich ein OnActivate-Ereignis für die Form. Erstellen Sie zusätzlich ein DragDrop und ein DragOver Ereignis für die ListBox1.

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: integer;
  State: TDragState; var Accept: boolean);
begin
  //Alle Label erlauben
  Accept := Source is Tlabel;
end;

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: integer);
begin
  //Alle Label-Farben übernehmen
  if Source is TLabel then
    ListBox1.Color := (TLabel(Source).Color);
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  //Alle Beteiligten Komponenten auf Automatik
  Label1.DragMode := dmAutomatic;
  Label2.DragMode := dmAutomatic;
  Label3.DragMode := dmAutomatic;
  Listbox1.DragMode := dmAutomatic;
  //Das Label2 bekommt ein eigenes Fenster
  Label1.DragKind := dkDrag;
  Label2.DragKind := dkDock;
  Label3.DragKind := dkDrag;
  //Farbänderung
  Label1.Color := clYellow;
  Label2.Color := clAqua;
  Label3.Color := clWhite;
end;

Dieses Programm hat eine starke Ähnlichkeit mit dem Programmen von DragCursor und DragMode. Weil dieses Wissen darauf aufbaut wäre es nicht schlecht, wenn Sie sich diese für Ihr Verständnis ansehen.