Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools

Helfer & Tools Programme für und in XProfan und Fragen dazu.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag avs4you_com Lizenz oder Abo?
Aufrufe: 39, Antworten: 3
Gehe zum ersten neuen Beitrag Hilfe bei Script Erstellung
Aufrufe: 55, Antworten: 6
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26737, Antworten: 4207
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 144, Antworten: 15
Gehe zum ersten neuen Beitrag Grand Prix 2012 Eurovision
Aufrufe: 41, Antworten: 4
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7576, Antworten: 179
Gehe zum ersten neuen Beitrag Verlust der Internetverbindung
Aufrufe: 47, Antworten: 2
Gehe zum ersten neuen Beitrag Acer Aspire 8745ZG fährt...
Aufrufe: 32, Antworten: 4
Gehe zum ersten neuen Beitrag Dateien lassen sich nicht...
Aufrufe: 38, Antworten: 3
Gehe zum ersten neuen Beitrag Programmvorstellung:...
Aufrufe: 27, Antworten: 1
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30.07.2011, 12:05   #1 (Direktlink)
Weiß worum´s geht
 
Registriert seit: 20.02.2009
Ort: Essen
Beiträge: 119
Standard NEdit.dll

Hallo Leute,

habe vor Jahren von Franks Seite eine DLL (NEdit) heruntergeladen. mit dieser Dll war es ganz leicht möglich EDIT's nur die nummerische Eingabe zu erlauben. Alle Eingabe bis auf Komma, Punkt und Zahl wurden ignoriert.

Diese DLL ist mir leider verloren gegangen und auf Franks Seite ist sie auch nicht mehr. Hat sie jemand von Euch noch? Kann sie mir Jemand besorgen?
__________________
Viele Grüsse
Mike

Window XP Prof SP3 Windows 7 ultimate
Xprofan X2
cyberangle ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 30.07.2011, 12:34   #2 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Viele meiner älteren Tools findest du auf Jacs Seite: bloody random - Frank Abbings Software
Die Dll ist auch dabei, obwohl du das heute auch in reinem XProfan-Code per Subclassing realisieren kannst.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 30.07.2011, 15:43   #3 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

Jupp.
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Alt 31.07.2011, 13:41   #4 (Direktlink)
Weiß worum´s geht
 
Registriert seit: 20.02.2009
Ort: Essen
Beiträge: 119
Standard

Vielen Dank an Euch,

das Mit dem Subclassen hatte ich schon gelesen, aber das übersteigt noch meine Programmierkünste.
__________________
Viele Grüsse
Mike

Window XP Prof SP3 Windows 7 ultimate
Xprofan X2
cyberangle ist offline   Mit Zitat antworten
Alt 31.07.2011, 14:50   #5 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

Das ist eigentlich nicht schwer. Sogar ziemlich einfach.
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 31.07.2011, 21:33   #6 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
Standard

Hallo cyberangle

In Deinem speziellen Falle geht es auch ohne DLL und Subclassing.

Code:
$H Messages.PH
Def %SIG 0  ' Wenn 1, dann + und - zulassen
Def %HEX 0  ' Wenn 1, dann HEX-Zahlen zulassen

Proc EditNum
  Var String Zeile = GetText$(Editor)
  Declare String Sel, Out
  SendMessage(Editor, ~EM_SETSEL, 0, Len(Zeile))
  WhileLoop Len(Zeile)
    Sel = Mid$(Zeile, &loop, 1)
    Select Sel
      CaseOf "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", ","
        Out = Out + Sel
      CaseOf "+", "-"
        Case %Sig : Out = Out + Sel
      CaseOf "a", "b", "c", "d", "e", "g", "A", "B", "C", "D", "E", "F"
        Case %HEX : Out = Out + Sel
    EndSelect
  EndWhile
  SendMessage(Editor, ~EM_REPLACESEL, 0, Addr(Out))
  SendMessage(Editor, ~EM_SETSEL, Len(Out), Len(Out))
EndProc

CLS
Var Int Editor = Create("Edit", %hwnd, "", 4, 4, 128, 22)
While 1
  WaitInput
  If GetFocus(Editor)
    EditNum
  EndIf
EndWhile
End
@Jac Subclassing ist einfach, aber man muß auch wissen, welche Botschaften in jeweiligen Control zu behandeln sind und welche Parameter die haben. Da muß sich der Einsteiger erst mal durchwuseln. Und so lange ist es dann eben doch nicht ganz einfach.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 31.07.2011, 23:10   #7 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

Für Profan 11.2a gibts noch ein Problem: Das Auslesen des Wertes aus dem Feld will nicht so recht klappen, der Cursor ist dort gefangen. Oder mach ich was falsch? Hier meine Versionsrückübersetzung des Programms von Volkmar:
Code:
$H Messages.PH
Def %SIG 0  ' Wenn 1, dann + und - zulassen
Def %HEX 0  ' Wenn 1, dann HEX-Zahlen zulassen

Proc EditNum
  Var Zeile$ = GetText$(Editor&)
  Declare Sel$, Out$
  SendMessage(Editor&, ~EM_SETSEL, 0, Len(Zeile$))
  WhileLoop Len(Zeile$)
    Sel$ = Mid$(Zeile$, &loop, 1)
    Select Sel$
      CaseOf "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", ","
        Out$ = Out$ + Sel$
      CaseOf "+", "-"
        Case %Sig : Out$ = Out$ + Sel$
      CaseOf "a", "b", "c", "d", "e", "g", "A", "B", "C", "D", "E", "F"
        Case %HEX : Out& = Out& + Sel&
    EndSelect
  EndWhile
  SendMessage(Editor&, ~EM_REPLACESEL, 0, Addr(Out$))
  SendMessage(Editor&, ~EM_SETSEL, Len(Out$), Len(Out$))
EndProc

CLS
Var Editor& = Create("Edit", %hwnd, "", 4, 4, 128, 22)
While 1
  WaitInput
  If GetFocus(Editor&)
   EditNum
  EndIf
EndWhile
End
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3
p. specht ist offline   Mit Zitat antworten
Alt 01.08.2011, 00:39   #8 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard

Wäre schön, wenn jemand noch eine SubClass Version posten könnte,
weil irgendwie funzt das bei mir nie so richtig, hab da bestimmt was
verkehrt verstanden
Code:
$H Messages.PH
CLS

Var Editor& = Create("Edit", %hwnd, "", 100, 100, 128, 22)
SubClass Editor&, 1

While 1
  WaitInput
EndWhile
End

SubClassProc
  If SubClassMessage(Editor&, ~WM_KEYDOWN)
    Select &sWParam
      CaseOf 65
        Set("WinProc", 0)
      Otherwise
        Set("WinProc", 1)
    EndSelect
  EndIf
EndProc
Bei einem kleinen a sollte jetzt die WindowsProc nicht mehr aufgerufen
werden, somit das a nie geschrieben werden, dem ist aber nicht so.

Deshalb wäre ein Beispiel schön.
__________________
Gruß Thomas

Wenn mir früher jemand gesagt hätte, ich würde
freiwillig eine Wanze mit mir herum tragen und sie
auch noch selbst aufladen, hätte ich laut gelacht.

Heute habe ich ein Smartphone.


http://realsource.de
ts-soft ist gerade online   Mit Zitat antworten
Alt 01.08.2011, 02:21   #9 (Direktlink)
Stammuser
 
Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
Standard

Ohne SubClass und NEdit.dll verwende ich :
Code:
Proc NUMWERT  ' AUSWERTUNG auf Zeichen und Stellen
    Parameters ED.N&,ED.N%
    var a$="abcdefghijklmnopqrstuvwxyz"
    a$=a$+Upper$("abcdefghijklmnopqrstuvwxyz")
    a$=a$+"!§$%&/()=?´´*':;,-_²³{[]}\^°<>|++-"
    var c$=""
    WhileLoop len(a$)
      c$ = MID$(a$,&Loop,1)        ' c$= der nte Stringteil
      Settext ED.N&,@Translate$(gettext$(ED.N&),c$,"")  ' unzulässige löschen
      Settext ED.N&,@Translate$(gettext$(ED.N&),"..",".")  ' doppelte löschen
    EndWhile
    a$=trim$(gettext$(ED.N&))

    WhileLoop ED.N%+1
      @Match$("~.", a$)
      If (%MatchPos>0) AND (%MatchPos<ED.N%+1)
        a$="0"+a$
      EndIf
    EndWhile

    If len(a$)=ED.N%
      case @IsKey(8):a$=left$(a$,len(a$))    
      casenot @IsKey(8):a$=left$(a$,ED.N%)+"."
    EndIf

    SetText ED.N&,a$
    sendmessage(ED.N&,$00B1,len(gettext$(ED.N&)),len(gettext$(ED.N&))+1) 'Cursor ans Ende

EndProc

Proc CheckChars

    Parameters CC_I%,CC_Erlaubt$
    Declare CC_GT$,CC_ZW$, CC_x%
    CC_GT$= Gettext$(CC_I%)
    CC_x%=1

    WhileLoop Len(CC_GT$)
        CC_ZW$ = Mid$(CC_GT$,CC_x%,1)
        If Instr(CC_ZW$,CC_Erlaubt$)=0
           CC_GT$=Translate$(CC_GT$,CC_ZW$,"")
           BREAK
           dec CC_x%
        EndIf
        inc CC_x%
    EndWhile
    Settext CC_I%, CC_GT$
    sendmessage( CC_I%,$00B1,CC_x%-1,CC_x%-1)
EndProc

Declare Ed1%, Ed2%
Cls
Ed1%=CreateEdit(%hWnd,"",20,40,100,22)

Ed2%=CreateEdit(%hWnd,"",20,80,100,22)
@sendmessage(Ed2%,$00C5,6,0)  ' zul. 6 Zeichen : nnn.nn

SetFocus( Ed1%)
While 0=0
  WaitInput
  case GetFocus(Ed1%) AND (%MouseKey=0): CheckChars Ed1%,"0123456789." 'Handle, zul. Zeichen
  case GetFocus(Ed2%) AND (%MouseKey=0): NUMWERT Ed2%,3 'Handle, Zeichen vorm Komma
EndWhile

End
Nicht optimal, aber es geht halt.

Gruß Thomas
THFR ist offline   Mit Zitat antworten
Alt 01.08.2011, 15:54   #10 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
Standard

Hallo

@P.Specht: Eigentlich hast Du fast alles richtig gemacht, aber:
Case %HEX : Out$ = Out$ + Sel$
Ist aber eigentlich egal, muß trotzdem gehen und geht bei mir auch unter XPofan 11 und wenn ich die ganze Select-Geschichte durch IFs ersetze auch unter XProfan 8. Die Botschaft ~Em_SetSel soll ja bei diesen Parametern den Cursor immer hinter die Einfügestelle setzen (Anfang und Ende der Markierung identisch markiert nichts und setzt den Cursor auf diese Position, also Länge der korrigierten Einfügung). Aber möglicherweise wäre SendMessage(Editor&, ~EM_SETSEL, -1, Len(Out$)) besser. So habe ich es gerade in der Beschreibung von SetSel gefunden. -1 in wParam markiert nichts und setzt Cursor auf Position in lParam. Meine schnelle Idee geht also möglicherweise nicht überall gleichermaßen.

@ts-soft: 65 ist der Großbuchstabe A. Weiterhin solltest Du statt wm_keydown wm_Char verwenden, dann klappt das.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 01.08.2011, 16:07   #11 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

@Volkmar: Sowohl die Originalversion als auch SendMessage(Editor&, ~EM_SETSEL, -1, Len(Out$)) korrigieren zwar an der richtigen Stelle, hüpfen aber sofort danach ans jeweilige Ende. Ist das Absicht?
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3
p. specht ist offline   Mit Zitat antworten
Alt 01.08.2011, 16:34   #12 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
Standard

Jetzt wird mir das Problem klar. Ich lese immer den kompletten Editorinhalt und schreibe den korrigiert zurück. Damit steht der Cursor wirklich immer am Ende. Mittenrein was korrigieren wird dann wirklich zur Qual. Ich habe eben mal auf die Schnelle versucht, was zu ändern, aber dann kommt bisher Unsinn raus.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 01.08.2011, 16:47   #13 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
Standard

Ich habe es nun doch geschafft. Hier mal in der 11er Version. Für X2 wäre die neu eingeführte Variable SelPos entsprechend einzubauen. Es wird nun immer nur der Teil bis zur aktuellen Schreibposition bearbeitet.

Code:
$H Messages.PH
Def %SIG 0  ' Wenn 1, dann + und - zulassen
Def %HEX 0  ' Wenn 1, dann HEX-Zahlen zulassen

Proc EditNum
  Declare Sel$, Out$, SelPos&
  SendMessage(Editor&, ~EM_GETSEL, 0, Addr(SelPos&))
  SendMessage(Editor&, ~EM_SETSEL, 0, SelPos&)
  Var Zeile$ = Left$(GetText$(Editor&), SelPos&)
  WhileLoop Len(Zeile$)
    Sel$ = Mid$(Zeile$, &loop, 1)
    Select Sel$
      CaseOf "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", ","
        Out$ = Out$ + Sel$
      CaseOf "+", "-"
        Case %Sig : Out$ = Out$ + Sel$
      CaseOf "a", "b", "c", "d", "e", "g", "A", "B", "C", "D", "E", "F"
        Case %HEX : Out& = Out& + Sel$
    EndSelect
  EndWhile
  SendMessage(Editor&, ~EM_REPLACESEL, 0, Addr(Out$))
  SendMessage(Editor&, ~EM_SETSEL, -1, Len(Out$))
EndProc

CLS
Var Editor& = Create("Edit", %hwnd, "", 4, 4, 128, 22)
While 1
  WaitInput
  If GetFocus(Editor&)
   EditNum
  EndIf
EndWhile
End
Ich hoffe, daß es nun zufriedenstellend läuft.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 01.08.2011, 17:27   #14 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
Standard

Für ts-soft nun mal die Version mit Subclass soweit aufgebaut. Hat nun die gleichen Möglichkeiten.

Code:
$H Messages.PH
CLS

Def %SIG 0  ' mit 1 + und - erlauben
Def %HEX 0  ' mit 1 HEX-Zahlen erlauben

Var Editor& = Create("Edit", %hwnd, "", 100, 100, 128, 22)
SubClass Editor&, 1

While 1
  WaitInput
EndWhile
End

SubClassProc
  If SubClassMessage(Editor&, ~WM_CHAR)
    'Set("WinProc", 0)
    Select &swparam
      CaseOf 8, 44, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
        ' 8 notwendig für Korrektur mittels Rücktaste
        ' 43 für +
        ' 45 für -
        Set("WinProc", 1)
      CaseOf 43, 45
        If %SIG
          Set("WinProc", 1)
        Else
          Set("WinProc", 0)
        EndIf
      CaseOf 65, 66, 67, 68, 69, 70, 97, 98, 99, 100, 101, 102
        If %HEX
          Set("WinProc", 1)
        Else
          Set("WinProc", 0)
        EndIf
      Otherwise
        Set("WinProc", 0)
    EndSelect
  EndIf
EndProc
Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 01.08.2011, 18:48   #15 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard

Danke, hab also nur das falsche Ereignis genutzt, ~WM_CHAR wäre richtig
__________________
Gruß Thomas

Wenn mir früher jemand gesagt hätte, ich würde
freiwillig eine Wanze mit mir herum tragen und sie
auch noch selbst aufladen, hätte ich laut gelacht.

Heute habe ich ein Smartphone.


http://realsource.de
ts-soft ist gerade online   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Listview.ddl und Nedit.dll gleichzeitig? Martin_K Dlls, Includes, Units & Prozeduren 4 23.02.2010 21:53



Alle Zeitangaben in WEZ +2. Es ist jetzt 16:58 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2