Deutsch
Forum

Static Tab und Edit

 

Rolf
Koch
Huhu Leute,

heute hab ich mal ne Frage:
Hat einer ne Idee:
@Control(STATIC,txt$,$54000106,x%,y%,breit%,hoch%,fenster&,$7918,%hinstance)
dort liegen Edits drauf. Logischerweise kann ich diese nicht mit der Tabtaste anspringen. Logisch, denn es ist kein Dialog und ich kann diesem Teil keinen 512er Wert setzen.
Auch ein Exwert $200 funktioniert nicht.
Ich benötige das Teil aber. Leider klappt es mit Getkeystate(9) auch nicht.
Ist halt blöde, wenn man nicht mit der Tabtaste zwischen den Edits hin und herspringen kann.
Hab alles versucht.

Aber, habe noch ein bisschen Hoffnung , da nichts unmöglich ist.

Rolf
 
05.02.2005  
 



GetAsyncKeyState?
 
05.02.2005  
 




Frank
Abbing
Hi,

probier mal:
KompilierenMarkierenSeparieren
@Control("STATIC",txt$,$54000106,x%,y%,breit%,hoch%,fenster&,$7918,%hinstance,$10000)  ;WS_EX_CONTROLPARENT

Bei den Edits mußt du dann wohl den Windowsstyle WS_TABSTOP ($10000) setzten
 
05.02.2005  
 




Rolf
Koch
Danke Euch beiden herzlichst,

nee leider beides nicht. Es kommt bei beiden nix an.
WS_TABSTOP ($10000) - nunja es sind SKEdits.

Rolf
 
05.02.2005  
 



Hallo Rolf...

WS_EX_CONTROLPARENT funktioniert nur, wenn das Hauptfenster den Dialogstil hat:
KompilierenMarkierenSeparieren
Declare Static&,Edits&[5],fenster&,Focus%,txt$
Def @GetAsyncKeyState(1) !"User32","GetAsyncKeyState"
WINDOWSTYLE 31+512
WINDOWTITLE "STATIC Control und Tabtaste",TXT$
Window 0,0-640,440
LET FENSTER&=%HWND
LET TXT$="Test"
LET STATIC&=@Control("STATIC",txt$,$54000106+15,10,10,210,300,fenster&,$7918,%hinstance,$10000)
LET EDITs&[1]=@CREATEEDIT(STATIC&,"",10,10,200,25)
LET EDITs&[2]=@CREATEEDIT(STATIC&,"",10,50,200,25)
LET EDITs&[3]=@CREATEEDIT(STATIC&,"",10,90,200,25)
LET EDITs&[4]=@CREATEEDIT(STATIC&,"",10,130,200,25)
LET EDITs&[5]=@CREATEEDIT(STATIC&,"",10,170,200,25)
@SETFOCUS(EDITs&[1])
LET FOCUS%=1
@GetAsyncKeyState(9) Reset

Whilenot %MENUITEM=-2

    Waitinput

WEND


GetAsyncKeyState funktioniert nur ohne Waitinput:
KompilierenMarkierenSeparieren
Declare Static&,Edits&[5],fenster&,Focus%,txt$
Def @GetAsyncKeyState(1) !"User32","GetAsyncKeyState"
WINDOWSTYLE 31+512
WINDOWTITLE "STATIC Control und Tabtaste",TXT$
Window 0,0-640,440
LET FENSTER&=%HWND
LET TXT$="Test"
LET STATIC&=%HWND
LET STATIC&=@Control("STATIC",txt$,$54000106,10,10,210,300,fenster&,$7918,%hinstance)
LET EDITs&[1]=@CREATEEDIT(STATIC&,"",10,10,200,25)
LET EDITs&[2]=@CREATEEDIT(STATIC&,"",10,50,200,25)
LET EDITs&[3]=@CREATEEDIT(STATIC&,"",10,90,200,25)
LET EDITs&[4]=@CREATEEDIT(STATIC&,"",10,130,200,25)
LET EDITs&[5]=@CREATEEDIT(STATIC&,"",10,170,200,25)
@GetAsyncKeyState(9) Reset

Whilenot %MENUITEM=-2

    Sleep 100

    IF @GetAsyncKeyState(9)<>0

        inc Focus%
        CASE FOCUS%=6 : LET FOCUS%=1
        @SETFOCUS(EDITs&[Focus%])
        Sleep 200

    ENDIF

WEND

 
05.02.2005  
 




Rolf
Koch
Hi Andreas,

das mit dem Hauptfenster wusste ich noch nicht, daß dies dann auch Auswirkungen auf die Childs hat.
Sieht fast gut aus, der Keyklick wird registriert.
Jetzt muss ich es nur noch hinbekommen, daß

If getkeystate(9)
if getfocus(blablaedit&)
hier erkannt wird. Macht es nicht auch nicht mit getchild für skcontrols.
endif

endif

Super und Danke für den Hinweis.
Rolf
 
05.02.2005  
 



Hallo Rolf...

Auch für GetAsyncKeyState gilt:
Wenn das Parentfenster nicht den Dialostil hat, wirds unideal (zweiweise Messagebeeps beim Weiterschalten).

Daß das Parentfenster den Dialogstil haben muß, ist eigentlich logisch:
Wenn man mit WS_EX_CONTROLPARENT die Kontrolle an das Parentfenster abgibt, muß dieses ja auch was mit der Tabtaste anfangen können...
 
05.02.2005  
 




Frank
Abbing
Hi,

AH: Der Dialogstil ist Rolands Erfindung. Den gibt es unter Windows gar nicht, sondern damit wird Profans Subclassing des Hauptfensters anders gehandhabt. Bestimmte Messages werden ausgefiltert, darum macht dir GetAsyncKeyState() auch Probleme. Die Tastaturmessages werden einfach rausgefiltert und gelangen gar nicht bis zum Profanprogramm.

Rolf: WS_EX_CONTROLPARENT sollte eigentlich deine Lösung sein. WS_TABSTOP müßtest du bei den SKControls nachträglich setzten, mit Get/SetStyle. Getestet habe ich es allerdings nicht.
 
05.02.2005  
 




Rolf
Koch
Danke Euch beiden,
werde mal mit Setstyle und Getstyle versuchen.
Sebastian hat mir geschrieben, daß er mal nach seiner SKControl und den Edits schaut und direkt sowas zulässt.

Nochmals vielen - vielen Dank
Rolf
 
05.02.2005  
 



Hallo Frank...

Normale Profan-Edits dürften den Stil WS_TABSTOP bereits enthalten. Hier bringt ein WS_EX_CONTROLPARENT allein beim STATIC gar nichts - wenn das Hauptfenster nicht den Dialogfensterstil hat. Wie gesgt ist das laut Profanhilfe so auch logisch.
GETASYNCKEYSTATE funktioniert auch ohne den Dialogfesterstil im Hauptfenster. Problem ist eigentlich nur der Messagebeep, wenn das Hauptfenster versucht den Tastaturdruck zu behandeln. Das ist, wie gesagt, unschön.

@Rolf
Das ein SETSTYLE oder GETSTYLE dir da an irgeneiner Stelle was bringt, kann ich mir genausowenig vorstellen wie Frank...
Du könntest vielleicht versuchen, den STATIC auf einem gleichgroßen Dialog zu erstellen, das dürfte dann gehen (nicht getestet). Ob in den Controls der SKCONTROL.DLL der Stil WS_TABSTOP enthalten ist, kann ich allerdings nicht sagen - da müßte dann evtl. SETSTYLE und GETSTYLE einspringen...
 
06.02.2005  
 




Rolf
Koch
Hi AH,

das ist mir ja alles klar:
Ich hab ja das Static auf dem Diaolg
Auch hatte ich vor SETSTYLE oder GETSTYLE auf SKControls anzuwenden und nicht auf das Static.

Rolf
 
06.02.2005  
 




Uwe
''Pascal''
Niemeier
Hallo Rolf!

Müssen denn die Edits unbedingt auf das Static?
Du könntest sie auch auf den Dialog packen und so positionieren, dass sie unter dem Static liegen. Optisch sollte das zumindest bei normalen Controls keinen Unterschied machen:
KompilierenMarkierenSeparieren
window 100,100-500,500
declare dlg&
dlg&=create("dialog",%hwnd,"Info",200,200,300,300)
control("static","",$50000000,5,5,200,200,dlg&,1,0,$200)Static + Rahmen
create("edit",dlg&,"aaa",20,20,80,22)
create("edit",dlg&,"bbb",20,50,80,22)
create("edit",dlg&,"ccc",20,90,80,22)

while 1

    waitinput

endwhile


HTH
Pascal
 
07.02.2005  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.100 Betrachtungen

Unbenanntvor 0 min.
Peter Max Müller13.11.2017
Ernst22.04.2016
Michael Borowiak04.11.2013
Julian Schmidt30.03.2012
Mehr...

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