Deutsch
Forum

GETFOCUS(Text1%)

 
- Seite 1 -



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  
 



 
- Seite 1 -



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!!!
 
17.02.2007  
 



 
- Seite 2 -


Ich sagte ja: Zur Not .
 
17.02.2007  
 




Michael
Wodrich
@Andre
Was soll denn jetzt genau gemacht werden?
Ein Hauptfenster mit Scrollbalken versehen?

Mit SetScrollRange stellt man ein, wie die Ergebnisse zu werten sind. Zum Beispiel von 0 bis 10000. Jetzt kann ich dann die mit GetScrollPos gelesene oder mit SetScrollPos gesetzte Position in 100stel Prozent genau werten.

Die Frage ist: Brauchst Du diese Positionswerte überhaupt? Oder soll Dein Fenster einfach nur Scrollbalken enthalten?

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
17.02.2007  
 



Andre Hilprecht
Das habe ich geahnt, habe mir mal das Teil angesehen und komme damit überhaupt nicht klar.


Da bist Du sicher nicht der Einzige.

Andre Hilprecht
Jetzt brauche ich den XPSE-Compiler, toll, ich bin begeistert.


Wenn das nicht ernst gemeint war gibts Ärger.

Andre Hilprecht
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 fehlt, obwohl sie da ist
und dann Programm fehlerhaft.


Das ist unrichtig, hier liegt bestimmt nur ein Bedienerfehler vor.

Suchst Du sowas?
KompilierenMarkierenSeparieren
KompilierenMarkierenSeparieren
SET(errorlevel,-1)
WINDOWSTYLE 8
CLS
var H&=CREATEVSCROLL(%HWND,,WIDTH(%HWND)-18,0,18,HEIGHT(%HWND))
var PLANE&=(CONTROL(STATIC,,$50000000,(0),(0),(WIDTH(%HWND)-18),(2048),(%HWND),0,%HINSTANCE))
var SPOS&=GETSCROLLPOS(H&)
var OSPOS&=SPOS&
var REALFACT!=(2048-HEIGHT(%HWND))/100
BUILDCONTROLS PLANE&

WHILE 1

    WAITINPUT
    SPOS&=GETSCROLLPOS(H&)

    IF (OSPOS&<>SPOS&)

        OSPOS&=SPOS&
        SETWINDOWPOS PLANE&=0,(0-SPOS&)*REALFACT! - WIDTH(PLANE&),HEIGHT(PLANE&);0

    ENDIF

ENDWHILE

proc BUILDCONTROLS

    PARAMETERS PARENT&
    var W&=WIDTH(PARENT&)-40
    var H&=(CREATE(GROUPBOX,(PARENT&),,(20),(20),(W&),(HEIGHT(PARENT&)-40)))

    IF W&>40

        BUILDCONTROLS (H&)

    ENDIF

endproc

 
17.02.2007  
 




Andre
Hilprecht
@ Michael Wodrich
Ich möchte einfach nur mein Hauptfenster mit einem vertikalen Scrollbalken versehen, nach Möglichkeit sollte alternativ natürlich dann auch das Rollrad der Maus funktionieren. Mit dem Scrollen möchte ich einen bestimmten Bereich des Hauptfensters rollen, also ähnlich wie bei Excel wenn eine Tabelle fixiert ist. Mein Hauptfenster wird einen Kopfbereich haben, in dem der Tabellenkopf sitzt und dort sollen sich einige Schaltflächen tummeln. Beim Scrollen soll also der obere Bereich stehen bleiben.

@IF
Ich nehme mal an, (entschuldige meine Blödheit) das sind zwei verschiedene Codes, die beide einen VScroll haben, der dann auch funktioniert. Den zweiten Code bekomme ich sogar zum laufen, nur mein Fenster bleibt leer. Da ist kein Scrollbalken zu sehen, da ist eigentlich überhaupt nix zu sehen und demzufolge funktioniert auch nix. Der zweite Code sieht gut aus, da kann ich mir so ein bischen was zusammenreimen, wie das funktionieren sollte. Nur da nix zu sehen ist und nix funktioniert, kann ich auch damit nix anfangen.

Helft einem Blödmann bitte auf die Sprünge.
Gruß André
 
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
Du bist kein Blödmann!
Warum versuchst Du es nicht mit meinem Code oben? Genau das was Du benötigst.
 
17.02.2007  
 




Andre
Hilprecht
@Rolf
Ja, Deinen Code habe ich probiert, ich werde jetzt mal versuchen statt der Spielerei einen definierten Bereich in meinem Fenster rollen zu lassen.
Irgendwie habe ich aber nicht so eine richtige Peilung.
Schreibe ich einen Text an eine Position außerhalb des erzeugten Hauptfensters und rolle ihn dann rein, oder wie funzt das?

Also WINDOW 22,20-250,310
......
......
TEXT1& = CREATE(TEXT,%HWND,Info 1,0014,(GETSCROLLPOS(VSCROLL1&)),0070,0020)

mache damit also alle XProfan-Elemente, die gescrollt werden sollen abhängig vom Stand des Knopfes im Scrollbalken?
und muss ich alle Elemente auschalten, wenn eine gewisse Höhe erreicht ist damit mein Kopf im Hauptfenster nicht überschrieben wird?

Junge, da hab ich mir aber was vorgenommen, denn ich muss ca. 2500 Text&-Bausteine rollen.

Gruß André
 
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
Hier zur Demo was ich meine (halt nur als Ansatz und schnell geschrieben):
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&,font&,x%
Declare untergrund&,scrollteil&
DEF GETSYSCOLOR(1) !USER32,GetSysColor
 $H C:PROFANAKTUELLE PROJEKTEROCLIBWINDOWS.PH
 $H C:PROFANAKTUELLE PROJEKTEROCLIBMESSAGES.PH
font&=create(FONT,MS SANS SERIF,25,0,1,0,0)
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

        SCROLL_PROC

    ENDIF

    Return ~Callwindowproc(p_x1&,Wnd&, Msg&, Wparam&, Lparam&)

Endproc

HIER DEINE AKTIONEN WENN SCROLLER BETÄTIGT WIRD

PROC SCROLL_PROC

    setwindowpos scrollteil&=0,(-getscrollpos(vscroll1&))-(width(%hwnd)-16),5000

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,(width(%hwnd)-15),0035,0014,(height(%hwnd)-35))
SetScrollRange vscroll1&,0,5000
TEXT1& = CREATE(TEXT,%HWND,Ich bin die Überschrift,0001,0001,0358,0020)
Untergrund&=Control(STATIC,,$54001106,1,36,(width(%hwnd)-16),(height(%hwnd)-35),%hwnd,0,%hinstance,$0)
Scrollteil&=Control(STATIC,,$54001100,0,0,(width(%hwnd)-16),5000,untergrund&,0,%hinstance,$0)

whilenot x% = 240

    inc x%
    createtext(scrollteil&,Ich bin Testtext Nr. +str$(x%),10,(20*x%),200,20)

endwhile

setfont text1&,font&
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

deleteobject font&

Kurze Erklärung:
Du erstellst einen Header indem Du oben normal aufs Hauptfenster Sachen positionierst - Buttons und Co.
Dann erstellst Du einen Untergrund für den zu scrollenden Bereich (hier ein Static mit Variable Untergrund&)
Auf diesen Untergrund erstellst Du nochmals ein Static jedoch in seiner Höhe gross gewählt.
Dort kannst Du dann Deine Elemente drauf platzieren.
Siehe jetzt einfach SCROLL_PROC an, denn diese kannste frei anpassen, ohne oben im Subclassteil was zu verändern.
 
17.02.2007  
 




Andre
Hilprecht
Hallo Rolf, das funzt und kommt meinen Wünschen fast zu 100% nahe. Das ist ja ganz schön aufwendig, nur um ein VScroll in ein Prog einzubauen.
Hätte ich nie hinbekommen.

Danke fürs erste,
Gruß André
 
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  
 



Ah - mein Code oben (und es ist ein und der selbe Code nur einmal xpse einmal net xpse) funzt bei Dir nicht weil Du kein X10 hast - sehe jetzt erst das Du XProfan 9 hast.
 
18.02.2007  
 




Andre
Hilprecht
Hi IF, so simpel sind manchmal die Dinge.
Und genau deshalb sollte ja jeder in der Fußzeile stehen haben, mit welchen Versionen gearbeitet wird. Jetzt sehe ich auch
in Deinem Codefenstern oben XXProfan XPSE - soll bestimmt ein Hinweis darauf sein XProfan 10 und den XPSE bei diesem Code
zu verwenden. Beim zweiten Codefenster ist leider garnichts zu sehen als Hinweis auf verwendete Versionen.

Ist vielleicht mal ein allgemeiner Hinweis: Codefenster sollten mit diesen Hinweisen versehen veröffentlicht werden, das erspart
weitere Nachfragen
und (aber das macht ja fast jeder) in der Fußzeile immer verwendete Versionen eintragen.

Gruß André
 
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
18.02.2007  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

14.048 Betrachtungen

Unbenanntvor 0 min.
Manfred Barei13.11.2015
Uwe Lang01.01.2012

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie