| |
|
|
Erasmus.Herold | Hallöchen ...
Folgende Frage: Ich habe ein Fenster geöffnet und in diesem befinden sich unzählige Edit-Felder. Lässt sich einfach (und ohne jedes Edit abzufragen) ermitteln, wo der Cursor aktuell blinkt?
fenster_darueber_2% = Create("Dialog",fenster_darueber%,"Fenster",28,330,1870,730)
fenster_fixieren_2& = external("USER32","GetSystemMenu",fenster_darueber_2%,0)
external("USER32","DeleteMenu",fenster_fixieren_2&,$F010,0)
ks_1_cent$ = create("edit", fenster_darueber_2%, "", 700, 135, 100, 30)
ks_2_cent$ = create("edit", fenster_darueber_2%, "", 700, 170, 100, 30)
ks_5_cent$ = create("edit", fenster_darueber_2%, "", 700, 205, 100, 30)
ks_10_cent$ = create("edit", fenster_darueber_2%, "", 700, 240, 100, 30)
ks_20_cent$ = create("edit", fenster_darueber_2%, "", 700, 275, 100, 30)
In welchem Feld blinkt der Cursor? Danke! |
|
|
| |
|
|
|
H.Brill | Die Systemvariable %GetFocus gibt dir das Handle des gerade aktiven Editfeldes zurück. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 20.11.2018 ▲ |
|
|
|
|
Erasmus.Herold | Danke für die Antwort. So hatte ich das auch in der Hilfe gefunden.
Ein kurzes Beispiel wäre toll gewesen. Deshalb hatte ich extra ein paar Felder als Code beigefügt. Vielleicht ein kurzer Tipp, wie ich z.B. durch die passende Abfrage die Info erhalte: der Cursor steht in Feld "ks_10_cent$"
Dankeschön |
|
|
| |
|
|
|
H.Brill | 1. ks_1_cent$ ist eine Stringvariable. Zum Glück konvertiert XProfan intern. Darum kommt auch kein Fehler. Create() liefert aber immer ein Handle (Zahl) zurück. Also ist es besser, eine Zahlenvariable (%,&, Handle) zu verwenden.
2. Beim Erstellen der Editfelder könntest du ein numeriches Array verwenden. Die Variablennamen bekommst du sowieso nicht zu sehen. Ein korrespondierendes String-Array könnte aber entsprechende Namen bereitstellen.
Meinst du etwa sowas ?
Declare Edits%[5], Namen$[], y%
Namen$[] = "1. Edit", "2. Edit", "3. Edit", "4. Edit", "5. Edit"
Window 800, 600
y% = 10
WhileLoop 0, 4
Edits%[&LOOP] = Create("Edit", %HWnd, "", 10, y%, 120, 25)
Inc y%, 30
EndWhile
While 1
WaitInput
WhileLoop 0, 4
If %GetFocus = Edits%[&LOOP]
Locate 15, 1
Print Namen$[&LOOP], "hat den Cursor !"
EndIf
EndWhile
Case %Key = 2 : Break
EndWhile
End
|
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 21.11.2018 ▲ |
|
|
|
|
E.T. | Hab das voriges Beispiel mal nach IndexOf(... umgebaut (nur um zu aufzuzeigen, das es so auch geht ).
Vlt. isses ja so bissel schneller ...
Declare Edits%[5], Namen$[], y%, EditPos%
Window 800, 600
y% = 10
WhileLoop 0, 4
Edits%[&LOOP] = Create("Edit", %HWnd, "", 10, y%, 120, 25)
Inc y%, 30
EndWhile
While 1
EditPos% = IndexOf(Edits%[],%GetFocus)
If EditPos% > -1
Locate 15, 1
Print " "'Zeile löschen
Locate 15, 1
Print (EditPos%+1) + ". Edit hat den Cursor !"
Else
Locate 15, 1
Print "Irgend etwas anderes hat den Focus !"
EndIf
WaitInput
Case %Key = 2 : Break
EndWhile
End
Das mit den expl. Namen für die Edit's (wie zuvor beschrieben) kann man hier nat. auch verwenden |
|
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 21.11.2018 ▲ |
|
|
|
|
Erasmus.Herold | |
|
| |
|
|
|
Erasmus.Herold | Getestet - funktioniert großartig - Dankeschön! |
|
|
| |
|
|