| |
|
|
rquindt | allô
Gibt es une Possibilité, chez qui Eingabe une Vorgabe-masque trop verwenden?
je voudrais z.B. chez einer Datumseingabe "12.05.2016" vorgeben. chez qui Eingabe devoir seulement payons erlaubt son et à den se mettre, à denen qui "." ist, soll qui Kursor cette automatisch überspringen.
une zweite Version währe "2X". dh. à qui ersten Stelle darf seulement "0-9" eingegeben volonté, à qui zweiten seulement "A-Z" |
|
|
| |
|
|
|
H.Brill | Zur Datumseingabe serait je cela DateEdit verwenden. là peux du un date vorgeben. Siehe le chapitre 20.5 dans qui Aider.
Zur Version 2 : là pourrait on cela Modifier le champ de subclassen et avec den regulären Ausdrücken travailler. Suchmuster qui ersten Stelle : "[0-9]" Suchmuster qui zweiten Stelle : "[A-Z]" |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 01.05.2016 ▲ |
|
|
|
|
rquindt | allô H.Brill
merci pour den Tip avec dem DateEdit. j'ai es la fois getestet, funktioniert prima.
Gibt es qui Possibilité, aussi un leeres Datumsfeld trop transfert sans cela cela aktuelle date erscheint? (00.00.0000)
là je mich so lente dans XProfan einarbeite (habe auparavant dans DOS Powerbasic programmiert) c'est moi cela avec dem SubClassen encore pas entier bien sûr. Hättest Du là un Beispiel pour mich? |
|
|
| |
|
|
|
H.Brill | Pour cela SubClassen la fois un Anfang :
$H Messages.ph
Déclarer Handle Éditer1
Déclarer Int ende, String edittext
Fenêtre 400, 200
Éditer1 = Créer("Edit", %HWnd, », 10, 10, 80, 20)
ende = 0
Utilisateur Messages $10
SubClass Éditer1, 1
WhileNot ende
WaitInput
Cas %UMessage = $10 : ende = 1
Endwhile
SubClass Éditer1, 0
SubClassProc
Si SubClassMessage(Éditer1, ~wm_KeyUp)
edittext = GetText $(Éditer1)
Messagebox(edittext, », 0)
SetFocus(Éditer1)
Set("WinProc", 0)
EndIf
ENDPROC
Fin
|
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 01.05.2016 ▲ |
|
|
|
|
rquindt | allô H.Brill
j'ai Deinen Code la fois un bisschen umgebaut. avec cela peux je maintenant per SubClassing cela Éditer-champ Travailler. Den Code habe je comme Dossier abgespeichert.
j'ai versucht den Code ici einzufügen, mais dabei allez qui Formatierung verloren. Gibt es une Anleitung,comment on cela umgeht?
peux Du Dir meinen Code la fois regarder? peux on encore quoi optimaliser?
$H Messages.ph $H Windows.ph Def GetSysColor(1) !"USER32","GetSysColor"
cls GetSysColor(15) UseFont "Arial",15,0,0,0,0 SETDIALOGFONT 1 Déclarer Handle Éditer1, Btn1 Déclarer Int ende, String edittext, ErlaubteZeichen Fenêtre 400, 200 Éditer1 = Créer("Éditer", %HWnd, "", 10, 50, 80, 20) SetStyle Éditer1, GetStyle(Éditer1) | ~ES_UPPERCASE '--- Buchstaben seulement comme Großbuchstaben ausgeben @SendMessage(Éditer1,$00C5,2,0) '--- paramètre 3 erlaubt Anzahl max. se mettre
btn1 = Créer("Button", %HWnd, "Fertig", 10, 80, 60, 25)
ende = 0
Utilisateur Messages $10 SetFocus(Éditer1) SubClass Éditer1, 1
WhileNot ende
WaitInput Si Clicked(btn1) edittext = GetText$(Éditer1) Messagebox(edittext, "", 0) SetFocus(Éditer1) EndIf Cas %UMessage = $10 : ende = 1 '--- la fenêtre schließen angeclickt
Endwhile
SubClass Éditer1, 0
Fin
SubclassProc
Déclarer p&, ch$, s$ si &sWnd = Éditer1 si %sMessage=258//wm_char p& = Hiword(sendMessage(Éditer1,$B0,0,0))//em_getSel '--- aktuelle Cursor-Position (seulement Spalte) imEditfeld s$ = getText$(Éditer1) '--- bisheriger Text dans Éditer ch$ = upper$(chr$(&swParam)) '--- letztes eingegebenes marque, Asci-Code, dans Großbuchstaben gewandelt
Si p& = 1 ErlaubteZeichen = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" D'autre ErlaubteZeichen = "0123456789" EndIf ifnot instr(ch$,ErlaubteZeichen) '--- si cela dernier gedrückte marque pas qui liste entspricht Si &swParam = 8 '--- Backspace / effacer si p& s$ = Del$(s$,p&,1) '--- champ à Cursorposition effacer dec p&,1 endif EndIf SetText Éditer1,s$ '--- String à Éditer-champ transfert sendMessage(Éditer1,$B1,p&,p&)//em_setSel '--- neue Cursor-Position festlegen d'autre s$ = ins$(ch$,s$,p& + 1) '--- Eingabe à Cursor+1 insérer s$=Mid$(s$,1,2) '--- seulement qui ersten 2 marque prendre, si Eingabe länger son sollte par insérer setText Éditer1,s$ '--- String à Éditer-champ transfert sendMessage(Éditer1,$B1,p&+1,p&+1)//em_setSel '--- neue Cursor-Position festlegen endif set("winproc",0) endif EndIf
ENDPROC
|
|
|
| |
|
|
|
Michael W. | j'étais la fois so libre...
Beachte cela Ausrufezeichen derrière dem CODE-journée.
cela doppelte Si peux ersetzt volonté par
|
|
|
| System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 05.05.2016 ▲ |
|
|
|
|
rquindt | allô Michael
merci pour den Tip je habs geändert.
comment bekommt on car den Code lesbar ins Forum? |
|
|
| |
|
|
|
Michael W. | Über dem Modifier le champ de steht "Beitrag|Schrift|Smilies|ein Pfeil". chez letzterem wählst Du simple Voir le texte source et fügst là Deinen Quellcode un. si cela erste marque direct derrière qui öffnenden Klammer un "!" ist, ensuite wird qui Code belassen comment il est. |
|
|
| |
|
|
|
rquindt | merci pour den Tip. je habs juste la fois getestet. Sollte beim prochain la fois aucun Probleme plus donner.
peux homme eigentlich plusieurs SubClassing Routinen nutzen ( je Modifier le champ de naturellement seulement une) ou bien peux vom XProfan seulement une verwaltet volonté? |
|
|
| |
|
|
|
Jörg Sellmeyer | "Es peux seulement une donner!"
mais qui ist vielseitig. tu peux dans deiner SubClassProc oui verschiedene Contols adressieren et qui aussi encore je pour Message unterschiedlich behandeln.
Kleiner Tipp encore: qui Aider hat en supplément aussi détaillé Erläuterungen de Roland. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 06.05.2016 ▲ |
|
|
|
|
p.specht
| Hab´ mir´s pour XProfan11 portiert - je hoffe, c'est OK pour Euch:
'SubclassProc zur Festlegung de Eingabemöglichkeiten
'2016-05 de rquint avec wichtigen Beiträgen de H.Brill, Michael W.
'et Jörg Sellmeyer, 2018-12 sur XProfan11 zurückgequält de p.specht
$H Messages.ph
$H Windows.ph
Def GetSysColor(1) !"User32","GetSysColor"
Cls GetSysColor(15)
UseFont Arial,15,0,0,0,0
SETDIALOGFONT 1
Déclarer Éditer1&, Btn1&
Déclarer ende&, edittext$, ErlaubteZeichen$
Fenêtre 400, 200
Edit1& = Créer("Edit", %HWnd, », 10, 50, 80, 20)
'--- Buchstaben seulement comme Großbuchstaben ausgeben
SetStyle Éditer1&, GetStyle(Éditer1&) | ~ES_UPPERCASE
'--- paramètre 3 erlaubt Anzahl max. se mettre:
@SendMessage(Éditer1&,$00C5,2,0)
Btn1& = Créer("Button", %HWnd, "Fertig", 10, 80, 60, 25)
ende& = 0
Utilisateur Messages $10
SetFocus(Éditer1&)
SubClass Éditer1&, 1
WhileNot ende&
WaitInput
Si Clicked(Btn1&)
edittext$ = GetText $(Éditer1&)
Messagebox(edittext$, », 0)
SetFocus(Éditer1&)
EndIf
Cas %UMessage = $10 : ende& = 1
'--- la fenêtre schließen angeclickt
Endwhile
Main:
SubClass Éditer1&, 0
Fin
SubclassProc
Déclarer p&, ch$, s$
' Vorschlag de J. Sellmeyer pour Verwendung dans mehreren Editcontrol-Feldern:
'si &sWnd = Éditer1&
' si %sMessage=258//wm_char
' SetMenuItem 4000
' elseif %sMessage=xxx//wm_...
' SetMenuItem 4001
' Endif
'Elseif &sWnd = Éditer2&
' si %sMessage=258//wm_char
' SetMenuItem 4001
' Elseif %sMessage=xxx//wm_...
' SetMenuItem 4003
' Endif
'EndIf
si &sWnd = Éditer1&
si %sMessage=258//wm_char
'--- aktuelle Cursor-Position (seulement Spalte) im Modifier le champ de:
p& = Hiword(sendMessage(Éditer1&,$B0,0,0))//em_getSel
s$ = getText$(Éditer1&)'--- bisheriger Text dans Éditer
'--- letztes eingegebenes marque, Asci-Code, dans Großbuchstaben gewandelt
ch$ = upper$(chr$(&swParam))
Si p& = 1
ErlaubteZeichen$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
D'autre
ErlaubteZeichen$ = "0123456789"
EndIf
'--- si cela dernier gedrückte marque pas qui liste entspricht:
ifnot instr(ch$,ErlaubteZeichen$)
Si &swParam = 8'--- Backspace / effacer
si p&
s$ = Del$(s$,p&,1)'--- champ à Cursorposition effacer
dec p&,1
endif
EndIf
SetText Éditer1&,s$'--- String à Éditer-champ transfert
sendMessage(Éditer1&,$B1,p&,p&)//em_setSel '--- neue Cursor-Position
d'autre
s$ = ins$(ch$,s$,p& + 1)'--- Eingabe à Cursor+1 insérer
'--- seulement qui ersten 2 marque prendre, si Eingabe par insérer länger son sollte:
s$=Mid $(s$,1,2)
setText Éditer1&,s$'--- String à Éditer-champ transfert
sendMessage(Éditer1&,$B1,p&+1,p&+1)//em_setSel '--- neue Cursor-Position
endif
set("winproc",0)
endif
EndIf
ENDPROC
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 09.12.2018 ▲ |
|
|
|