Hallo Forum,
ich spiele gerade mit dem Gedanken, einen eigenen Input-Requester zu bauen.
Grund ist, dass ich nicht den kompletten Defaulttext markiert haben möchte, sondern nur einen definierten Bereich daraus.
Kann mir hier die API helfen oder ist es einfacher was eigenes zu bauen?
Gruß Scoty
			
			
									
									
						Input Requester
Re: Input Requester
@scoty
Kommt drauf an. Wenn du eine plattformunabhängige Lösung haben möchtest, dann ist es sinnvoller, ein eigenes Fenster zu basteln.
Wenn nicht, dann:
Das wolltest du doch oder?
(Das ist nur ein Beispiel, soll nur zeigen, dass man über FindWindow_() und SendMessage_() die Möglichkeit hat, ein paar Zeichen zu markieren. Um es richtig nutzen zu können, musst du das halt rauskopieren bzw. umändern, so dass es nicht "dauerhaft" markiert ist. Habs einfach mal testweise so geschrieben.)
			
			
									
									
						Kommt drauf an. Wenn du eine plattformunabhängige Lösung haben möchtest, dann ist es sinnvoller, ein eigenes Fenster zu basteln.
Wenn nicht, dann:
Code: Alles auswählen
EnableExplicit
Define EventID
Define Text$
Procedure RequesterCallBack(hWnd, uMsg, wParam, lParam)
  hWnd = FindWindow_("InputRequester",#Null)
  If hWnd
    hWnd = FindWindowEx_(hWnd,#Null,"Edit",#Null)
    If hWnd
      SendMessage_(hWnd,#EM_SETSEL,5,15)
    EndIf
  EndIf
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(1,10,10,100,20,"InputReq.",0)
  
  SetWindowCallback(@RequesterCallBack())
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID=#PB_Event_Gadget
      Select EventGadget()
        Case 1
          Text$ = InputRequester("Text eingeben","Geben Sie einen Text ein:","Vordefinierter Text")
          If Text$
            Debug Text$
          EndIf
      EndSelect
    EndIf
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf(Das ist nur ein Beispiel, soll nur zeigen, dass man über FindWindow_() und SendMessage_() die Möglichkeit hat, ein paar Zeichen zu markieren. Um es richtig nutzen zu können, musst du das halt rauskopieren bzw. umändern, so dass es nicht "dauerhaft" markiert ist. Habs einfach mal testweise so geschrieben.)
Re: Input Requester
Ich weiß nicht, ob es dir weiterhilft. Aber ich hatte mir vor paar Jahren nen eigenen Input-Requester gebastelt weil ich Passwort-Sternchen gebraucht habe.
Hier mal der Code:
Naja, ist recht simpler Code. Da ist keine weitere Erklärung wohl nötig...
			
			
									
									Hier mal der Code:
Code: Alles auswählen
;********************************************************************************************
; Dieser Dialog nimmt eine Benutzereingabe entgegen und gibt diese zurück.
;
; Autor: A. R. 
; Erstellt: 16.06.2010
;********************************************************************************************
EnableExplicit
Procedure.s InputDlg(title$, msg$, flags.l, parent.l = 0, def$ = "", width.l = 300, height.l = 90)
	Protected.l Window = 0, Text_Message = 0, String_Content = 0, Button_OK = 0
	Protected quit.b = #False, event.l
	#Menu_Return = $10
	
	Window = OpenWindow(#PB_Any, 0, 0, width, height, title$, #PB_Window_ScreenCentered, parent)
	If Not Window
		ProcedureReturn ""
	EndIf
	
	;- create gadgets
	Text_Message = TextGadget(#PB_Any, 10, 10, width - 20, 20, msg$)
	String_Content = StringGadget(#PB_Any, 10, 30, width- 20, 20, def$, flags)
	Button_OK = ButtonGadget(#PB_Any, width/2 - 50, 60, 100, 25, "OK")
	AddKeyboardShortcut(Window, #PB_Shortcut_Return, #Menu_Return)
	
	SetActiveGadget(String_Content)
	
	Repeat
		event = WaitWindowEvent()
		Select event
			Case #PB_Event_Menu
				Select EventMenu()
					Case #Menu_Return
						quit = #True
				EndSelect
			Case #PB_Event_Gadget
				Select EventGadget()
					Case Button_OK
						quit = #True
				EndSelect
			Case #PB_Event_CloseWindow
				quit = #True
		EndSelect 
	Until quit = #True
	
	def$ = GetGadgetText(String_Content)
	CloseWindow(Window)
	
	ProcedureReturn def$
EndProcedure
ThinkPad T61 (in Gedenken) | PureBasic 4.61 B1 (32) | Windows 7 (32SP1)  | ArchLinux (32) | Syllable (32)
						Re: Input Requester
Hallo,
danke für die schnellen Antworten. Es wird sicherlich auf den eigenen Requester hinauslaufen, in dem ich dann gleich per Parameter mit Defaultwerten meine zusatzinformationen übergeben kann.
Gruß Scoty
			
			
									
									
						danke für die schnellen Antworten. Es wird sicherlich auf den eigenen Requester hinauslaufen, in dem ich dann gleich per Parameter mit Defaultwerten meine zusatzinformationen übergeben kann.
Gruß Scoty

