Seite 2 von 5

Verfasst: 18.03.2006 20:40
von Falko
hallodri hat geschrieben:
das mag ja richtig sein, FALSCH ist jedoch, die anderen Zahlentypen von vornherein einfach
unter den Tisch zu kehren und dies nicht einmal zu kommentieren.
Wozu auch , WinApi heisst nicht "Flag setzen und gut ist". 'Nen
bisschen programmieren muss man ueberall.
So zu sehen ist PB hier nach einer reinen API-Funktion gegangen. Dann hätte man das vielleicht auch weglassen können, da man es mittels der API
auch progen kann :lol: :lol:

Ich finde numerisch hin oder her (Ganzzahl). Es gibt auch negative Ganzzahlen und da wäre zumindestens ein "-" sinnvoll.
Ob die Zahlen was bezeichnen oder anderes machen sei dahingestellt.
Will man ein Edit in einer Stringbox machen muss man den String
erst nach allem durchsuchen, was nix mit Zahlen oder Vorzeichen zu tun
hat, entfernen und dann z.B. in eine Fließkommazahl umwandeln.
Es gab früher mal den Spruch:"Man muß das RAD nicht zweimal erfinden".
Aber beim StringGadget() ist das wohl nicht erforderlich.

Vielleicht wäre es ja möglich für PB-Befehle wie StringGadget
eine Ausnahme zu machen und für numeric ", . - " zuzulassen.
Irgendwann kommt garantiert diese Frage wieder.

MfG Falko

Verfasst: 18.03.2006 20:55
von H.Brill
Man kann aber auch die Freeware NEdit.dll von
www.fabbing.de nehmen. Da kann man sogar einstellen,
wie man es will :

zweiter Parameter :
1 = nur EIN Komma/Punkt
2 = nur 2 Ziffern hinter dem Komma/Punkt
4 = Minus nur einmal und am Anfang zulassen.

Ich bekomme noch einen Fehler beim Beenden gemeldet.
Wie kann ich das Stringgadget alleine zerstören ?

Code: Alles auswählen

#mydll = 1
#mygadget = 2
OpenLibrary(#mydll, "NEdit.dll")

Procedure InitEdit(gadget.l, message.l)
  CallFunction(#mydll, "InitMessages", gadget, message)
EndProcedure

If IsLibrary(#mydll)  
   win.l = OpenWindow(#PB_Any, 0, 0, 300, 300,"Numeric", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
   If CreateGadgetList(WindowID(win)) 
      StringGadget(#mygadget, 10, 20, 100, 20, "") 
      myedit.l = GadgetID(#mygadget)
      InitEdit(myedit, 1)
   EndIf
   While WaitWindowEvent() <> #PB_Event_CloseWindow: Wend 
   CloseLibrary(#mydll)
   ;DestroyWindow_(myedit)
EndIf   
End 

Verfasst: 18.03.2006 20:55
von ts-soft
Falko hat geschrieben: So zu sehen ist PB hier nach einer reinen API-Funktion gegangen. Dann hätte man das vielleicht auch weglassen können, da man es mittels der API
auch progen kann :lol: :lol:
Dann ist wohl fast alles überflüssig in PB :mrgreen:
Falko hat geschrieben: Ich finde numerisch hin oder her (Ganzzahl). Es gibt auch negative Ganzzahlen und da wäre zumindestens ein "-" sinnvoll.
Ob die Zahlen was bezeichnen oder anderes machen sei dahingestellt.
Will man ein Edit in einer Stringbox machen muss man den String
erst nach allem durchsuchen, was nix mit Zahlen oder Vorzeichen zu tun
hat, entfernen und dann z.B. in eine Fließkommazahl umwandeln.
Es gab früher mal den Spruch:"Man muß das RAD nicht zweimal erfinden".
Aber beim StringGadget() ist das wohl nicht erforderlich.

Vielleicht wäre es ja möglich für PB-Befehle wie StringGadget
eine Ausnahme zu machen und für numeric ", . - " zuzulassen.
Irgendwann kommt garantiert diese Frage wieder.

MfG Falko

Möglich wäre es, aber nicht sinnvoll. Wenn es sinnvoll wäre, hätte Billy es
implementiert. Wer also sowas braucht, muß es sich proggen, für sowas
ausgefallenes kann es keine fertigen Befehle geben.

Es gibt vieles, was man implementieren könnte, aber man wird es nicht
schaffen, dies in irgendeiner Programmiersprache umzusetzen, selbst wenn,
würde das erlernen der Sprache ein vielfaches dauern, die Hilfe wäre ja
auich entsprechend größer. Von Ersparnis bleibt da wohl nichts übrig.

Verfasst: 18.03.2006 21:04
von edel
ts-soft hat geschrieben:@hallodri
Und wie schaltet man jetzt den Ballontip, welcher bei aktivierem XP-Style
kommt, ab :mrgreen:

Ansonsten funktioniert es ja!

Mist , das Ding hab ich ja noch nie gesehen *G*

Das sollte helfen.

Code: Alles auswählen

    #ECM_FIRST          = $1500  
    #EM_SHOWBALLOONTIP  = #ECM_FIRST + $3
    
    if #EM_SHOWBALLOONTIP = msg
      ProcedureReturn 1
    endif 

Verfasst: 18.03.2006 21:27
von edel
H.Brill hat geschrieben: Ich bekomme noch einen Fehler beim Beenden gemeldet.
Wie kann ich das Stringgadget alleine zerstören ?
Die Funktion klemmt sich vor dem eigentlichen Callback.
Beim Beenden ist der aus der DLL nicht mehr gueltig und
schmiert ab, da PB noch aufraeumen moechte (oder was
auch immer). Wenn du den Zeiger vorher speicherst und
am Ende zurueck schreibst, beendet es sich ganz normal
und PB kann auch den Speicher z.b. von SetProp wieder
freigeben.

Code: Alles auswählen

#mydll = 1
#mygadget = 2
OpenLibrary(#mydll, "NEdit.dll")

Procedure InitEdit(gadget.l, message.l)
  CallFunction(#mydll, "InitMessages", gadget, message)
EndProcedure

If IsLibrary(#mydll) 
   win.l = OpenWindow(#PB_Any, 0, 0, 300, 300,"Numeric", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   If CreateGadgetList(WindowID(win))
      StringGadget(#mygadget, 10, 20, 100, 20, "") 
      myedit.l = GadgetID(#mygadget)
      old = GetWindowLong_(myedit,#GWL_WNDPROC)
      InitEdit(myedit, 0)
      
   EndIf
   While WaitWindowEvent() <> #PB_Event_CloseWindow: Wend
   
   SetWindowLong_(myedit,#GWL_WNDPROC,old)
EndIf   
End

Verfasst: 19.03.2006 08:38
von H.Brill
Danke für den Hinweis.
Funktioniert jetzt.

PS: Hat jemand Erfahrung mit DLL2LIB von Binary Soft?
Ist ein Programm, mit dem man DLLs zu STATIC LIBs
konvertieren kann. Ich habe aus der DLL eine LIB gemacht
und versucht mit :

Import "NEdit.lib"
InitMessages(gadget.l, flag.l)
EndImport

die LIB zu importieren. Scheint aber irgendwie Konflikte
mit der Namensauflösung zu geben (unresolved external symbol).
In welchen Ordner muß denn die LIB (PureLibraries\Userlibraries oder
dort, wo der Sourcecode liegt) ?

Verfasst: 19.03.2006 09:27
von Konne
Möglich wäre es, aber nicht sinnvoll. Wenn es sinnvoll wäre, hätte Billy es
implementiert. Wer also sowas braucht, muß es sich proggen, für sowas
ausgefallenes kann es keine fertigen Befehle geben.
Ich finde den Befehl gar nicht ausgefalen und ich habe mich schon oft darueber geaergert aber ich denke da hatte einfach jemand keinen bock das zu schreiben, warscheinlich ist #Numeric nur ein api Flag und das anzuhaengen ist halt doch leichter wie eine kleine abweichung selber zu proggen.

Nunja man kann ja ein Buttongadget vor das stringgadget machen dass immer von + zu - stringt und dann ein textgadget mit "." und dann noch ein Stringgadget fuer die nachkomma stellen und ass dann alles in ne Procedure und dann sieht es doch doof aus nunja war ja auch nur ein vorschlag.

Verfasst: 19.03.2006 12:19
von sharkpeter
@hallodri,

der Code von dir ist nicht schlecht :allright:

Ich lasse persönlich nur die Finger von CallBack´s. Mein nächstes Handycap
ist noch die Abwesendheit während der Woche, so daß ich keinerlei Zugriff
auf irgend eine Unterstützung habe. Nicht das du denkst, das ich mir
darüber noch keine Gedanken gemacht habe. Habe ich sehr wohl, nur ist
der Code ein wenig umständlicher. Der ist auch auf meiner HP veröffentlicht.

@H.Brill,

Das mit der Lib ist auch ein Ansatz.

@Konne,

da bin ich wenigstens nicht alleine mit meiner Ansicht :)

@Allen die geantwortet haben:

danke für die Tipps, offensichtlich hatten ja wohl doch noch mehr dieses Bedürfnis.

@Mod´s,

wie Falko weiter oben bemerkt, ist es nicht auszuschließen, dass die Frage
wieder gestellt wird. Daher wäre es vielleicht sinnvoll, das gesamte Thema
in einen anderen Ordner zu verschieben, bevor alles was zum Themenbereich
PB_4.00_Beta gehört wieder entfernt wird.

Danke schon mal im voraus, zumal hier recht interessante Lösungen
vorhanden sind.

Gruß Jens

Re: StringGadget VS #PB_String_Numeric

Verfasst: 19.03.2006 18:55
von Andre
sharkpeter hat geschrieben:@André

wenn du die Hilfe vielleicht daraufhin anpassen könntest? Es sollte schon da stehen
das es nur Ganzzahlen sind und keine Fließkommazahlen.
Done. :)

Verfasst: 19.03.2006 22:03
von freedimension
Konne hat geschrieben: Ich finde den Befehl gar nicht ausgefalen und ich habe mich schon oft darueber geaergert aber ich denke da hatte einfach jemand keinen bock das zu schreiben
Hört sich so an, als würdest du von dir reden ;)
Naja, mal im Ernst: Klar ist es ärgerlich, dass so etwas nicht im Sprachkern implementiert wurde, aber das gilt letztendlich für viele tausende Funktionalitäten die noch nicht implementiert wurden, alleine uns würden da sicherlich auf Anhieb einige Anfallen. Das PB-Team ist aber leider nicht groß genug um alle diesen "speziellen" Dinge angehen zu können, jedenfalls nicht alle auf einmal.