4.11 FileSelector

4.11.1 Überblick

4.11.2 Konfigurieren des FileSelectors

4.11.3 Arbeit mit Token und Creator

4.11.4 Behandeln der Notification-Message

4.11.5 Weitere Fähigkeiten

 

4.11.1 Überblick

... Ein FileSelector stellt die UI bereit, die notwendig ist, um eine Datei oder ein Verzeichnis auszuwählen. Klickt der Nutzer auf einen Eintrag sendet der FileSelector eine Notification-Message aus und der Programmierer kann entscheiden was passiert. Häufig wird die entsprechende Datei dann geöffnet. Die Navigation durch die Verzeichnisse handelt der FileSelector dabei selbständig.

Welche Dateien in der Liste angezeigt werden kann über diverse Kriterien, z.B. das Token der Datei oder eine Dateimaske eingestellt werden.

Häufig ist der FileSelector Teil eines Dialogs, in dem sich noch andere Objekte, z.B. ein "Öffnen" und ein "Abbrechen"-Button befinden.

Abstammung:

...

Der FileSelector erbt alle Eigenschaften und Fähigkeiten der GenericClass.

Spezielle Instance-Variablen:

Instancevariable Syntax im UI-Code Im BASIC-Code
NotificationHandler NotificationHandler = <Handler> nur schreiben
initialPath initialPath = StdPath, "<subDir>" --
showFilesDisabled showFilesDisabled = TRUE | FALSE lesen, schreiben
numFilesToShow numFilesToShow = anzahl lesen, schreiben
fileListWidth fileListWidth = anzahl lesen, schreiben
selection$ -- lesen, schreiben
path$ -- lesen, schreiben
fullPath$ -- lesen, schreibe
entryFlags -- nur lesen
matchToken matchToken = "TCHR", manufID lesen, schreiben
hasMatchToken -- nur lesen
matchCreator matchCreator = "TCHR", manufID lesen, schreiben
hasMatchCreator -- nur lesen
matchMask$ matchMask$ = "fileMask" lesen, schreiben
matchCriteria matchCriteria = numVal lesen, schreiben

Action-Handler-Typen:

Handler-Typ Parameter
FileAction (sender as object, entryFlags as WORD, selection$ as String)

Methoden:

Methode Aufgabe
ClearMatchToken Entfernt das matchToken aus den Instancevariablen
ClearMatchCreator Entfernt das matchCreator-Token aus den Instancevariablen
Suspend Verhindert ein Neueinlesen des angezeigten Ordners
EndSuspend Erlaubt das Neueinlesen des angezeigten Ordners wieder
Rescan Liest den angezeigten Ordner neu ein
UpDirectory Wechselt in das Parent-Verzeichnis
OpenEntry Öffnet das selektierte Verzeichnis


^

4.11.2 Konfigurieren des FileSelectors

Meistens wird der FileSelector im UI-Code konfiguriert. Dazu stehen die folgenden Instancevariablen zur Verfügung:

Instancevariable Syntax im UI-Code Im BASIC-Code
initialPath initialPath = StdPath, "<subDir>" --
showFilesDisabled showFilesDisabled = TRUE | FALSE lesen, schreiben
numFilesToShow numFilesToShow = anzahl lesen, schreiben
fileListWidth fileListWidth = anzahl lesen, schreiben
matchToken matchToken = "TCHR", manufID lesen, schreiben
matchCreator matchCreator = "TCHR", manufID lesen, schreiben
matchMask$ matchMask$ = "fileMask" lesen, schreiben
matchCriteria matchCriteria = numVal lesen, schreiben

Ein typisches FileSelector-Objekt sieht wie folgt aus. Im Beispiel werden die R-BASIC Font-Dateien zur Anzeige gebracht.

FileSelector TestFileselector
  Caption$ = "Bitte Datei auswählen"
  justifyCaption = J_TOP
  initialPath = SP_USER_DATA, "R-BASIC\\FONT"
  NotificationHandler = FileSelected
  numFilesToShow = 12
  matchMask$ = "*.RBF"
  matchCriteria = FMC_DIRS + FMC_DOS_FILES
End OBJECT
Zur Auswahl, welche Dateien in der Liste angezeigt werden sollen, stehen die Instancevariablen matchToken (engl. to match = übereinstimmen), matchCreator, matchMask$ und matchCriteria zur Verfügung. Die Defaultwerte sind so gewählt, dass alle Dateien und alle Verzeichnisse angezeigt werden. Geben Sie mehrere Match-Kriterien an so müssen diese gleichzeitig erfüllt sein. Widersprüchliche Kriterien z.B. das Token von GeoWrite-Dateien und das Creator-Token von GeoDraw führen dazu, dass keine Dateien angezeigt werden.

initialPath

InitialPath legt den anfangs angezeigten Pfad fest. Das kann nur im UI-Code geschehen. Wird kein initialPath gesetzt so wird das GEOS Hauptverzeichnis angezeigt.
Syntax UI-Code: initialPath = stdPath, "Subdir"
       stdPath: Eine StandardPath Konstante
      "Subdir": Unterverzeichnis. Das kann auch ein Leerstring sein.

 
Beispiele
 initialPath = SP_DOCUMENT, "R-BASIC\\Beispiele"
 initialPath = SP_USER_DATA, ""


showFilesDisabled

ShowFilesDisabled legt fest, ob Dateien in der Liste als "disabled" angezeigt werden. Der Nutzer sieht die Dateinamen hellgrau, kann sie aber nicht anwählen. Das wird z.B. im Dialog "Speichern unter ..." verwendet.
Syntax UI-Code: showFilesDisabled = TRUE (Defaultwert: FALSE )
         Lesen: <numVar> = <Obj>.showFilesDisabled
     Schreiben: <Obj>.showFilesDisabled = TRUE | FALSE

 

numFilesToShow

NumFilesToShow legt die Anzahl der gleichzeitig angezeigten Listeneinträge fest.
Syntax UI-Code: numFilesToShow = numWert
         Lesen: <numVar> = <Obj>.numFilesToShow
     Schreiben: <Obj>.numFilesToShow = numWert
       numWert: numerischer Ausdruck, bestimmt die Anzahl

 

fileListWidth

FileListWidth legt die Breite der Liste fest. Maßeinheit ist die "mittlere Zeichenbreite". Der Defaultwert ist Null, d.h. die Liste bestimmt die ihre Breite selbst. FileListWidth wird selten verwendet, weil der Defaultwert im Allgemeinen passt.
Syntax UI-Code: filesListWidth = numWert
         Lesen: <numVar> = <Obj>.filesListWidth
     Schreiben: <Obj>.filesListWidth = numWert
       numWert: Breite der Liste,
                Maßeinheit: "mittlere Zeichenbreite".
                Null: Defaultwert verwenden.

 

matchToken

Nur GEOS-Dateien mit dem passenden Token werden angezeigt. DOS-Dateien werden nicht mehr angezeigt. Das Token bestimmt das Icon, mit dem die Datei im GeoManager angezeigt wird.
Syntax UI-Code: matchToken = "tchr", manufID
         Lesen: <tok> = <obj>.matchToken
     Schreiben: <obj>.matchToken = "tchr", manufID
       "tchr" : 4 Buchstaben, "TokenChars"
       manufID: Manufacturer ID (numerischer Wert)
         <tok>: Variable vom Typ GeodeToken

 
Per Default ist kein Wert für matchToken gesetzt und alle Dateien werden angezeigt.

Beispiel: GeoDraw-Dateien anzeigen

 matchToken = "DDAT", 0
Will man nur Dateien anzeigen, deren Token aus lauter Nullen besteht (das ist z.B. bei den VM-Dateien der Fall, die vom Icon-Editor geschrieben werden), muss man als tokenChars einen Leerstring zuweisen:
 matchToken = "", 0
Das Token "", 0 ist nicht identisch mit dem Zustand "kein Token gesetzt". Im ersten Fall werden nur Dateien mit einem Token, das aus lauter Nullen besteht angezeigt, im zweiten Fall wird das Token ignoriert (die Dateien werden nicht nach ihrem Token gefiltert). Um ein gesetztes Token wieder zu entfernen verwenden Sie die Methode ClearMatchToken, die weiter unten beschrieben ist.

matchCreator

Nur GEOS-Dateien mit dem passenden Creator-Token werden angezeigt. DOS-Dateien werden nicht mehr angezeigt. Das Creator-Token bestimmt die Applikation, mit der die Datei erstellt wurde. Bei Programmen ist das "GEOS",0.
Syntax UI-Code: matchCreator = "tchr", manufID
         Lesen: <tok> = <obj>.matchCreator
     Schreiben: <obj>.matchCreator = "tchr", manufID
        "tchr": 4 Buchstaben, "TokenChars"
       manufID: Manufacturer ID (numerischer Wert)
         <tok>: Variable vom Typ GeodeToken

 
Per Default ist kein Wert für matchCreator gesetzt und alle Dateien werden angezeigt.

Beispiel: GeoWrite-Dateien anzeigen

 matchCreator = "WP00", 0
Will man nur Dateien anzeigen, deren Creator-Token aus lauter Nullen besteht (das ist z.B. bei den VM-Dateien der Fall, die vom Icon-Editor geschrieben werden), muss man als tokenChars einen Leerstring zuweisen:
 matchCreator = "", 0
Das Creator-Token "", 0 ist nicht identisch mit dem Zustand "kein Token gesetzt". Im ersten Fall werden nur Dateien mit einem Token, dass aus lauter Nullen besteht angezeigt, im zweiten Fall wird das Creator-Token ignoriert (die Dateien werden nicht nach ihrem Creator-Token gefiltert). Um ein gesetztes Creator-Token wieder zu entfernen verwenden Sie die Methode ClearMatchCreator, die weiter unten beschrieben ist.

matchMask$

Nur Dateien, die der übergebenen Namensmaske entsprechen, werden angezeigt.
Dabei gelten die GEOS-Namenskonventionen:
Wildcards * und ? sind zulässig
* (Sternchen) beliebige Anzahl (oder Null) Zeichen oder Ziffern
? Genau ein Zeichen oder eine Ziffer
: und \ sind nicht zulässig
  Die Groß- und Kleinschreibung spielt eine Rolle
Für DOS-Dateien Großbuchstaben verwenden

Per Default ist kein Wert für matchMask$ gesetzt und alle Dateien werden angezeigt.
Syntax UI-Code: matchMask$ = "maskString"
         Lesen: <stringVar> = <obj>.matchMask$ 
     Schreiben: <obj>.matchMask$ = "maskString"
  "maskString": Eine Filtermaske für die Dateien, z.B. "*.PCX"

 
Beispiele:
D* Alle Dateien, die mit einem großen D anfangen.
?a* Alle Dateien, deren zweiter Buchstabe ein a ist.
*a* Alle Dateien, die ein a im Namen enthalten. Das a darf auch am Anfang oder am Ende stehen.
*.* Alle Dateien, die einen Punkt im Namen enthalten.
*.PCX Alle Dateien, die auf Punkt-PCX enden.
* Alle Dateien.

Wenn keine Maske gesetzt ist liefert matchMask$ einen Leerstring. Das Schreiben eines Leerstrings löscht eine gesetzte Maske. Funktionell sind "keine Maske gesetzt" und "*" identisch, "keine Maske gesetzt" ist aber schneller, weil der FileSelector keine Vergleiche ausführt.

matchCriteria

MatchCriteria ist ein numerischer Wert, der bestimmt, welche Art von Dateien angezeigt werden sollen.
Syntax UI-Code: matchCriteria = numWert
         Lesen: <numVar> = <obj>.matchCriteria
     Schreiben: <obj>.matchCriteria = numWert

 
Der Defaultwert ist FMC_ALL_FILES ( = FMC_DIRS + FMC_DOS_FILES + FMC_GEOS_EXEC + FMC_GEOS_DATA).
Per Default werden alle Dateien und Ordner angezeigt.

Erlaubte Werte:

Konstante Wert (hex) Bedeutung
FMC_DIRS 32768 &h8000 Ordner anzeigen
FMC_DOS_FILES 16384 &h4000 Nicht-GEOS-Dateien anzeigen
FMC_GEOS_EXEC 8192 &h2000 GEOS Programme und Libraries anzeigen
FMC_GEOS_DATA 4096 &h1000 GEOS VM- und Daten-Dateien anzeigen
FMC_ALL_FILES 61440 &hF000 Alle Dateien und Ordner anzeigen. Das entspricht der Summe der vier Werte von oben.
FMC_MASK_CASE_INSENSITIVE 2048 &h0800 Masken unterscheiden nicht zwischen Groß- und Kleinbuchstaben
FMC_USE_MASK_FOR_DIRS 128 &h0080 Masken auch auf Ordner anwenden

Die hier nicht angegebenen Bits sind intern verwendet und werden von R-BASIC nicht unterstützt. Sie müssen Null sein.

Beispiele

DIM criteria as word ' oder as real
  matchCriteria = FMC_DIRS + FMC_GEOS_DATA
  MyObj.matchCriteria = FMC_DIRS + FMC_GEOS_EXEC
  criteria = MyObj.matchCriteria
Der Wert von matchCriteria besteht aus einzelnen Bits, die jedes eine bestimmte Bedeutung haben (sog. BitFlags). Die Abfrage erfolgt mit der logischen Operation AND, das setzen mit der logischen Operation OR. Das Löschen eines Bits erfordert die Operation "AND (NOT bit_zu_löschen)".

Beispiele

FMC_DIRS abfragen:

 IF FSel.matchCriteria AND FMC_DIRS THEN ...
FMC_MASK_CASE_INSENSITIVE setzen ohne die anderen Flags zu ändern:
 FSel.matchCriteria = 
   FSel.matchCriteria OR FMC_MASK_CASE_INSENSITIVE
FMC_DOS_FILES löschen ohne die anderen Flags zu ändern:
 FSel.matchCriteria = 
   FSel.matchCriteria AND (NOT FMC_DOS_FILES)

^

4.11.3 Arbeit mit Token und Creator

Instancevariable Syntax im UI-Code Im BASIC-Code
hasMatchToken -- nur lesen
hasMatchCreator -- nur lesen

Methode Aufgabe
ClearMatchToken Entfernt das matchToken aus den Instancevariablen
ClearMatchCreator Entfernt das matchCreator-Token aus den Instancevariablen

Die Instancevariablen matchToken und matchCreator haben die Besonderheit, dass die dazugehörigen Daten (das jeweilige GeodeToken) vorhanden sein kann oder auch nicht. Ist das Token vorhanden werden alle Dateien entsprechend dem Token (bzw. Creator-Token) gefiltert und nur die Dateien angezeigt, die eine Übereinstimmung aufweisen. Ist das Token nicht vorhanden werden die Dateien nicht gefiltert, ihr Token (bzw. Creator-Token) ist egal.

Per Default sind keine Werte für matchCreator und matchToken gesetzt, die Dateien werden also nicht gefiltert. Die Filterung wird durch Setzen eines Wertes für dies Instancevariablen aktiviert. Es ist nun nicht möglich durch Zuweisen eines "Leer"-Token zu den Instancevariablen matchToken bzw. matchCreator das jeweilige Token zu löschen. Die Filterung nach Tokens kann auf diese Weise nicht aufgehoben werden. Diesem Zweck dienen die in diesem Kapitel beschriebenen Methoden ClearMatchToken und ClearMatchCreator.

hasMatchToken

HasMatchToken enthält die Information, ob mit "matchToken" ein Wert gesetzt wurde oder nicht. Der Wert kann nur gelesen werden und liefert TRUE oder FALSE.
Syntax Lesen: <numVar> = <obj>.hasMatchToken

 

hasMatchCreator

HasMatchCreator enthält die Information, ob mit "matchCreator" ein Wert gesetzt wurde oder nicht. Der Wert kann nur gelesen werden und liefert TRUE oder FALSE.
Syntax Lesen: <numVar> = <Obj>.hasMatchCreator

 

ClearMatchToken

Die Methode ClearMatchToken löscht den mit "matchToken" gesetzten Wert.
Syntax BASIC-Code: <obj>.ClearMatchToken

 

ClearMatchCreator

Die Methode ClearMatchCreator löscht den mit "matchCreator" gesetzten Wert.
Syntax BASIC-Code: <obj>.ClearMatchCreator


^

4.11.4 Behandlung der Notification-Message

Klickt der Nutzer auf einen Eintrag in der Liste des FileSelectors wird der Notification-Handler des FileSelectors aufgerufen. Das kann ein Einfachklick oder ein Doppelklick sein. Außerdem ist es möglich weitere Informationen über den aktuell selektierten Eintrag, z.B. den Pfad zum dargestellten Verzeichnis oder ob es sich um eine Ordner oder eine Datei handelt, zu erhalten. Dazu stehen die folgenden Instancevariablen zur Verfügung:

Instancevariable Syntax im UI-Code Im BASIC-Code
NotificationHandler NotificationHandler = <Handler> nur schreiben
path$ -- lesen, schreiben
fullPath$ -- lesen, schreiben
selection$ -- lesen, schreiben
entryFlags -- nur lesen

Handler-Typ Parameter
FileAction (sender as object, entryFlags as WORD, selection$ as String)


NotificationHandler

Die Instance-Variable NotificationHandler enthält den Namen des Handlers, der gerufen wird, wenn der Nutzer auf einen Eintrag in der Liste klickt. Das kann ein Einfachklick oder ein Doppelklick sein. Der Wert wird üblicherweise im UI-Code gesetzt, bei Bedarf kann er auch zur Laufzeit (im BASIC-Code) gesetzt werden.
Syntax UI-Code: NotificationHandler = <Handler> 
     Schreiben: <obj>.NotificationHandler = <Handler>

 
Wichtig! FileSelectoren können nicht in Blocking-Dialogen (vgl. Kapitel 4.6.7, DialogObj.attrs = DA_BLOCKING) verwendet werden. Blocking-Dialoge blockieren den BASIC-Thread so lange, bis der Dialog geschlossen wird. In dieser Zeit kann der Notification-Handler nicht ausgeführt werden.

NotificationHandler müssen als FileAction deklariert sein.

Der Parameter selection$ enthält den aktuell ausgewählten Eintrag (Dateiname oder Ordnername). Wenn der erste Eintrag selektiert ist (aktuelles Verzeichnis oder Wurzelverzeichnis) enthält selection$ den Text "." (Der Text besteht nur aus nur einem Punkt.)

Der Parameter entryFlags enthält Informationen über den aktuell selektierten Eintrag. Jedes Bit hat eine eigene Bedeutung. Die Abfrage der Bits erfolgt mit der logischen Operation AND.

Folgende Werte und Konstanten sind definiert.

Konstante Wert hex Bedeutung
-- 32768 &h8000 intern verwendet
FEF_SUBDIR 16348 &h4000 Ein Verzeichnis ist selektiert
FEF_OPEN 8192 &h2000 Ein Doppelklick wurde ausgeführt
FEF_NO_ENTRY 4096 &h1000 Die Dateiliste ist leer
FEF_ERROR 2048 &h800 Es gab einen Fehler
FEF_TEMPLATE 1024 &h400 Die Datei ist ein "Muster"
-- 512 &h200 Die Datei ist "shared-multiple"
-- 256 &h100 Die Datei ist "shared-single"
FEF_READ_ONLY 128 &h80 Es ist eine "Nur Lesen" Datei
FEF_PARENT_DIR 64 &h40 Der erste Eintrag in der Liste ist selektiert.
-- 32 &h20 Der Eintrag ist disabled

Die in der Tabelle nicht aufgeführten Bits sind nicht definiert und sollten nicht verwendet werden. "Shared-multiple" bzw. "shared-single" bedeutet, dass die Datei im Netzwerk von mehreren Nutzern gleichzeitig geöffnet werden kann. Der Nutzer kann das z.B. in GeoWrite über den "Dokument-Typ" im Menü "Datei"->"Sonstiges" festlegen.

Die typische Reaktion auf einen Doppelklick auf eine Datei besteht darin, in den vom FileSelector angezeigten Pfad zu wechseln (Mithilfe der Instancevariable path$) und dann die selektierte Datei zu öffnen.

Beispiel: Ein typischer Notification-Handler. Wir setzen voraus, dass es einen Öffnen-Button gibt, der nur Enabled werden soll, wenn eine Datei angewählt ist. Ein Doppelklick auf eine Datei soll diese öffnen. Der Handler implementiert das typische Vorgehen dazu. Ein Doppelklick auf ein Verzeichnis wird vom Handler ignoriert. Der FileSelector kümmert sich selbst darum, das entsprechende Verzeichnis zu öffnen und anzuzeigen.

Die Routine DoSomeThingsWithFile muss natürlich auch irgendwo definiert sein.

FileAction FileSelected
DIM fh as FILE

IF entryFlags AND FEF_SUBDIR THEN
  OpenButton.enabled = FALSE
  RETURN   ' Verzeichnis selektiert
ELSE 
  OpenButton.enabled = TRUE ' Datei ist ausgewählt
End IF

IF entryFlags AND FEF_OPEN THEN  ' Doppelklick
  SetCurrentPath sender.path$ 
  fh = FileOpen selection$
  IF fh <> NullFile() THEN 
    DoSomeThingsWithFile(fh)
    FileClose fh
  End IF
End IF

End ACTION
 

path$

Die Instancevariable path$ enthält den angezeigten Pfad, ohne Selektion. Sie kann gelesen und geschrieben, aber nicht im UI-Code verwendet werden. Um den anzuzeigenden Pfad im UI-Code zu setzen verwenden Sie die Instancevariable initialPath.
    Syntax Lesen: <stringVar> = <obj>.path$ 
       Schreiben: <obj>.path$ = <pathExpression>
<pathExpression>: Stringausdruck, zu setzender Pfad.
                  Es kann ein relativer Pfad oder ein absoluter Pfad
                  (mit Laufwerksbuchstabe, z.B. "C:\\DOS") sein.

 
Beispiel: Anzeige eines absolut angegebenen Pfades.
  MyObj.path$ = "C:\\Bilder\\Kinder"
Beispiel: Anzeige des Unterverzeichnisses "Arbeit" des aktuell angezeigten Verzeichnisses.
  MyObj.path$ = "Arbeit"
Beispiel: Wechseln in das vom FileSelector angezeigte Verzeichnis
  SetCurrentPath MyObj.path$

Hinweise

Schreiben in die Instancevariable path$:

  • Schreiben von path$ setzt die globale Variable fileError (Null wenn OK, ERROR_PATH_NOT_FOUND wenn der Pfad invalid ist.

  • Um in das Root eines Laufwerks zu wechseln verwendet man z.B. "C:\\"

  • Bei Pfadangaben spielt die Groß-/Kleinschreibung eine Rolle. Für reine DOS-Verzeichnisse sollten Sie Großbuchstaben verwenden.
Lesen von path$

  • Standard R-BASIC Strings können bis zu 128 Zeichen aufnehmen. Pfade können bis 198 Zeichen lang sein. Variablen, die einen Pfad aufnehmen sollen, sollten als String(198) oder länger definiert sein. Beispiel:
DIM pathVar$ as STRING(200)


fullPath$

Die Instancevariable fullPath$ enthält den angezeigten Pfad einschließlich des selektierten Eintrags. Sie kann gelesen und geschrieben, aber nicht im UI-Code verwendet werden.
    Syntax Lesen: <stringVar> = <obj>.fullPath$ 
       Schreiben: <obj>.fullPath$ = <pathExpression>
<pathExpression>: Stringausdruck, zu setzender Pfad.
                  Es kann ein relativer Pfad o. ein absoluter Pfad sein.

 
Schreiben in die Instancevariable fullPath$:

  • Das letzte Pfadelement wird als zu selektierende Eintrag interpretiert, auch wenn es ein Verzeichnis ist. Beispiel:
  MyObj.fullPath$ = "C:\\GEOS\\DOCUMENT"
    zeigt das GEOS Verzeichnis an, wobei DOCUMENT selektiert ist. Um das Root eines Verzeichnisses zu selektieren hängt man einen Backslash an:
  MyObj.fullPath$ = "C:\\GEOS\\DOCUMENT\\" 
zeigt das GEOS\DOCUMENT Verzeichnis an. Oder man verwendet path$.

  • Schreiben von fullPath$ setzt die globale Variable fileError (Null wenn OK, ERROR_PATH_NOT_FOUND wenn der Pfad invalid ist.

  • Um in das Root eines Laufwerks zu selektieren verwendet man z.B. "C:\\"

  • Bei Pfadangaben spielt die Groß-/Kleinschreibung eine Rolle. Für reine DOS-Verzeichnisse sollten Sie Großbuchstaben verwenden.
Lesen von fullPath$

  • Standard R-BASIC Strings können bis zu 128 Zeichen aufnehmen. Pfade können bis 198 Zeichen lang sein. Hinzu kommt die Selektion (max. 32 Zeichen) und der Backslash. Variablen, die einen Pfad aufnehmen sollen, sollten als String(231) oder länger definiert sein. Beispiel:
DIM pathVar$ as STRING(235)


selection$

Die Instancevariable selection$ enthält den aktuell ausgewählten Eintrag (Dateiname oder Ordnername). Sie kann gelesen und geschrieben, aber nicht im UI-Code verwendet werden.
      Syntax Lesen: <stringVar> = <obj>.selection$ 
         Schreiben: <obj>.selection$ = <stringExpression>
<stringExpression>: Stringausdruck, zu selektierender Eintrag

Wenn der erste Eintrag selektiert ist (aktuelles Verzeichnis oder Wurzelverzeichnis) enthält selection$ den Text "." (Der Text besteht nur aus nur einem Punkt.)

Hinweise:

  • Schreiben von selection$ setzt die globale Variable fileError (Null wenn OK, ERROR_PATH_NOT_FOUND wenn der Eintrag nicht existiert.

  • Um den ersten Eintrag zu selektieren kann man "." oder einen Leerstring übergeben.
Beispiel: Lesen der Selektion
DIM sel$ as String(32)  ' Das reicht
  sel$ = MyObj.selection$ 
Beispiel: Selektieren des Unterverzeichnisses "Arbeit". Das Verzeichnis wird nur selektiert, der FileSelector wechselt nicht in das Verzeichnis.
  MyObj.selection$ = "Arbeit"


entryFlags

EntryFlags enthält die Informationen über den aktuell selektierten Eintrag, die auch an den Parameter "entryFlags" des FileSelector NotificationHandlers übergeben werden. Eine Beschreibung der einzelnen Flagbits finden Sie dort. Der Wert kann nur gelesen werden.
Syntax Lesen: <numVar> = <obj>.entryFlags

 
Beispiel: Abfrage ob eine Datei selektiert ist
DIM flags
  flags = MyObj.entryFlags
  IF (flags  AND  FEF_SUBDIR) = 0 THEN
    MsgBox "Eine Datei ist selektiert"
    END IF
Beispiel: Ein "Open"-Handler

Wir setzen einen FileSelector (DemoFileSelector) voraus, der den "Öffnen"-Button nicht enabled oder disabled. Der Buttonhandler muss daher entscheiden ob eine Datei selektiert ist oder ein Verzeichnis und entsprechend reagieren.

ButtonAction OpenFileOrFolder
DIM flags as word

  flags = DemoFileSelector.entryFlags

  IF flags AND FEF_SUBDIR THEN
    DemoFileSelector.OpenEntry   ' Verzeichnis öffnen
  ELSE
    SetCurrentPath DemoFileSelector.path$
    MsgBox "Eine Datei ist selektiert"
    ' Hier die Datei öffnen ...
  End IF

End Action

^

4.11.5 Weitere Fähigkeiten

Dieser Abschnitt beschreibt einige Fähigkeiten des FileSelectors die gelegentlich benötigt werden. Dafür sind die folgenden Methoden implementiert:

Methode Aufgabe
Suspend Verhindert ein Neueinlesen des angezeigten Ordners
EndSuspend Erlaubt das Neueinlesen des angezeigten Ordners wieder
Rescan Liest den angezeigten Ordner neu ein
UpDirectory Wechselt in das Parent-Verzeichnis
OpenEntry Öffnet das selektierte Verzeichnis


Suspend

Die Methode Suspend verhindert ein Rescan (erneutes Einlesen des angezeigten Ordners) solange bis die Methode EndSuspend aufgerufen wurde. Das ist sinnvoll, wenn man mehrere match-Attribute ändern will.
Syntax BASIC-Code: <obj>.Suspend

 

EndSuspend

EndSuspend hebt den mit Suspend gesetzten Zustand wieder auf.
Syntax BASIC-Code: <obj>.EndSuspend

 

Rescan

Veranlasst den FileSelector das Verzeichnis neu einzulesen. Der FileSelector führt auch im "Suspend" Zustand einen Rescan aus, hebt den "Suspend" Zustand aber nicht auf.
Syntax BASIC-Code: <obj>.Rescan

 

UpDirectory

Die Methode UpDirectory wechselt in das übergeordnete Verzeichnis.
Syntax BASIC-Code: <obj>.UpDirectory

 

OpenEntry

Die Methode OpenEntry wechselt in das selektierte Verzeichnis und zeigt dieses an. Ist er erste Eintrag im FileSelector selektiert (Aktuelles Verzeichnis, kein Unterverzeichnis) wird ins übergeordnete Verzeichnis gesprungen. Ist eine Datei selektiert passiert nichts.
Syntax BASIC-Code: <obj>.OpenEntry

^

Weiter...