Verweis: | |
Uses: | StdCtrls |
Eingabe: | Eine Cursorbezeichnung die eine Konstante für ein Integer-Wert darstellt. |
Ausgabe: | Ein Cursordesign welches der Komponente zugeordnet wurde. |
Funktion: | Ausführung bei einem MouseMove-Ereignis. |
Mit dieser Eigenschaft können sie das Aussehen des Mauszeigers verändern. Der Standard-Wert ist hierbei crDefault. Dieser Wert ist eigentlich immer passend und bräuchte nicht verändert zu werden. In der nachfolgenden Tabelle sehen sie einige Cursor mit der passenden Beschreibung.
Mauszeiger | Beschreibung |
![]() | Dieses Pfeile zeigen dem Benutzer, das er die Komponente in X- und Y-Richtung verschieben kann. |
![]() | Dieses Pfeile zeigen dem Benutzer, das er die Komponente in Y-Richtung verschieben kann. |
![]() | Dieses Pfeile zeigen dem Benutzer, das er die Komponente in X-Richtung verschieben kann. |
![]() | Hierbei geht der Benutzer davon aus, dass es sich bei der angewählten Komponente um ein Eingabefeld handelt. |
![]() | Die Hand kennzeichnet meistens einen Link. Hierbei handelt es sich um eine Verknüpfung. Diese Verknüpfung kann innerhalb eines Dokumentes oder eine Verknüpfung zu einer Internetseite sein. |
![]() | Die Sanduhr zeigt dem Benutzer des Programms an, dass das Programm mit einer Berechnung beschäftigt ist. Dies veranlasst den Benutzer zu warten, um die ausstehende Berechnung ungestört durchzu führen. |
![]() | Dieses Verbotszeichen zeigt an das die ausgewählte Funktion nicht unterstützt wird. |
Hier sind leider nicht alle Cursor aufgeführt die von Lazarus unterstützt werden. Da die Cursor-Icons individuell einstellbar sind und auch von Betriebssystem zu Betriebssystem unterschiedlich sind gibt es auch hier wieder, genau wie bei den Systemfarben leichte Ungereimtheiten.
Da wären z.B. die Eigenschaften crHSplit und crVSplit. Diese werden automatisch den Splitter -Komponenten hinzugefügt. Leider werden diese nicht mehr vollständig von Windows 10 unterstützt. Diese Icons werden dann von Lazarus übernommen. Dies passt dann vom Design her nicht mehr zu den anderen oben angeführten Mauszeigern. Häufig werden diese dann mit crSizeNS und crSizeWE ersetzt. Wenn Sie ein Programm schreiben welches Splitter beinhaltet dann müssen Sie diese Eigenschaft entsprechend umstellen. Genauso geht es bei crNoDrop, welches Sie getrost dann durch crNo ersetzen können. Ich könnte mich mit dem Gedanken anfreunden, denn dies macht einiges einfacher. Wenn sich dann nicht wieder jemand was neues aus denken würde. So gibt es Finger die auf eine Position zeigen ähnlich einem Google-Marker und noch andere Spielereien.
Beispiel 1
Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie eine TListbox auf die Form. Erstellen Sie zusätzlich ein OnActivate-Ereignis für die Form und ein OnMouseMove-Ereignis für die Listbox.
procedure TForm1.FormActivate(Sender: TObject);
const
Listeninhalt: string =
'crDefault,crNone,crArrow,crCross,crIBeam,unbelegt,' +
'crSizeNESW,crSizeNS,crSizeNWSE,crSizeWE,crUpArrow,' +
'crHourGlass,crDrag,crNoDrop,crHSplit,crVSplit,crMultiDrag,' +
'crSQLWait,crNo,crAppStart,crHelp,crHandPoint,crSize,' +
'crSizeNW,crSizeN,crSizeNE,crSizeW,crSizeE,crSizeSW,' + 'crSizeS,crSizeSE';
begin
//Stelle die Fensterabmaße ein
Form1.Top := 0;
Form1.Width := 300;
Form1.Height := 1000;
//Bestücke die Listbox
ListBox1.Clear;
Listbox1.Align := AlClient;
ListBox1.Items.AddCommaText(Listeninhalt);
end;
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer);
var
MeinCursor: integer;
begin
//Lese den Eintrag aus bei dem sich
//die Maus befindet und negiere den Wert
MeinCursor := -(ListBox1.GetIndexAtY(Y));
//-5 gibt es als Cursor nicht daher -1
if MeinCursor = -5 then MeinCursor := -1;
//Setze den neuen Cursor-Wert
Listbox1.Cursor := MeinCursor;
end;
Wenn Sie alles richtig gemacht haben, können Sie nun die verschiedenen Cursor-Symbole bewundern. Diese sind abhängig von Ihrem Design welches Sie gerade unterstützen. Sollten Sie extreme Unterschiede im Design feststellen, dann liegt das daran das einige von Lazarus und einige von Ihrem System sind. Hier würde ich nicht die schuld bei Lazarus suchen, sondern vielmehr bei den Leuten, die ein unvollständiges Design für Ihr Betriebssystem anbieten.
Wann sollten Sie die Cursor ändern?
In jedem Fall, vor einer mathematischen Operation, die den Fluss des Programms stören könnte. Hier sollten Sie vor der Operation die Sanduhr (crHourGlass) setzen und im Anschluss diese wieder mit crDefault überschreiben. Dies ist wirklich ein Muss für ein gutes Programm. Denken Sie immer daran, dass der Benutzer jetzt nicht weis, was für komplizierte mathematische Operationen sein Rechner gerade macht. Er sieht nur Programm hängt. Alle andern Cursor-Werte würde ich auf Default lassen. Denn hier wird automatisch der Richtige Cursor ausgewählt.