| |
|
|
Jörg Sellmeyer | Hallo,
ich will Controls einer bestimmten Größe auf einer vorgegebenen Strecke gleichmäßig verteilen. Das klappt auch aber es scheint mir noch etwas unelegant zu sein. Gibt es eine bessere Lösung als diese ganze Rechnerei?
Proc RClickedMultiItem
Parameters b&[],wparam&
Declare I%
I% = IndexOf(b&[],wparam&)
If (%childMessage = 516) And (I% > -1)
Return wparam&
Endif
EndProc
Proc ClickedMultiItem
Parameters b&[],getfocus%
Declare I%
I% = IndexOf(b&[],getfocus%)
If (I%) > -1
Return Clicked(getfocus%)
EndIf
EndProc
Class Raster = count%,\
Raster@
Proc Raster.Raster
Parameters parent&,grp&[],breite%,hoehe%,top%,rasterweite%,rasterhoehe%,minRand%,minAbstand%
Declare anzahl%,faktor!,abstand%,rest%,rand%
Case breite% = 0:breite% = Width(parent&)
Case hoehe% = 0:hoehe% = Width(parent&)
Case rasterhoehe% = 0:rasterhoehe% = rasterweite%
Dec breite%,minRand%
anzahl% = breite% \ rasterweite%
rest% = breite% - rasterweite% * anzahl%
abstand% = rest% \ (anzahl% + 1)
If abstand% < minAbstand%
Dec breite%,minAbstand%
anzahl% = breite% \ rasterweite%
rest% = breite% - rasterweite% * anzahl%
abstand% = rest% \ (anzahl% + 1)
EndIf
faktor! = NachKomma(rest% / (anzahl% + 1)) * anzahl%
rand% = faktor! \ 2 + minRand%
WhileLoop 0,anzahl%-1
grp&[&Loop] = Create("Button",%hwnd,Str$(&Loop + 1),rand% + abstand% + &Loop * (rasterweite% + abstand%),top%,rasterweite%,rasterhoehe%)
Wend
.count% = SizeOf(grp&[])
Return .count%
EndProc
Proc NachKomma
Parameters f!
Return f! - Int(f!)
EndProc
Declare btn&[]
Declare grp#
WindowStyle $1F
Window 400 + Rnd(600),600
Cls
grp# = New(Raster,%hwnd,btn&[],0,0,120,96,96,4)
Print grp#.count%,SizeOf(btn&[])
Randomize
While 1
WaitInput
If ClickedMultiItem(btn&[],%getfocus)
WindowTitle GetText$(%getfocus)
ElseIf GetFocus(%hwnd)
DestroyWindow(btn&[])
Dispose grp#
Window 400 + Rnd(600),600
Cls
Clear btn&[]
grp# = New(Raster,%hwnd,btn&[],0,0,120,96,96,4,8)
Print grp#.count%,SizeOf(btn&[])
EndIf
Wend
|
|
|
| |
|
|
|
| Wenn es nicht per HTML sein "darf", womit es ein "Klax" wäre, dann kommt man um CreateWindow bzw. SetWindowPos imho nicht herum. |
|
|
| |
|
|