Do you like green eggs and ham?Ich würde dennoch immer einen allgemein erprobten Weg gehen
Sam-I-am
Moderator: Moderatoren
Do you like green eggs and ham?Ich würde dennoch immer einen allgemein erprobten Weg gehen
Aus Dateisystem-Sicht schon ADS im proprietary locking braucht keinen lock offset des Dateisystems.
Code: Alles auswählen
FUNCTION Main
FIELD car_id
StartDebugThread(0,.T.,.T.,.T.,SW_SHOWNA,"FMRedir Client Messages")
InstallCockpitGuiErrorHandler()
* Try to connect to the server and install the redirecting file monitor class
FMRedirect(SERVER_INADDR):Register()
SET EXCLUSIVE ON
USE ("\\HAM\CARS") ALIAS file1
INDEX ON car_id TO ("\\HAM\CARS")
Browse()
* Disconnect from the server
FMRedirect():Done()
RETURN NIL
FUNCTION Browse
LOCAL appWindow := BrowseDemo():CreateEx(0,"Green Eggs - Client",(WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN))
LOCAL msg := MSG():emptybuffer
appWindow:Show(SW_SHOWNORMAL)
appWindow:Update()
DO WHILE GetMessage(@msg)
TranslateMessage(@msg)
DispatchMessage(@msg)
ENDDO
RETURN NIL
FUNCTION AppSys
RETURN NIL
********************************************************************************
* Browse Demo Window *
********************************************************************************
CLASS BrowseDemo FROM CrackAndDispatch,Window
EXPORTED:
INLINE CLASS METHOD InitClass
::CrackAndDispatch:InitClass()
::Window:InitClass(0,,,0)
RETURN self
VAR browser
VAR statusBar
VAR cxClient,cyClient
METHOD OnCreate
METHOD OnSize
METHOD OnSetFocus
METHOD OnDestroy
ENDCLASS
********************************************************************************
* Browse Demo Window Message Handlers *
********************************************************************************
METHOD BrowseDemo:OnCreate(createStruct)
LOCAL cd := ListViewBrowseCreationData():New()
cd:browseCursor := DbfCursor():New("file1")
::browser:= ListViewBrowse():CreateEx(WS_EX_CLIENTEDGE,"File-Browse",;
(WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN),0,0,0,0,self,;
ID_BROWSER,,,cd)
* Now a StatusBar would be nice to have
::statusBar := CreateStatusWindow( (WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|CCS_BOTTOM;
|SBARS_SIZEGRIP),;
"Ready",self,ID_STATUSBAR )
RETURN 0
METHOD BrowseDemo:OnSize(wParam,cxClient,cyClient)
LOCAL temp,dwp,rect
::cxClient := cxClient
::cyClient := cyClient
* get the statusbar rectangle
::statusBar:GetRect(@rect)
* that's the statusbar height
temp := rect:bottom - rect:top
* Start repositioning
dwp := BeginDeferWindowPos(2)
* Now reposition the StatusBar and redraw it
* ::statusBar:Move(0,::cyClient-temp,::cxClient,temp,.T.)
DeferWindowPos(dwp,::statusBar,0,0,::cyClient-temp,::cxClient,temp,SWP_NOZORDER)
* And finally the Splitter
* ::splitter:Move(0,0,::cxClient,::cyClient-temp,.T.)
DeferWindowPos(dwp,::browser,0,0,0,::cxClient,::cyClient-temp,SWP_NOZORDER)
* Finsih repositioning
EndDeferWindowPos(dwp)
RETURN 0
:?: METHOD BrowseDemo:OnSetFocus
IF ::browser # NIL
::browser:SetFocus()
ENDIF
RETURN 0
METHOD BrowseDemo:OnDestroy
PostQuitMessage(0)
RETURN 0