Forum: PC-Programmierung [Win] Spinedit in Groupbox: Bug?


von Christian M. (Gast)


Angehängte Dateien:

Lesenswert?

Schon länger ist mir dieses Problem aufgefallen. Heute Nachmittag habe 
ich mich hingesessen und ein Programm mit dem Nötigsten geschrieben.

Ich programmiere mit XProfan 11.2 (aktuelle (Freeware-)Version: 
http://xprofan.de/download.htm), trat aber schon bei älteren Versionen 
auf und; bei allen Windows-Versionen (getestet mit Win 8.1, XP, 7).

Das Problem ist, dass beim Steuerelement (Gadget) (Bezeichnungen je nach 
Sprache/Programmiersprache) Spinedit (SpinGadget) in einer Groupbox 
(Gruppenfeld, Frame3DGadget) die rauf-runter-Tasten nicht sichtbar sind.

Eine schnelle verifizierung mit PureBasic ist mir nicht gelungen.

Kann mir jemand bestätigen/kontrollieren, ob das nur an XProfan liegt, 
oder allgemein an der Windows-API?
1
$P+
2
SET("ERRORLEVEL",0)
3
DECLARE EDIT1&,EDIT2&,ENDE%
4
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
5
WINDOWSTYLE 63
6
WINDOWTITLE "Testfenster"
7
WINDOW 280,280
8
CLS GETSYSCOLOR(15)
9
10
create("groupbox", %HWND, "GroupBox", 20, 20, 220, 100)
11
EDIT1& = create("spinedit", %HWND, "4; 0; 127", 80, 60, 60, 24)
12
EDIT2& = create("spinedit", %HWND, "4; 0; 127", 80, 160, 60, 24)
13
SETFOCUS(%HWND)
14
REPAINT
15
WHILENOT ENDE%
16
WAITINPUT
17
   If %KEY=2
18
     ENDE%= 1
19
   ENDIF
20
ENDWHILE 
21
End

Das beigefügte .exe ist ein 1:1 compilat des obigen Codes und habe ich 
nur der vollständigkeithalber angefügt. Ist mir klar, dass das niemand 
ausführt.

Gruss Chregu

von Jim M. (turboj)


Lesenswert?

Der SpinEdit in der Groupbox muss IIRC ein Child der Groupbox sein und 
nicht vom drüber liegenden HWND.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das liegt nicht an der Windows-API.

Dort sind Edit-Control und Up-Down-Control zwei separate Dinge, die 
allerdings miteinander verknüpft werden können (via UDM_SETBUDDY).

https://docs.microsoft.com/en-us/windows/desktop/controls/up-down-controls

https://docs.microsoft.com/en-us/windows/desktop/controls/up-down-control-reference

von Christian M. (Gast)


Lesenswert?

Jim M. schrieb:
> Der SpinEdit in der Groupbox muss IIRC ein Child der Groupbox sein und
> nicht vom drüber liegenden HWND.

Bingo! Habe das mal abgeändert in:
1
box1& = create("groupbox", %HWND, "GroupBox", 20, 20, 220, 100)
2
EDIT1& = create("spinedit", box1&, "4; 0; 127", 80, 60, 60, 24)

Und es funktioniert! Jetzt werden auch die Groupbox-relativen 
Koordinaten verwendet! Auf diese Idee hat mich NICHT gebracht die 
Anleitung im Handbuch:
1
@Create("GroupBox",N,S,X1,Y1,X2,Y2)
2
3
N     : LongInt - Handle des übergeordneten Fensters

Fensters!

Danke und Gruss Chregu

von Jim M. (turboj)


Lesenswert?

Christian M. schrieb:
> Fensters!

Deutsche Übersetzung ist Käse, denn "parent window handle" wäre im 
englischen korrekt.

Ich schaue aus diesem Grund da kaum noch rein - das englische Original 
ist zu oft präziser formuliert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.