| |
|
|
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 |
|
|
| |
|
|
|
| |
|
| |
|
|
|
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 |
|
|
| |
|
|
|
Rolf Koch | Danke Euch beiden herzlichst,
nee leider beides nicht. Es kommt bei beiden nix an. WS_TABSTOP ($10000) - nunja es sind SKEdits.
Rolf |
|
|
| |
|
|
|
| Hallo Rolf...
WS_EX_CONTROLPARENT funktioniert nur, wenn das Hauptfenster den Dialogstil hat: KompilierenMarkierenSeparierenDeclare 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: KompilierenMarkierenSeparierenDeclare 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
|
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
| 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... |
|
|
| |
|
|
|
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. |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
| 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... |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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: KompilierenMarkierenSeparierenwindow 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 |
|
|
| |
|
|