Mauszeiger zur Laufzeit erzeugen

Mauszeiger zur Laufzeit erzeugen

Beitragvon Socke » 28. Feb 2011, 20:17 Mauszeiger zur Laufzeit erzeugen

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
Socke
Lazarusforum e. V.
 
Beiträge: 2683
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon Teekeks » 1. Mär 2011, 09:53 Re: Mauszeiger zur Laufzeit erzeugen

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...
Teekeks
 
Beiträge: 359
Registriert: 27. Mai 2009, 19:54
Wohnort: Cottbus
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2) | 
CPU-Target: x86
Nach oben

Beitragvon Scotty » 1. Mär 2011, 10:29 Re: Mauszeiger zur Laufzeit erzeugen

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.
Scotty
 
Beiträge: 770
Registriert: 4. Mai 2009, 12:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4 | 
CPU-Target: x86_64-linux-qt/gtk2
Nach oben

Beitragvon Socke » 1. Mär 2011, 10:54 Re: Mauszeiger zur Laufzeit erzeugen

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
Socke
Lazarusforum e. V.
 
Beiträge: 2683
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon Scotty » 1. Mär 2011, 13:17 Re: Mauszeiger zur Laufzeit erzeugen

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

http://www.blong.com/Conferences/BorCon ... p/4114.htm
Scotty
 
Beiträge: 770
Registriert: 4. Mai 2009, 12:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4 | 
CPU-Target: x86_64-linux-qt/gtk2
Nach oben

• Themenende •

Zurück zu Linux



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried