Seite 1 von 1

Editorgadget - Cursor in Black

Verfasst: 15.04.2016 11:31
von Velindos
Hallo,
möchte meinen Cursor in Black(bzw.White zurück) schalten. Habe es versucht, komme jedoch auf keine Lösung.

Code: Alles auswählen

Procedure MyShowCursor(State)
  If State
  	While ShowCursor_(#True) < 0
  		ShowCursor_(#False)
  	Wend
  Else
  	While ShowCursor_(#False) >= 0
  		ShowCursor_(#True)
  	Wend
  EndIf
EndProcedure

If OpenWindow(0, 0, 0, 322, 180, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	
	MeinEditorGadget = EditorGadget(0, 8, 8, 306, 133,#PB_Editor_ReadOnly) 
	SetGadgetColor(0, #PB_Gadget_FrontColor, $AAB220)
	SetGadgetColor(0, #PB_Gadget_BackColor, $000000)
	ButtonGadget(1, 8, 143, 100, 25, "Scroll")
	
	For a = 0 To 100
		AddGadgetItem(0, a, "Line "+Str(a))
	Next
	
; DestroyCaret_(); Cursor ausblenden
; 	MyShowCursor(0)
	
	Repeat
		ShowScrollBar_(GadgetID(0),#SB_VERT,0)
		Event = WaitWindowEvent()
		
		If Event = #PB_Event_Gadget
			Select EventGadget()
				Case 1
					;SendMessage_(GadgetID(0),#EM_SCROLLCARET,0,0)            ;Scroll to the End
					;SendMessage_(GadgetID(0),#EM_SCROLL,#SB_PAGEDOWN,0)      ;Scroll One Page by One Page
					SendMessage_(GadgetID(0),#EM_SETSEL, 0, 0)
					SendMessage_(GadgetID(0),#EM_LINESCROLL,0,20)             ;20 = Go to Line No 20 so you can go to any specific line
					; 	MyShowCursor(1)
					
					; >>>>>>>>>>>    Hier möchte ich den Cursor in Black einblenden!
					
			EndSelect
		EndIf
		
	Until Event = #PB_Event_CloseWindow
EndIf
Vielleicht weiss wäre mehr?

Gruss ... Velindos

Re: Editorgadget - Cursor in Black

Verfasst: 15.04.2016 12:22
von RSBasic

Re: Editorgadget - Cursor in Black

Verfasst: 17.04.2016 07:40
von udg
Hi

also bei mir funktioniert das mit meinem Code wunderbar. der Mauspfeil wird im EditorGadget und auf deinem Button schwarz. Wusste nicht wo er nun schwarz sein soll, darum hab ich den mal auf beides gesetzt. Nun weis ich nich genau ob der schwarze Arrow Windows standard ist. bei mir ist er es. Sollte der Mauspfeil nicht schwarz werden dann meld dich noch mal, denn dann include ich den blackArrow noch in den Code.

Code: Alles auswählen

Enumeration
  #btn_scroll
  #editor
EndEnumeration

Global blackArrow1, blackArrow2
Define.i Event, EventWindow, EventGadget, EventType, EventMenu, hWnd,  cur1, cursorpos.POINT

hwnd= OpenWindow(0, 0, 0, 322, 180, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  ; Ohne dies kann es zum cursor-flickern kommen
    SetClassLong_(blackArrow1, #GCL_HCURSOR, 0)
    SetClassLong_(blackArrow2, #GCL_HCURSOR, 0)
  ; Cursor laden
    cur1 = LoadImage_(0,"c:\windows\cursors\arrow_r.cur",#IMAGE_CURSOR,0,0,#LR_LOADFROMFILE|#LR_DEFAULTSIZE)

    blackArrow1 = EditorGadget(#editor, 8, 8, 306, 133,#PB_Editor_ReadOnly)
    SetGadgetColor(#editor, #PB_Gadget_FrontColor, $AAB220)
    SetGadgetColor(#editor, #PB_Gadget_BackColor, $000000)
  
    blackArrow2 = ButtonGadget(#btn_scroll, 8, 143, 100, 25, "Scroll")
   
   For a = 0 To 100
      AddGadgetItem(#editor, a, "Line "+Str(a))
   Next

   
Repeat
  Event = WaitWindowEvent()
  EventGadget = EventGadget()
  EventType = EventType()
  Gosub changecursor
     
  ShowScrollBar_(GadgetID(#editor),#SB_VERT,0)
            
  If Event = #PB_Event_Gadget
     Select EventGadget()
        Case #btn_scroll
           SendMessage_(GadgetID(#editor),#EM_SETSEL, 0, 0)
           SendMessage_(GadgetID(#editor),#EM_LINESCROLL,0,20) ;20 = Go to Line No 20 so you can go to any specific line
     EndSelect
  EndIf
      
Until Event = #PB_Event_CloseWindow
DestroyCursor_(cur1)
End

;==================================
; SUB zum wechseln des MouseCursors
;==================================
changecursor:
GetCursorPos_(cursorpos.POINT)
  MapWindowPoints_(0, hWnd, cursorpos, 1)
    Select ChildWindowFromPoint_(hWnd, cursorpos\x | cursorpos\y << 32)
      Case blackArrow1 : SetCursor_(cur1)  
      Case blackArrow2 : SetCursor_(cur1)  
    EndSelect
Return

Re: Editorgadget - Cursor in Black

Verfasst: 17.04.2016 11:39
von RSBasic
@Velindos
Bitte genau definieren, welchen Cursor du meinst, ob Mauscursor oder Tastaturcursor (Caret).

Re: Editorgadget - Cursor in Black

Verfasst: 19.04.2016 14:44
von udg
Hat mal jemand meinen code ausprobiert ob der Pfeil schwarz wird? Ob er Windows Standard ist oder ich ihn inkludieren muss.

Re: Editorgadget - Cursor in Black

Verfasst: 19.04.2016 15:09
von RSBasic
Ja, ich. Dein Code funktioniert.

Re: Editorgadget - Cursor in Black

Verfasst: 19.04.2016 16:17
von udg
Supi, danke. Das Feedback wäre vom Threadersteller wünschenswert gewesen.

Grüße

Re: Editorgadget - Cursor in Black

Verfasst: 21.04.2016 08:24
von Velindos
Hallo Leute,
war Unterwegs, sorry - daher jetzt erst!

Habe mich für die Variante vom Link entschieden.

Code: Alles auswählen

CreateImage(0, 16, 20)
StartDrawing(ImageOutput(0))
Box(0,0,12,20,(#Yellow ! RGB(136,136,064))) ;The req color xor The back color
StopDrawing()

Font1=LoadFont(#PB_Any,"Courier",14)

OpenWindow(0,0,0,300,190,"",#PB_Window_SystemMenu| #PB_Window_ScreenCentered)

EditorGadget(0,20,20,260,24)
EditorGadget(1,20,60,260,25)
SetGadgetFont(1,FontID(Font1))

EditorGadget(2,20,100,260,25)
SetGadgetColor(2,#PB_Gadget_BackColor,$2E0A00)
SetGadgetColor(2,#PB_Gadget_FrontColor,#Yellow)
SetGadgetFont(2,FontID(Font1))

EditorGadget(3,20,140,260,25)
SetGadgetColor(3,#PB_Gadget_BackColor,$2E0A00)
SetGadgetColor(3,#PB_Gadget_FrontColor,#Yellow)
SetGadgetFont(3,FontID(Font1))

Repeat
	Event=WaitWindowEvent()
	If Event=#PB_Event_Gadget
		If EventGadget()=0
			DestroyCaret_()
			CreateCaret_(GadgetID(0),0,1,14)
			SetCaretBlinkTime_(500) ; immobile = -1, normal blinking = 500
			ShowCaret_(0)
		EndIf
		If EventGadget()=1
			DestroyCaret_()
			CreateCaret_(GadgetID(1),1,10,20)
			SetCaretBlinkTime_(500) ; immobile = -1, normal blinking = 500
			ShowCaret_(0)
		EndIf
		If EventGadget()=2
			DestroyCaret_()
			CreateCaret_(GadgetID(2),0,10,20)
			SetCaretBlinkTime_(500) ; immobile = -1, normal blinking = 500
			ShowCaret_(0)
		EndIf
		If EventGadget()=3
			DestroyCaret_()
			CreateCaret_(GadgetID(3),ImageID(0),0,0)
			SetCaretBlinkTime_(500) ; immobile = -1, normal blinking = 500
			ShowCaret_(0)
		EndIf
	EndIf
Until Event=#PB_Event_CloseWindow
Variante hat nur ein Problem, wenn man den Cursor anklickt geht er verloren! Na kann damit mal leben! Danke für eure Mitarbeit!

Gruss ... Velindos