AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

System Cursor austauschen

Ein Thema von Satyr · begonnen am 8. Aug 2012 · letzter Beitrag vom 12. Aug 2012
Antwort Antwort
Seite 1 von 2  1 2      
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#1

System Cursor austauschen

  Alt 8. Aug 2012, 13:57
Huhu,

ich weiß nicht ob das Thema hier richtig ist. Wenn nicht, bitte verschieben.

Meine Frage ist, ob ich die Vordefinierten Cursor temporär austauschen kann. Wie ich einen eigen Cursor als Zusatz einbinde und aktiviere weiß ich. Aber gibt es eine Möglichkeit (nur für ein Programm) zu bestimmen, welcher Cursor genau beim Einbinden von crHourGlass z.B. genommen werden soll? Also nicht der vom System vordefinierte...

Gruß,
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: System Cursor austauschen

  Alt 8. Aug 2012, 17:01
Screen.Cursors[crHourglass] := LoadCursorFromFile({dateiname=}'cursors\sexygirl.ani')
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: System Cursor austauschen

  Alt 8. Aug 2012, 17:23
Ah ok, danke. Ich habs immer mit Applicatio.Cursors versucht. Deins klappt, vielen Dank .
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: System Cursor austauschen

  Alt 12. Aug 2012, 17:56
Nabend,

ich nochmal. Ich habe die letzten Tage ein wenig experimentiert und scree.cursors ist mir nicht "global" genug. Nach einigem Googlen stieß ich auf SetSystemCursor().
Das funktioniert wunderbar. Nur habe ich mit dem zurücksetzen Probleme. Etwas Code:

Zuerst definiere ich die eigentliche BackupVariable im Unit Kopf:

Delphi-Quellcode:
...
var
  Form1: TForm1;
  CurSysCursor: HCURSOR;
...
Dann rufe ich einen Button auf, der diese Backup Variable EIGENTLICH füllen soll und danach den Mauszeiger ändern:

Delphi-Quellcode:
procedure TForm1.Button11Click(Sender: TObject);
var h: THandle;
begin
CurSysCursor := GetCursor;

h:=LoadImage(0, PChar(ExtractFilePath(Application.Exename) + '..\img\cursor\1.cur'), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE or LR_LOADFROMFILE);
Screen.Cursors[1]:=h;

SetSystemCursor(Screen.Cursors[1],OCR_NORMAL);
end;
Das funktioniert. Möchte ich aber mit einem anderen Button den Cursor zurücksetzen, passiert... nichts.
Code:

SetSystemCursor(CurSysCursor, OCR_NORMAL); Ich muss zugeben, ich beziehe mich bei dem Code "nur" auf gefundene Beispiele, weil ich leider selbst zu wenig Ahnung in dem Bereich habe.
Warum funktioniert das Zurücksetzen nicht? Gibt es andere "Notfall Reset" Funktionen die ich nutzen könnte? Hoffe Ihr könnt helfen...

Gruß,
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

AW: System Cursor austauschen

  Alt 12. Aug 2012, 18:02
SetSystemCursor
Zitat:
hcur [in]

Type: HCURSOR

A handle to the cursor. The function replaces the contents of the system cursor specified by id with the contents of the cursor handled by hcur.

The system destroys hcur by calling the DestroyCursor function. Therefore, hcur cannot be a cursor loaded using the LoadCursor function. To specify a cursor loaded from a resource, copy the cursor using the CopyCursor function, then pass the copy to SetSystemCursor.
Wenn ich das richtig verstehe, wird der Cursor inhaltlich überschrieben, behält aber die id bei. Daher kann man ihn über die id nicht wieder herstellen. Sollte ich das fehlinterpretiert haben, bitte ich einen Wissenden um Korrektur.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: System Cursor austauschen

  Alt 12. Aug 2012, 18:06
Das heisst ich kann meinen eigenen Cursor nicht einfach per ID setzen? Ich fand das ganz praktisch, weil ich ihn nicht per res laden wollte sollte ein wenig (datei-)austauschbarer.
Nur habe ich da nichts gefunden, wie das ohne ID geht (kann natürlich an fehlendem Wissen meinerseits liegen).
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

AW: System Cursor austauschen

  Alt 12. Aug 2012, 18:17
Ich habe so etwas noch nie versucht, aber wenn ich das richtig verstehe, benötigst Du zunächst eine Kopie des Originalcursors. Klappt es so?
Delphi-Quellcode:
CurSysCursor := GetCursor;
OldCursor := CopyCursor(CurSysCursor);
Und am Ende dann OldCursor statt CurSysCursor zuweisen. Diese Angaben sind allerdings ohne Gewähr. Übrigens sollte man wohl noch die entsprechenden Rückgabewerte auswerten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: System Cursor austauschen

  Alt 12. Aug 2012, 18:25
Wieso eine Kopie? CurSysCursor ist doch schon quasi eine Kopie, sobald es mit dem aktuellen Cursor gefüllt wird?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

AW: System Cursor austauschen

  Alt 12. Aug 2012, 18:26
Hast Du meinen Vorschlag einmal ausprobiert?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: System Cursor austauschen

  Alt 12. Aug 2012, 18:49
Ich bin grad unterwegs vom Büro nach Hause. Gib mir 20 Minuten, dann teste ich.
Als welchen Typ soll ich denn die OldCursor Variable definieren?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz