Input Requester

Für allgemeine Fragen zur Programmierung mit PureBasic.
scoty
Beiträge: 64
Registriert: 18.10.2005 16:43
Wohnort: Raum Hildesheim

Input Requester

Beitrag von scoty »

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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Input Requester

Beitrag von RSBasic »

@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:

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 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.)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
shadow
Beiträge: 189
Registriert: 23.03.2005 17:52
Wohnort: Lübeck

Re: Input Requester

Beitrag von shadow »

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:

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
Naja, ist recht simpler Code. Da ist keine weitere Erklärung wohl nötig...
ThinkPad T61 (in Gedenken) | PureBasic 4.61 B1 (32) | Windows 7 (32SP1) | ArchLinux (32) | Syllable (32)
scoty
Beiträge: 64
Registriert: 18.10.2005 16:43
Wohnort: Raum Hildesheim

Re: Input Requester

Beitrag von scoty »

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
Antworten