PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eigener Mauspfeil in Delphi?


aths
2004-10-17, 20:54:49
Wie kreiere ich einen eigenen Mauszeiger? Ich möchte ein 32x32-TImage umwandeln (und in Farben die Mauszeiger-Möglichkeiten schwarz, weiß, transparent oder invertiert kodieren) und das als Pfeil nutzen, sofern ich über einem anderen TImage bin. Da bietet der Objektinspektor ja an, sich was von den Standard-Pfeilen auszusuchen, stattdessen soll aber mein eigener Pfeil verwendet werden.

Nagelbrett
2004-10-17, 22:21:10
1. in Delphi unter Tools, Bildeditor kannst du die Resource-Datei deines Projektes einladen, dort einen neuen Cursor erstellen und zeichnen, dann speichern und das Projekt neu laden, falls du es gerade geöffnet hattest (ist wichtig, sonst wird die Änderung nicht sichtbar)
2. Screen.Cursors ist ein Array, in dem all die vordefinierten Cursor-Handles gespeichert sind. Diese haben Indices von 0 bis -22 oder so, für deine benutzerdefinierten kannst du also 1+ benutzen.
Mit Screen.Cursors[1] := LoadCursor(HInstance, 'Cursor1'); fügst du also deinen neuen Cursor dem Array hinzu ('Cursor1' ist hierbei der Name des Cursors in der Res-Datei, den kannst du im Bildeditor ändern), und mit Screen.Cursor := 1;
//bzw
Komponente.Cursor := 1; weist du ihn dann zu.. für die 1 kannst du dir natürlich auch eine Konstante anlegen, z.b. crMeinCursor oder sowas.

aths
2004-10-19, 04:17:49
Das funktioniert leider nicht.

screen.Cursors[1]:=LoadCursor(HInstance, 'Cursor1'); führt dazu, dass screen.Cursors[1] mit 65555 belegt wird. Doch weder mittels ibild.cursor:=1; noch mittels ibild.cursor:=screen.Cursors[1]; bekommt ibild den neuen Cursor, der in der .res-Datei gespeichert ist.

Nagelbrett
2004-10-19, 07:50:06
Sicher, dass du nach Ändern der Res-Datei auch das Projekt neu geladen hast? und dass der Cursor-Name stimmt?
Bei mir hats prächtig funktioniert... allerdings bin ich anfangs auch daran gescheitert, dass ich nicht neu geladen habe.

Omnicron
2004-10-19, 08:22:05
Sicher das dein Pfeil das richtige Format hat? Delphi gibt nämlich keine Fehlermeldung o.ä. deswegen aus.

Crushinator
2004-10-19, 12:09:56
aths,

es muß so funktionieren, wie Nagelbrett es beschrieben hat. Ich habe gerade ein kleines Beispiel (http://home.arcor.de/crushinator/files/athsCusrsor.rar) vorbereitet. (als D7-Source)

aths
2004-10-19, 14:17:52
Sicher, dass du nach Ändern der Res-Datei auch das Projekt neu geladen hast? und dass der Cursor-Name stimmt?Ja und ja.
Bei mir hats prächtig funktioniert... allerdings bin ich anfangs auch daran gescheitert, dass ich nicht neu geladen habe.Habe Cursor1 umbenannt und jetzt gehts.