| |
|
|
Nico Madysa |
$H Windows.ph
cls
var Long upDownIsVisible = Créer("SpinEdit", %hWnd, "0;0;10", 25, 25, 100, 20)
var Long hidesUpDownControlsAfterIt = Créer("GroupBox", %hWnd, "a", 0, 0, 200, 200)
var Long upDownIsHidden = Créer("SpinEdit", %hWnd, "0;0;10", 25, 50, 100, 20)
Créer("Text", %hWnd, "Press any clé to repair le second spin edit", 230, 5, 100, 100)
waitinput
RescueLostUpDown(upDownIsHidden)
waitinput
end
proc RescueLostUpDown
parameters Long spinEdit
' Retrieve handle of updown control
var Long theLostOne = GetHandle(%hWnd, ItemID(spinEdit) + 1)
' déplacer groupbox behind updown control
~SetWindowPos(hidesUpDownControlsAfterIt, theLostOne, 0, 0, 0, 0, ~SWP_NOMOVE | ~SWP_NOSIZE)
' this line shouldn't even être necessary.
SendMessage(theLostOne, $469, spinEdit, 0)' UDM_SETBUDDY
endproc
on beachte, dass cela UpDown-Contrôle im ersten Bild toujours voilà. Es peux angeklickt volonté, IsWindowEnabled et IsWindowVisible liefern beide vrai , cela seule Auffälige ist, dass qui Nutzer es pas voyons peux. |
|
|
| |
|
|
|
E.T. | it's not a bug, it's a feature
...
var Long upDownIsVisible = Créer("SpinEdit", %hWnd, "0;0;10", 25, 25, 100, 20)
var Long upDownIsHidden = Créer("SpinEdit", %hWnd, "0;0;10", 25, 50, 100, 20)
var Long hidesUpDownControlsAfterIt = Créer("GroupBox", %hWnd, "a", 0, 0, 200, 200)
...
... et déjà passt es |
|
|
| 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 | cette Methode qui Problemlösung suis je mir durchaus bewusst. Deswegen habe je qui beiden SpinEdits dans mon Beispiel so angeordnet: afin de montrer, dass es qui Groupbox ist, qui sich sur qui Z-Achse entre Éditer et UpDown-Contrôle mogelt.
Mir fällt es seulement gelinde dit schwer, une Anwendungsbereich pour so un "Feature" pour trouver.
Aussi fühlt es sich pas justement konsistent à, dass sich qui Groupbox sur qui Z-Achse justement entre deux très stark zusammengehörige Controls schiebt.
Aussi wird qui Code aussi pas justement lesbarer, si alle Groupboxen pour allen Spinedits ereugt volonté.
Aussi hat mich cette Mist plusieurs Stunden Debugging gekostet et hat mir moderat aufs Gemüt geschlagen. |
|
|
| |
|
|
|
E.T. | Hm, cela cela UpDown-Contrôle pour dem RescueLostUpDown im Éditer des SpinEdits liegt ist mais aussi pas Sinn qui qui l'affaire, ou bien |
|
|
| 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 | Es liegt pas im Éditer-champ, mais cela Modifier le champ de wird verkürzt, um place pour cela UpDown-Contrôle trop faire. peux du nachprüfen, dans dem du qui Message plusieurs fois versendest. cela MSDN [...] sagt aussi:
à up-down control with le UDS_ALIGNLEFT or UDS_ALIGNRIGHT style aligns with le left or right edge of its buddy window. The width of le buddy window is decreased to accommodate le width of le up-down control.
et bien sûr ist es seulement une très krude Solution. Pour mich funktioniert vous mais, weil je pour mon größenveränderbares la fenêtre sowieso régulier SetWindowPos sur cela Modifier le champ de anwenden muss et cela UpDown-Contrôle dabei juste avec dans l'addition einbeziehen peux.
' Ausschnitt: mainwindow.inc
/* <...> */
proc ?_Init
/* <...> */
Fenêtre x, y - dx, dy
/* <...> */
?_form.intervalEdit& = Créer("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)
/* <...> */
Sous-classe %hWnd, 1
endproc
/* <...> */
proc ?_AdjustContents
parameters Long width, height
declare Long currentX, currentY, currentHeight
/* <...> */
var Long tracker = BeginDeferWindowPos(controlCount)
casenot tracker: return 0
/* <...> */
' cela Modifier le champ de nimmt ici qui gesamte zur
' Disposition stehende Breite un.
tracker = DeferWindowPos(tracker, ?_form.intervalEdit&, 0, \
currentX, currentY, groupInnerWidth, editHeight, flags)
/* <...> */
var Int result = EndDeferWindowPos(tracker)
' ici wird cela Modifier le champ de so verkürzt, dass cela UpDown-Contrôle genug place hat.
SendMessage(?_intervalUpDown, ~WM_USER + $69, ?_form.intervalEdit&, 0)' UDM_SETBUDDY
return result
endproc
Dass chez einem SetWindowPos sur cela SpinEdit cela zugehörige UpDown-Contrôle pas mitverschoben wird, ist encore so un Gag, den je encore pas la fois erwähnt habe ... |
|
|
| |
|
|
|
RGH | Dummerweise sommes beide Controls getrennte Controls et cela une sais rien vom anderen. seulement qui Programmierer selbst, sais, dass vous zusammengehören. je vois là im Moment aucun sinnvolle Possibilité, cela avec erträglichem Aufwand trop changement.
Salut 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 ▲ |
|
|
|