Mauszeiger zur Laufzeit erzeugen

Antworten
Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Mauszeiger zur Laufzeit erzeugen

Beitrag von Socke »

Hallo,

wie erstellt man zur Laufzeit einen Mauszeiger? Explizit ausschließen möchte ich die Möglichkeit ein Rastergrafik zu laden.

Bisher habe ich versucht ein TCursorImage zu erstellen. Beim Zeichnen erhalte ich aber folgende Fehlermeldung:

Code: Alles auswählen

(shooter:21628): Gdk-CRITICAL **: gdk_draw_rectangle: assertion `GDK_IS_DRAWABLE (drawable)' failed

Hab ich da jetzt den richtigen Ansatz, der nur unter GTK2 nicht funktioniert? Oder muss ich in die GTK2-API-Tiefen hinabsteigen?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Mauszeiger zur Laufzeit erzeugen

Beitrag von Teekeks »

Bitte zeige uns ein wenig Code wie du es bisher machst.
Ich kenne mich damit zwar nicht so gut aus aber vl hat sich ja auch nur ein einfacher Fehler dazwischen gemogelt den man selber übersieht...

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Mauszeiger zur Laufzeit erzeugen

Beitrag von Scotty »

Code: Alles auswählen

Screen.Cursors[crLow]:=LoadCursorFromLazarusResource('dummy');

Ansonsten kann man natürlich ein Dragimage dynamisch erstellen, allerdings mit etwas mehr Code. Und bei einem Blick in in die Graohics-unit fällt mir auf, dass TCursorImageImage.Create als Parameter TIconInfo mit einem Bitmap hat. Letzteres hab ich aber nicht ausprobiert.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Mauszeiger zur Laufzeit erzeugen

Beitrag von Socke »

Teekeks hat geschrieben:Bitte zeige uns ein wenig Code wie du es bisher machst.
Ich kenne mich damit zwar nicht so gut aus aber vl hat sich ja auch nur ein einfacher Fehler dazwischen gemogelt den man selber übersieht...

So ganz frei aus dem Gedächtnis:

Code: Alles auswählen

var
fcur: TCursorImage;
begin
  fcur := TCursorImage.Create;
  fcur.SetSize(18,18);
  fcur.Canvas.Rectangle(0,0,18,18);

Scotty hat geschrieben:Screen.Cursors[crLow]:=LoadCursorFromLazarusResource('dummy');
Ansonsten kann man natürlich ein Dragimage dynamisch erstellen, allerdings mit etwas mehr Code. Und bei einem Blick in in die Graohics-unit fällt mir auf, dass TCursorImageImage.Create als Parameter TIconInfo mit einem Bitmap hat. Letzteres hab ich aber nicht ausprobiert.

Ich möchte das erstellen einer Rastergrafik vermeiden, da ich (vorrangig) nicht unter Windows arbeite und ein Resize finde ich nicht ganz so toll. Dragimage werde ich sobald wie möglich mal googlen; Bei TCursorImage.Create() (meinst du das? ansonsten hab ichs noch nicht gesehen) hatte ich gar nicht auf die Parameter geschaut, da es ohne funktioniert hat.

Wichtig wäre auch, dass der automatisch erzeugt Zeigerschatten hinterher vorhanden ist; ansonsten kann ich den Cursor direkt auf meinen Canvas zeichnen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Mauszeiger zur Laufzeit erzeugen

Beitrag von Scotty »

Socke hat geschrieben:Dragimage werde ich sobald wie möglich mal googlen;

http://www.blong.com/Conferences/BorCon ... p/4114.htm

Antworten