| |
|
|
Nico Madysa |
$H Windows.ph
cls
var Largo upDownIsVisible = Crear("SpinEdit", %hWnd, "0;0;10", 25, 25, 100, 20)
var Largo hidesUpDownControlsAfterIt = Crear("GroupBox", %hWnd, "a", 0, 0, 200, 200)
var Largo upDownIsHidden = Crear("SpinEdit", %hWnd, "0;0;10", 25, 50, 100, 20)
Crear("Text", %hWnd, "Press any key to repair the second spin edit", 230, 5, 100, 100)
waitinput
RescueLostUpDown(upDownIsHidden)
waitinput
end
proc RescueLostUpDown
parámetros Largo spinEdit
' Retrieve handle of updown control
var Largo theLostOne = GetHandle(%hWnd, ItemID(spinEdit) + 1)
' move groupbox behind updown control
~SetWindowPos(hidesUpDownControlsAfterIt, theLostOne, 0, 0, 0, 0, ~SWP_NOMOVE | ~SWP_NOSIZE)
' this line shouldn't even be necessary.
SendMessage(theLostOne, $469, spinEdit, 0)' UDM_SETBUDDY
ENDPROC
Man beachte, dass el UpDown-Control en el ersten Bild siempre todavía como es. Lo kann angeklickt voluntad, IsWindowEnabled y IsWindowVisible liefern beide true , el einzig Auffälige es, dass el Nutzer no sehen kann. |
| 14 kB | | Kurzbeschreibung: | Ventana antes el Tastendruck | | Hochgeladen: | 20.02.2014 | | Ladeanzahl: | | | | Descargar | | | | 15 kB | | Kurzbeschreibung: | Ventana después de el Tastendruck | | Hochgeladen: | 20.02.2014 | | Ladeanzahl: | | | | Descargar |
|
|
| |
|
|
|
E.T. | it's not a bug, it's a feature
...
var Largo upDownIsVisible = Crear("SpinEdit", %hWnd, "0;0;10", 25, 25, 100, 20)
var Largo upDownIsHidden = Crear("SpinEdit", %hWnd, "0;0;10", 25, 50, 100, 20)
var Largo hidesUpDownControlsAfterIt = Crear("GroupBox", %hWnd, "a", 0, 0, 200, 200)
...
... y ya passt lo |
|
|
| XProfan X2Grüß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... | 20.02.2014 ▲ |
|
|
|
|
Nico Madysa | Dieser Método el Problemlösung bin Yo durchaus bewusst. Deswegen Yo el beiden SpinEdits en mi Ejemplo así angeordnet: Um a zeigen, dass lo el Groupbox es, que en el Z-Achse zwischen Editar y UpDown-Control mogelt.
Mir fällt lo sólo gelinde dijo schwer, una Anwendungsbereich para así una "Feature" para encontrar.
Außerdem fühlt lo no gerade konsistent a, dass el Groupbox en el Z-Achse gerade zwischen zwei muy stark zusammengehörige Controls schiebt.
Außerdem se el Code auch no gerade lesbarer, si todos Groupboxen después de allen Spinedits ereugt voluntad.
Außerdem ha mich dieser Mist mehrere Stunden Debugging gekostet y ha me moderat aufs Gemüt geschlagen. |
|
|
| |
|
|
|
E.T. | Hm, el el UpDown-Control después de el RescueLostUpDown en el Editar des SpinEdits liegt es aber auch no Sinn el el Sache, oder |
|
|
| 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.02.2014 ▲ |
|
|
|
|
Nico Madysa | Lo liegt no en el Editar-Feld, pero el Editar campo se verkürzt, en Platz para el UpDown-Control a hacer. ¿Puede du nachprüfen, en el du el Message mehrmals versendest. Das MSDN [...] sagt auch:
An up-down control with the UDS_ALIGNLEFT or UDS_ALIGNRIGHT style aligns with the left or right edge of its buddy window. The width of the buddy window is decreased to accommodate the width of the up-down control.
Und klar es sólo una muy krude Solución. Für mich funktioniert ellos aber, porque Yo para mein größenveränderbares Ventana sowieso regelmäßig SetWindowPos el Editar campo anwenden muss y el UpDown-Control esta igual con en el Rechnung einbeziehen kann.
' Ausschnitt: mainwindow.inc
/* <...> */
proc ?_Init
/* <...> */
Ventana x, y - dx, dy
/* <...> */
?_form.intervalEdit& = Crear("SpinEdit", %hWnd, intervalEditCaption, 0, 0, 0, 0)
?_intervalUpDown = GetHandle(%hWnd, ItemID(?_form.intervalEdit&) + 1)
/* <...> */
' Workaround for updown control being overlaid by groupbox!
SetWindowPos(mainwindow.advancedGroup, mainwindow.intervalUpDown, 0, 0, 0, 0, ~SWP_NOSIZE | ~SWP_NOMOVE)
/* <...> */
Subclass %hWnd, 1
ENDPROC
/* <...> */
proc ?_AdjustContents
parámetros Largo width, height
declarar Largo currentX, currentY, currentHeight
/* <...> */
var Largo tracker = BeginDeferWindowPos(controlCount)
casenot tracker: volver 0
/* <...> */
' Das Editar campo nimmt hier el gesamte a
' Disposición stehende Breite una.
tracker = DeferWindowPos(tracker, ?_form.intervalEdit&, 0, \
currentX, currentY, groupInnerWidth, editHeight, flags)
/* <...> */
var Int resultado = EndDeferWindowPos(tracker)
' Hier se el Editar campo así verkürzt, dass el UpDown-Control genug Platz ha.
SendMessage(?_intervalUpDown, ~WM_USER + $69, ?_form.intervalEdit&, 0)' UDM_SETBUDDY
volver resultado
ENDPROC
Dass en una SetWindowPos el SpinEdit el zugehörige UpDown-Control no mitverschoben se, es todavía así una Gag, el Todavía no veces erwähnt habe ... |
|
|
| |
|
|
|
RGH | Dummerweise son beide Controls getrennte Controls y el una weiß nichts vom otro. Nur el Programmierer incluso, weiß, dass ellos zusammengehören. Yo sehe como en el Moment no sinnvolle Möglichkeit, el con erträglichem Aufwand a ändern.
Saludo Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.09.2014 ▲ |
|
|
|