Seite 1 von 2

Editorgadget

Verfasst: 19.09.2006 10:12
von roherter
Hi ich hätte mal zwei fragen:
1.Wie schalte ich die returntaste in einem Editorgadget aus?
2.Wie kann ich die eingabelänge begrenzen?

Verfasst: 19.09.2006 11:18
von Tafkadasom2k5
Achtung, nur Pseudo!

Code: Alles auswählen

;Begrenzen
 MaximAnzahlAnBuchstaben.l = 50
 BUFFER.s = GetGadgetText(#ID_Des_Stringgadgets)
 If LEN(BUFFER) > MaximAnzahlAnBuchstaben
   BUFFER=LEFT(BUFFER,MaximAnzahlAnBuchstaben)
   SetGadgetText(#ID_Des_Stringgadgets,BUFFER)
 EndIf

Code: Alles auswählen

;Backspace verhindern
;...Taste wurde gedrückt
BUFFER.s = GetGadgetText(#ID_Des_Stringgadgets)
If Len(BUFFER) < LEN(OLDBUFFER) AND Len(OLDBUFFER)>0
 SetGadgetText(#ID_Des_Stringgadgets,OLDBUFFER)
Else
 OLDBUFFER=BUFFER
EndIf
Nur so als Pseudo-Idee...

Gr33tz
Tafkadasom2k5

Verfasst: 19.09.2006 11:20
von ts-soft
Ich liebe euere Phantasien. Die einfache Variante:

Code: Alles auswählen

If OpenWindow(0, #PB_Ignore, 0, 150, 100, "")
  AddKeyboardShortcut(0, #PB_Shortcut_Return, 0)
  If CreateGadgetList(WindowID(0))
    EditorGadget(0, 0, 0, 150, 100)
    SendMessage_(GadgetID(0), #EM_LIMITTEXT, 20, 0)
  EndIf
  Repeat : Until WaitWindowEvent() = 16
EndIf
Der Keyboardshortcut führt ins leere, also kein Return, wäre sonst ein Callback erforderlich.
Die Message begrenzt die Eingabe auf 20 Zeichen, sollte einleuchten :wink:

Verfasst: 19.09.2006 11:24
von Tafkadasom2k5
ts-soft hat geschrieben:Ich liebe euere Phantasien.
Jo, das mit dem Shortcut in PB hatte ich jetzt nicht mehr aufm Schirm. Ausserdem seh ich gerade, dass ich RETURN mit BACKSPACE gerade verdreht hatte... :oops:
Ich dachte, er wollte verhindern, dass jemand was aus diesem Gadget löscht... ;)

Naja, aber immerhin ist meine Variante ist API-Frei ;)

Verfasst: 19.09.2006 11:27
von ts-soft
Tafkadasom2k5 hat geschrieben: Naja, aber immerhin ist meine Variante ist API-Frei ;)
Ob das ein Vorteil ist, da streiten die Geister :wink:

Verfasst: 19.09.2006 11:48
von Tafkadasom2k5
Naja, ich glaube, dass ist recht unbestritten ^^
Oder sehe ich das falsch, dass

DLL Aufruf->Funktion aufrufen->Auf DLL warten-> Ausgabe
langsamer ist als
Eigener Befehl (ASM) ->Eigener Befehl (ASM) -> Ausgabe ?

Noch dazu, dass man einfach auf Linux kompilieren könnte (okay, mir wäre das relativ schnurz, weil ich nichts für Linux schreibe :mrgreen: )...

Aber ich lasse mich eines Besseren belehren :)

Verfasst: 19.09.2006 11:57
von ts-soft
Tafkadasom2k5 hat geschrieben: Oder sehe ich das falsch, dass
Ja, siehste vollkommen falsch. Die eingebauten Funktionen von PB rufen
auch die API auf. Die DLLs brauchen im allgemeinen nicht geladen zu
werden, das hat Windows bereits gemacht. Nur noch nicht geladene werden
geladen, bei anderen wird nur der Referenzzähler hochgezählt. API-Aufrufe
geschehen auch per early-binding (Frühe Bindung), das heißt, sie werden
statisch geladen, nicht dynamisch (late-binding), wie bei LoadLibrary_ bzw.
OpenLibrary :wink:
Ich denke mal, das könnte man besser erklären, aber Du verstehst es schon

Verfasst: 19.09.2006 12:07
von roherter
Danke die Textlimitierung reicht mir ,Ich habe gemerkt das Return dann auch nicht mehr geht und das reicht für mein Projekt vollkommen. :allright:

Verfasst: 19.09.2006 12:20
von Kaeru Gaman
dass es für sawas keine standard-gadgets gibt.
ich mein, eingabe von nur zahlen, textlängenbegrenzung, sonstwas für features...
wird immer mal wieder gebraucht, und muss man jedes mal aufs neue stricken.
auf ein spezielles input-gadget, was auf sowas voreinstellbar ist,
wäre es nun wirklich nicht mehr angekommen.
(die kritik ziehlt auf MS, nicht auf PB)

Verfasst: 19.09.2006 12:30
von roherter
Da kann ich dir nur recht geben. :allright: