Class XbpFileDialog() Foundation
Class function of the XbpFileDialog class.
The XbpFileDialog class provides objects that manage dialog windows for selecting files. The file dialog window is a system dialog that allows the user to specify drives and directories to search for particular files. This dialog can be displayed using either the method :open() or the method :saveAs(). Both return a file name including the drive and directory. :open() may also be set up to return a list of files selected.
// This example shows a text editor that runs in an 
// XbpCrt window. The window has a menu bar that 
// includes a submenu for processing text files. This 
// menu includes the items "New", "Open", "Save" and 
// "Save As". A file dialog is used for these menu 
// options. The actual text editor is provided by an 
// XbpMLE object whose :cargo instance variable contains 
// the file name of the current file. 
#include "Xbp.ch" 
#include "Appevent.ch" 
#pragma library("XppUi2") 
PROCEDURE Main 
   LOCAL nEvent, mp1, mp2, oXbp 
   LOCAL oMLE, oFileDlg 
   SetColor("N/W") 
   CLS 
   // Create file dialog with desktop as parent 
   oFileDlg   := XbpFileDialog():new() 
   oFileDlg:create( AppDesktop() ) 
   // Create MLE 
   oMLE       := XbpMLE():new():create( ,, {50,50}, {550,300} ) 
   oMLE:cargo := "" 
   // Default menu for managing text files 
   TextFileMenu( SetAppWindow():menuBar(), oFileDlg, oMLE ) 
   // Event loop 
   nEvent := 0 
   DO WHILE nEvent <> xbeP_Close 
      nEvent := AppEvent( @mp1, @mp2, @oXbp ) 
      oXbp:HandleEvent( nEvent, mp1, mp2 ) 
   ENDDO 
RETURN 
// ************************************************* 
// This function creates a default menu for opening 
// and saving text files 
// 
FUNCTION TextFileMenu( oMenuBar, oFileDlg, oMLE ) 
   LOCAL oMenu := XbpMenu():new(oMenuBar):create() 
   oMenu:title := "~File" 
   oMenu:addItem( { "~New", ; 
      {|| oMLE:setData(""), oMLE:cargo := "", ; 
          SetAppWindow():setTitle( "No name" ), ; 
          oMenu:disableItem(4) } } ) 
   oMenu:addItem( { "~Open...", ; 
      {|| ReadFile( oFileDlg, oMLE ), ; 
          IIf( Empty(oMLE:cargo), NIL, oMenu:enableItem(4)) } } ) 
   oMenu:addItem( { ,, XBPMENUBAR_MIS_SEPARATOR,0 } ) 
   oMenu:addItem( { "~Save", ; 
      {|| WriteFile( oMLE:cargo, oMLE ) }, ; 
      0, XBPMENUBAR_MIA_DISABLED } ) 
   oMenu:addItem( { "Save ~as...", ; 
      {|| WriteFile( oFileDlg:saveAs( oMLE:cargo ), oMLE ) } } ) 
   oMenuBar:addItem( {oMenu, NIL} ) 
RETURN oMenu 
// ******************************************* 
// The procedure activates the file dialog for 
// selecting a file. Reads selected files and 
// copies into MLE. 
// 
PROCEDURE ReadFile( oFileDlg, oMLE ) 
   LOCAL cFile := oFileDlg:open( oMLE:cargo ) 
   IF ! Empty( cFile ) 
      oMLE:cargo := cFile 
      oMLE:setData( MemoRead( cFile ) ) 
      SetAppWindow():setTitle( cFile ) 
   ENDIF 
RETURN 
// ************************************** 
// Write text buffer of the MLE to file 
// 
PROCEDURE WriteFile( cFile, oMLE ) 
   IF ! Empty( cFile ) 
      oMLE:cargo := cFile 
      MemoWrit( cFile, oMLE:getData() ) 
      SetAppWindow():setTitle( cFile ) 
   ENDIF 
RETURN 
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.
