Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pseudo tool bar
#1
I created a function and dialog that interfaces with an Access DB to help me keep track of hours worked for my many jobs. It works great. I'll post the code once complete. I made the dialog style a WS_POPUP to remove the title bar so I can stick it at the top of the screen and not be distracted. The problem is that I can't move it now. Is there a way to drag it around? Thanks

Matt B

Code:
Code:
Copy      Help
;\Dialog_Editor
function# hDlg message wParam lParam

if(hDlg) goto messages

;BEGIN DIALOG
;0 "" 0x90000244 0x100 0 0 130 13 "Work Hours"
;2 Button 0x54032000 0x0 120 0 10 12 "x"
;3 Button 0x54032000 0x0 0 0 12 12 "In"
;4 Button 0x54032000 0x0 12 0 16 12 "Out"
;5 Static 0x54001000 0x0 28 2 92 10 "Text"
;END DIALOG
;DIALOG EDITOR: "" 0x2020002 "" ""


ret
;messages
sel message
,case WM_CREATE
,,;declare varibles, make them thread scope
,,str- mess,InDT,OutDT, ConnStr, SQLStr,OSDStr, LogInTimeStr HoursTBText ElapsedHoursStr
,,str+ DBPath LoginID LoginDT LogoutDT LoginJobNote LoginWorkTypeAbbr LoginWorkType WorkTypes ConnStr SQLStr IsLoggedIn LoginWorkTypeID
,,int- r c ItemSel
,,ARRAY(str)+ RSArr
,,DATE+ LogInDATE NowDATE
,,SetTimer(hDlg 1 5000 0) ;;5 sec timer to update elasped time
,,Database+ DB
,,DBPath="$personal$\JPS Stuff\Invoices\Work Hours.mdb" ;;needed for all the functions that connect to the DB
,,;get last login data
,,GetLoginData
,,DispLoginData hDlg
,,ont hDlg
,case WM_INITDIALOG
,case WM_DESTROY
,case WM_COMMAND goto messages2
,case WM_TIMER
,,DispLoginData hDlg
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
,case 3 ;;"In Button"
,,;get WorkTypes
,,GetWorkTypes
,,ItemSel=PopupMenu(WorkTypes)
,,;get menu selection and get WorkType ID, do nothing if no item selected
,,if(ItemSel<>0)
,,,;if logged in then, log out of previous job
,,,if(IsLoggedIn=1)
,,,,LogOut
,,,LoginWorkTypeID=RSArr[0 ItemSel-1] ;; get the work type selected
,,,LogIn
,,,GetLoginData ;;need the updated loginstuff
,,,;reset elapsed hours
,,,DispLoginData hDlg
,case 4 ;;"Out Button"
,,;connect to database
,,if(IsLoggedIn=1)
,,,LogOut
,,,LoginID=-1
,,,DispLoginData hDlg
,,else
,,,mes "You're not logged in."
ret 1
Matt B
#2
EDIT: see also Captionless, movable smart dialog?

Function DragDialog
Code:
Copy      Help
;/
function hDlg message

;Moves the dialog when the user presses left mouse button on the client area and drags.
;The dialog must be a smart dialog, ie with dialog procedure.
;Call this function from the dialog procedure as shown below:


,;case [WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE] DragDialog hDlg message


POINT- pp_drag
POINT p
RECT r

sel message
,case WM_LBUTTONDOWN
,xm pp_drag
,SetCapture hDlg
,
,case WM_LBUTTONUP
,if(GetCapture=hDlg) ReleaseCapture
,
,case WM_MOUSEMOVE
,if(GetCapture!=hDlg) ret
,GetWindowRect hDlg &r
,xm p
,mov r.left+p.x-pp_drag.x r.top+p.y-pp_drag.y hDlg
,pp_drag=p

Function DialogDragExample
Code:
Copy      Help
\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages

if(!ShowDialog("DialogDragExample" &DialogDragExample)) ret

;BEGIN DIALOG
;0 "" 0x90C80A44 0x100 0 0 223 135 "Dialog"
;1 Button 0x54030001 0x4 120 116 48 14 "OK"
;2 Button 0x54030000 0x4 170 116 48 14 "Cancel"
;END DIALOG
;DIALOG EDITOR: "" 0x2020003 "" ""


ret
;messages
sel message
,case WM_INITDIALOG
,DT_Init(hDlg lParam) ;;*
,ret 1 ;;*
,case WM_DESTROY DT_DeleteData(hDlg) ;;*
,case WM_COMMAND goto messages2
,case [WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE] DragDialog hDlg message
ret
;messages2
sel wParam
,case IDOK
,DT_Ok hDlg ;;*
,case IDCANCEL DT_Cancel hDlg ;;*
ret 1

;* - not necessary in QM >= 2.1.9
#3
Thanks Gintaras. That works perfect.

Matt Ballinger
Matt B


Forum Jump:


Users browsing this thread: 1 Guest(s)