Kursor myszy



We własnej aplikacji możemy zmienić kursor myszy na jeden ze standardowych lub całkowicie własny.

Każdy komponent sterujący oraz formatka zawiera właściwość Cursor, która określa wygląd kursora myszy dla danego komponentu. Domyślną wartością jest crDefault, co oznacza, że dla danego elementu sterującego kursor przyjmuje wygląd standardowy (np. dla pola edycyjnego pionowa kreska). Jeśli zmienimy wartość właściwości dla danego komponentu, to kursor zmieni wygląd tylko wtedy, kiedy znajdzie się nad tym komponentem. Podobnie jest z formatką: kursor zmieni wygląd tylko nad obszarem formatki nie przykrytym przez element sterujący (niezablokowany). Do zmiany wartości właściwości Cursor używamy stałych wymienionych w tabeli. Wygląd kursorów dla poszczególnych stałych można znaleźć w Pomocy dla właściwości Cursor dowolnego komponentu.

property Cursor: TCursor;
TCursor = -32768..32767;

Stałe do określania kursora myszy (dla właściwości Cursor).

crDefault
crSizeNESW
crDrag
crNo
crNone
crSizeNS
crNoDrop
crAppStart
crArrow
crSizeNWSE
crHSplit
crHelp
crCross
crSizeWE
crVSplit
crHandPoint
crIBeam
crUpArrow
crMultiDrag
crSize
crHourGlass
crSQLWait

Jeśli chcemy zmienić wygląd kursora globalnie w całej aplikacji, to musimy użyć właściwość Cursor obiektu Screen. Do zmiany wartości również używamy stałych wymienionych w tabeli. Zmiana kursora jest uwzględniana we wszystkich oknach danej aplikacji, oprócz standardowych okien systemu Windows (np. Otwórz plik, małe okna dialogowe otwierane za pomocą funkcji). Najlepiej odpowiednią instrukcję do zmiany kursora umieścić w metodzie obsługi zdarzenia OnCreate dla formatki:

procedure TForm1.FormCreate(Sender: TObject);
begin
    Screen.Cursor := crCross;
end;


Własny kursor myszy należy najpierw utworzyć za pomocą edytora zasobów (np. Image Editor). Zasoby są przechowywane w plikach z rozszerzeniem RES i mogą zawierać: ikony, bitmapy oraz kursory. Ikony i bitmapy można w aplikacjach Delphi używać bezpośrednio z plików ICO i BMP, natomiast kursorów myszy nie można wyciągnąć bezpośrednio z pliku CUR. Najpierw należy utworzyć plik zasobu RES, a następnie utworzyć w tym pliku nowy kursor (Resource|New|Cursor). Dobrze jest też zmienić domyślną nazwę kursora Cursor1 na inną (my nazwaliśmy KRZYZ). Plik zasobów należy dodać do projektu aplikacji za pomocą następującego wpisu, najlepiej w pliku projektu:

{$R ZASOBY.RES}

Tak utworzony kursor myszy dodajemy do aplikacji za pomocą właściwości Cursors obiektu Screen. Właściwość ta jest tablicą zawierającą uchwyty do wszystkich kursorów dostępnych w aplikacji. Aby dodać nowy kursor, należy do tablicy wpisać uchwyt obiektu kursora.

property Cursors[Index: Integer]: HCursor;

Standardowe kursory są indeksowane od zera w dół. Dla naszego kursora tworzymy stałą identyfikującą o wartości większej od zera.

const crMojKrzyz = 2;

Do pobrania kursora z zasobów używamy funkcji Win32API LoadCursor, która tworzy obiekt kursora i zwraca do niego uchwyt. Ten nowy uchwyt zapisujemy w tablicy Cursors na pozycji ustalonej przez naszą stałą. Jeśli zmienimy wartość właściwości Cursor na stałą crMojKrzyz, to kursor myszy przyjmie nasz własny wygląd.

procedure TForm1.FormCreate(Sender: TObject);
begin
  Screen.Cursors[crMojKrzyz] := LoadCursor (HInstance, 'KRZYZ');
  Screen.Cursor := crMojKrzyz;
end;


Tak utworzony kursor nie należy samodzielnie usuwać za pomocą funkcji DestroyCursor. Aplikacja robi to automatycznie.





...powrót