|
Heres a really quick re-working of Chris's script (sorry, dont have postprep with me). It uses Controls Arrays as opposed to dynamically created $Variables using the EXECUTE() function. Personally, I'm a big fan of control arrays but I am sure you will hear from other Kixforms developers that use the Execute method.
{EDIT: Postprep code added by moderator Chris S.}
Break On $Form = CreateObject("Kixtart.Form") $Form.Size = 400, 400 $Form.Center $Form.ForeColor = Blue $Form.OnMouseDown = "OnFormMouseDown" $Form.Show WHILE $Form.Visible $=Execute($Form.DoEvents()) Loop Exit 1 FUNCTION OnFormMouseDown Dim $Menu,$Item $Menu = "New","Open","Save","Save as...","Exit" If $Form.MouseButton = 2 ; Right-click $Item = fnPopup($Menu,$Form.Left + $Form.MouseX, $Form.Top + $Form.MouseY) ?"Item=" $Item ENDIF EndFunction FUNCTION fnPopup($MenuStrings,$FormSLeft, $FormSTop) Dim $MenuItems[UBOUND($MenuStrings)] $FormS = CreateObject("Kixtart.Form") $FormS.BorderStyle = 0 $FormS.ClientWidth = 100 $FormS.ClientHeight = 42 $FormS.Top = $FormSTop + 30 $FormS.Left = $FormSLeft + 5 $Top = 1 For $i = 0 To UBOUND($MenuStrings) $MenuItems[$i] = $FormS.ToolButton($MenuStrings[$i], 1, $Top, $FormS.ClientWidth-2, 20) $MenuItems[$i].FlatStyle = 1 $MenuItems[$i].Alignment = 0 ; Right $MenuItems[$i].HotBackColor = Navy $MenuItems[$i].HotForeColor = White $MenuItems[$i].OnClick = "$$FormS.Tag=$i $$FormS.Hide" $Top = $Top + 20 Next $FormS.ClientHeight = $Top + 2 $FormS.Line(0,0,0,$FormS.ClientHeight,"White") $FormS.Line(0,0,$FormS.ClientWidth,0,"White") $FormS.Line($FormS.ClientWidth-1,0,$FormS.ClientWidth-1,$FormS.ClientHeight,"DimGray") $FormS.Line(0,$FormS.ClientHeight-1,$FormS.ClientWidth,$FormS.ClientHeight-1,"DimGray") $FormS.Tag = -1 $FormS.Show While $FormS.Visible $=Execute($FormS.DoEvents()) Loop $fnPopup = $FormS.Tag ENDFUNCTION FUNCTION fnClickMe() $bFlip = not $bFlip If $bFlip $btnClose.Icon = 10 ; Green Check Else $btnClose.Icon = 9 ; Red X EndIf ENDFUNCTION
[ 30. May 2003, 19:29: Message edited by: Chris S. ]
|