| |
|
|
Andre Hilprecht | Hallo zusammen,
GETFOCUS(EDIT1%) funktioniert aber GETFOCUS(Text1%) nicht.
Nach einem Waitinput frage ich was denn nun geklickt wurde, also kommen dann die Zeilen
IF GETFOCUS(EDIT1%) Eingabe ELSEIF GETFOCUS(EDIT2%) Eingabe ELSEIF GETFOCUS(TEXT1%) Eingabe ENDIF
Klick auf Edit1 - sprung zur Proc Eingabe Klick auf Edit2 - sprung zur Proc Eingabe Klick auf Text1 - Nix pasiert
Was mache ich falsch, wo ist mein Denkfehler? Gruß Andre |
|
|
| Ein PC ist die beste Möglichkeit Fehler zu beheben, die ohne PC gar nicht passiert wären. -frei aus Murphy's Computergesetzen
XProfan X2, Win8 Pro 64bit Update von Win7 i5 / 3,2GHz 4 GB RAM Treibstoff: Radeberger Pils | 17.02.2007 ▲ |
|
|
|
|
Rolf Koch | Hi ein Textfeld ist ein Static und dieses kann nie den Focus bekommen. |
|
|
| |
|
|
|
Nico Madysa | Ist Text1% ein Static? Ich meine, hast du es mit Create("Text" erzeugt? Meines Wissens nach können Static-Controls (solche, wie Texte, Bidler, etc.) gar keinen Focus erhalten, daher ist auch das Abfragen des Focus sinnlos. |
|
|
| |
|
|
|
Andre Hilprecht | |
|
| Ein PC ist die beste Möglichkeit Fehler zu beheben, die ohne PC gar nicht passiert wären. -frei aus Murphy's Computergesetzen
XProfan X2, Win8 Pro 64bit Update von Win7 i5 / 3,2GHz 4 GB RAM Treibstoff: Radeberger Pils | 17.02.2007 ▲ |
|
|
|
|
| Jaja Scrollbalken sind so ein Thema.
Es gibt ja getscrollpos , wenn Du aber eine fertige ScrollArea haben möchtest dann kannst Du Dir die gleichnamige Unit laden. |
|
|
| |
|
|
|
Andre Hilprecht | Fertige ScrollArea klingt gut, ich vermute aber mal, das ich dann gleich wieder tausend Fragen habe, weil ich brauch das zum Verständnis vom Urschleim her. Gleich mal ne blöde Frage: Wo lade ich die fertige gleichnamige Unit?
Also
VScroll1% = GetScrollPos(%hwnd)
gibt mir den Wert zurück, wo der Knopf vom Scrollbalken steht. Soll ja zwischen 0 und 100 sein, ich schiebe also am Knopf, der Wert wäre jetzt angenommen 11, wie bewege ich jetzt synchron dazu mein Hauptfenster, das ich sicher von der Größe her jetzt größer machen muss als der Bildschirm selber von der Auflösung her?
Fals die Unit für einen Anfänger wie mich leicht zu händeln ist, bzw. man sich dort leicht reinfinden kann, dann würde ich mir das zumindest mal anschauen.
Gruß und Danke im Voraus von Andre |
|
|
| Ein PC ist die beste Möglichkeit Fehler zu beheben, die ohne PC gar nicht passiert wären. -frei aus Murphy's Computergesetzen
XProfan X2, Win8 Pro 64bit Update von Win7 i5 / 3,2GHz 4 GB RAM Treibstoff: Radeberger Pils | 17.02.2007 ▲ |
|
|
|
|
Michael Wodrich | [...]
Es gibt auch SetScrollPos und SetScrollRange.
Näheres in der Hilfe. (Kapitel 20.9.)
Schöne Grüße Michael Wodrich
P.S.: ...und natürlich den Hilfetext bei Create("VScroll",... nicht vergessen. |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 17.02.2007 ▲ |
|
|
|
|
| Die Unit ist alles andere als leicht zu handeln - selbst erfahrene XProfaner bekommen es kaum hin. Dennoch habe ich Beispiele für fast alle Eventualitäten beigelegt. |
|
|
| |
|
|
|
Rolf Koch | Da sieht man mal wieder, dass ROC doch nicht so schlecht ist. Hier halt mit Subclassmanager gearbeitet und die Include direkt in den Code geschrieben. Ist halt Subclass - da geht noch mehr KompilierenMarkierenSeparieren $P+
SET("ERRORLEVEL",0)
********************** HINWEISE ********************************
CODE ERZEUGT MIT ROKOS OBJECT CREATOR 4.5b
DATUM 17.02.2007 um 14:39 Uhr
VERWENDETE PROFANVERSION IST 10.0-NT XPROFAN
CODE ERSTELLT UNTER WINDOWS Unbekannt
Subclass für %hwnd ist eingeschaltet!
!!! Dieser Code wird von Roc immer neu erzeugt !!!
!!! Erst bearbeiten, wenn alle Objekte erzeugt wurden !!!
!!! Verändern Sie ggf. feste Pfade in variable Pfade !!!
DECLARE VSCROLL1&
DECLARE TEXT1&
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
$H C:PROFANAKTUELLE PROJEKTEROCLIBWINDOWS.PH ANPASSEN!!!!!!!!!
$H C:PROFANAKTUELLE PROJEKTEROCLIBMESSAGES.PH ANPASSEN!!!!!!
Hier nichts ändern **************************************
declare p_x1&,p_x2&
PROC INITSUBCLASS
p_x1&=~Getwindowlong(%Hwnd,~Gwl_wndproc)
p_x2&=Procaddr(Windowproc,4)
~Setwindowlong(%Hwnd,~Gwl_wndproc, p_x2&)
ENDPROC
PROC SETSTANDARDMESSAGE
~Setwindowlong(%Hwnd,~Gwl_wndproc, p_x1&)
ENDPROC
PROC SETEXTENDMESSAGE
~Setwindowlong(%Hwnd,~Gwl_wndproc, p_x2&)
ENDPROC
*********************************************************
Hier können die eigenen Abfragen hin ********************
Proc Windowproc
Parameters Wnd&, Msg&, Wparam&, Lparam&
If Msg& = ~Wm_close
~Postquitmessage(0)Programm-Ende
Endif
IF MSG& = ~WM_VSCROLL
SETTEXT TEXT1&,"Aktuelle Position: "+STR$(GETSCROLLPOS(VSCROLL1&)) hier als Beispiel die Position in Textfeld!!!!!!!!!!!!!!
SPIELEREI:
setwindowpos %hwnd=22,20-(250+GETSCROLLPOS(VSCROLL1&)),(310+GETSCROLLPOS(VSCROLL1&))
ENDIF
Return ~Callwindowproc(p_x1&,Wnd&, Msg&, Wparam&, Lparam&)
Endproc
WINDOWSTYLE 63
WINDOWTITLE "The Elder scrolls *lol*"
WINDOW 22,20-250,310
SET("TRUECOLOR",1)
DECLARE ENDE%
CLS GETSYSCOLOR(15)
USEFONT "MS Sans Serif",13,0,0,0,0
SETDIALOGFONT 1
Set("FASTMODE",1)
VSCROLL1& = CREATE("VScroll",%HWND,"VScroll",0187,0017,0014,0216)
TEXT1& = CREATE("TEXT",%HWND,"Aktuelle Position:",0017,0017,0158,0020)
INITSUBCLASS muss an diese Position
SETSTANDARDMESSAGE muss an diese Position
SETFOCUS(%HWND)
SETEXTENDMESSAGE muss an diese Position
WHILENOT ENDE%
WAITINPUT
SETSTANDARDMESSAGE muss an diese Position
If %KEY=2
ENDE%= 1
ELSEIF %KEY=4
ENDIF
SETEXTENDMESSAGE muss an diese Position
ENDWHILE
|
|
|
| |
|
|
|
| Das ganze geht wohl zur Not auch ohne Subclassing über die API ScrollWindow, dazu muss man aber etwas rechnen. |
|
|
| |
|
|
|
Andre Hilprecht | Das habe ich geahnt, habe mir mal das Teil angesehen und komme damit überhaupt nicht klar. Jetzt brauche ich den XPSE-Compiler, toll, ich bin begeistert. Und nachdem ich nun alles an seinem Platz hatte, also den Verweis auf die Include und den auf den XPSE-Compiler, sagt er mir jetz Unitdefinitionsdatei <SCROLLAREA> fehlt, obwohl sie da ist und dann Programm fehlerhaft.
Also das hilft mir nicht wirklich weiter.
SetScrollPos und SetScrollRange setzen doch eben nur die Position des Knopfes innerhalb des VScroll1%-Elementes, nicht aber das jetzt das Hauptfenster selbst gescrollt wird. Das bräuchte ich doch nur, wenn ich das Fenster in einer gescrollten Position speichern/schließen will um es an dieser Position wieder zu öffnen. Dann muss ich doch auch den Knopf an die Position setzen.?
Oder bin ich da vollkommen auf dem falschen Dampfer?
Gruß Andre |
|
|
| Ein PC ist die beste Möglichkeit Fehler zu beheben, die ohne PC gar nicht passiert wären. -frei aus Murphy's Computergesetzen
XProfan X2, Win8 Pro 64bit Update von Win7 i5 / 3,2GHz 4 GB RAM Treibstoff: Radeberger Pils | 17.02.2007 ▲ |
|
|
|
|
Rolf Koch | @AH, klar gehts über die API und genauso mit Profanboardmitteln. Jedoch sind die so Stur, es wird nichts LIVE aktualisiert. Für sowas ist Subclass einfach genial!!! |
|
|
| |
|
|