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