Tech Note 14: 共通ライブラリ「NSBSystemLib」を使う

June 14, 2003

Copyright 2003 NS BASIC Corporation

[英語版]

翻訳:本稿はmizuno-ami氏に翻訳していただきました。

内容:

    はじめに
    関数一覧及び、クイックリファレンス
    NSBSystemLibライブラリ 関数リファレンス

はじめに:

共通ライブラリ「NSBSystemLib」(以下、NSBSystemLib)は、PalmOSのシステム部分へ アクセスする機能を提供します。 これらの幾つかの関数は、現在のNS Basicから SysTrap関数を使っても呼び出す事の出来ないAPIへのアクセスを実現しています。 また、その他は、PalmOS用の単純なインターフェースを提供します。

このライブラリに含まれる関数は、次のカテゴリに分類できます:

アラーム関係、データベース関係、イベント類、フォームとフィールド、HotSyncデータ、 ローカライズ、環境設定、プログレスマネージャ、システム時間。バージョン2からビット処理、暗号化、複合化、スクリーンおよびカラー処理のカテゴリーが追加されました。

凡例を含んだ本稿は、NSBSystemLibを使うのに必要な情報を全て提供していますが、 もし、根本的なPalmOSの関数について、それ以上知りたければ、PalmOS SDKを参照するか、 SDKに含まれるヘッダファイル(*.h)を参照して下さい。PalmOS SDKリファレンスは、以下よりダウンロードできます:

    http://www.palmos.com/dev/tech/docs/
PalmOSのSDK (Software Development Kit) は、こちらよりダウンロードできます:
    http://www.palmos.com/dev/tech/tools/

NSBSystemLibライブラリを使うために、LoadLibraryステートメントを使って プログラムに読み込んでおく必要があります。このステートメントは、プログラム中の 先頭となるStartupコードに記述する必要があります。 LoadLibraryステートメントは、 2番目の引数として、ライブラリ関数からの参照名を指定します。 この例では「NSL」を参照名に使っています。例えば:

プログラムの Startup code:

	Sub main()
	    LoadLibrary "NSBSystemLib", "NSL"
	End Sub

また、NSBSystemLibライブラリを使うには、NSBSystemLib.INFというファイルが、 "nsbasic\lib" というパスにある必要があり、また、実行するデバイスにNSBSystemLib.prcが ダウンロード(インストール)されている必要があります。

これらの関数に使用する引数と戻り値は、全てInteger型かString型のどちらかですが、 バージョンナンバーを返す関数に限り、Double型の値を返します。


関数一覧及び、クイックリファレンス:


バージョン情報
    Version                         version = Version()
    CompileInfo                     compileDateTime = CompileInfo()
    SystemVersion                   version = SystemVersion()

共有ライブラリグローバル変数へのアクセス
    GlobalVersionMajor              gblMajor = GlobalVersionMajor()
    GlobalVersionMinor              gblMinor = GlobalVersionMinor()
    GlobalX                         x = GlobalX()
    GlobalY                         y = GlobalY()
    GlobalStartX                    startX = GlobalStartX()
    GlobalStartY                    startY = GlobalStartY()
    GlobalEndX                      endX = GlobalEndX()
    GlobalEndY                      endY = GlobalEndY()
    GlobalStartPos                  startPos = GlobalStartPos()
    GlobalEndPos                    endPos = GlobalEndPos()
    GlobalWidth                     width = GlobalWidth()
    GlobalHeight                    height = GlobalHeight()
    GlobalHour                      gblHour = GlobalHour()
    GlobalMinute                    gblMinute = GlobalMinute()

アラーム関数
    SetAlarmReset                   SetAlarmReset resetTime, resetLimit
    SetAlarm                        status = SetAlarm(alarmPgm, alarmTime, alarmCmd, alarmMsg)
    CancelAlarm                     status = CancelAlarm(alarmPgm)
    GetAlarm                        alarmTime = GetAlarm(alarmPgm, alarmCmd, alarmMsg)
    GetAlarmTime                    alarmTime = GetAlarmTime(alarmPgm)
    GetAlarmResetTime               resetTime = GetAlarmResetTime(alarmPgm)
    GetAlarmResetLimit              resetLimit = GetAlarmResetLimit(alarmPgm)
    GetAlarmCommand                 alarmCmd = GetAlarmCommand(alarmPgm)
    GetAlarmMessage                 alarmMsg = GetAlarmMessage(alarmPgm)
    AlarmLog                        alarmTime = AlarmLog(alarmPgm, alarmCmd, alarmMsg)
    AlarmLogAlarmTime               alarmTime = AlarmLogAlarmTime(alarmPgm)
    AlarmLogResetTime               resetTime = AlarmLogResetTime(alarmPgm)
    AlarmLogResetLimit              resetLimit = AlarmLogResetLimit(alarmPgm)
    AlarmLogResetCount              resetCount = AlarmLogResetCount(alarmPgm)
    AlarmLogCommand                 alarmCmd = AlarmLogCommand(alarmPgm)
    AlarmLogMessage                 alarmMsg = AlarmLogMessage(alarmPgm)
    ClearAlarmLog                   alarmPgm = ClearAlarmLog()

データベース関数
    FindDatabase                    dbID = FindDatabase(cardNo, dbName)
    DatabaseInfo                    dbName = DatabaseInfo(cardNo, dbID)
    DatabaseName                    dbName = DatabaseName()
    DatabaseAttributes              dbAttributes = DatabaseAttributes()
    DatabaseVersion                 dbVersion = DatabaseVersion()
    DatabaseCreationDate            dbCreationDate = DatabaseCreationDate()
    DatabaseModificationDate        dbModificationDate = DatabaseModificationDate()
    DatabaseBackupDate              dbBackupDate = DatabaseBackupDate()
    DatabaseModificationNumber      dbModificationNumber = DatabaseModificationNumber()
    DatabaseAppInfoID               dbAppInfoID = DatabaseAppInfoID()
    DatabaseSortInfoID              dbSortInfoID = DatabaseSortInfoID()
    DatabaseType                    dbType = DatabaseType()
    DatabaseCreatorID               dbCreatorID = DatabaseCreatorID()
    DatabaseTotalSize               dbTotalSize = DatabaseTotalSize(cardNo, dbID)
    DatabaseNumRecords              dbNumRecords = DatabaseNumRecords()
    DatabaseDataSize                dbDataSize = DatabaseDataSize()
    DeleteDatabase                  status = DeleteDatabase(cardNo, dbID)
    GetNextDatabaseByTypeCreator    dbID = GetNextDatabaseByTypeCreator(newSearch, dbType, dbCreatorID, onlyLatestVersion)
    DatabaseCardNo                  dbCardNo = DatabaseCardNo()
    NumDatabases                    nbr = NumDatabases(cardNo)
    NumCards                        nbr = NumCards()
    GetDatabase                     dbID = GetDatabase(cardNo, index)
    SetDatabaseName                 status = SetDatabaseName(cardNo, dbID, dbName)
    SetDatabaseAttributes           status = SetDatabaseAttributes(cardNo, dbID, dbAttributes)
    SetDatabaseVersion              status = SetDatabaseVersion(cardNo, dbID, dbVersion)
    SetDatabaseCreationDate         status = SetDatabaseCreationDate(cardNo, dbID, dbCreationDate)
    SetDatabaseModificationDate     status = SetDatabaseModificationDate(cardNo, dbID, dbModificationDate)
    SetDatabaseBackupDate           status = SetDatabaseBackupDate(cardNo, dbID, dbBackupDate)
    SetDatabaseModificationNumber   status = SetDatabaseModificationNumber(cardNo, dbID, dbModificationNumber)
    SetDatabaseAppInfoID            status = SetDatabaseAppInfoID(cardNo, dbID, dbAppInfoID)
    SetDatabaseSortInfoID           status = SetDatabaseSortInfoID(cardNo, dbID, dbSortInfoID)
    SetDatabaseType                 status = SetDatabaseType(cardNo, dbID, dbType)
    SetDatabaseCreatorID            status = SetDatabaseCreatorID(cardNo, dbID, dbCreatorID)

イベント関数
    GetEvent                        eventType = GetEvent(timeoutTicks, consumePenEvents, returnVirtualEvents)
    SysHandleEvent                  SysHandleEvent()
    FlushEvents                     FlushEvents()
    KeyEventChr                     keyChr = KeyEventChr()
    KeyEventKeyCode                 keyCode = KeyEventKeyCode()
    KeyEventModifiers               modifiers = KeyEventModifiers()

フィールド、フォーム関数
    ControlHitControl               ControlHitControl objID
    FieldCopy                       FieldCopy objID
    FieldCut                        FieldCut objID
    FieldInsert                     FieldInsert objID, insString
    FieldPaste                      FieldPaste objID
    FieldUndo                       FieldUndo objID
    FieldGetInsPtPosition           pos = FieldGetInsPtPosition(objID)
    FieldGetSelection               startPos = FieldGetSelection(objID)
    FieldAnyDirty                   dirty = FieldAnyDirty()
    FieldDirty                      dirty = FieldDirty(objID)
    FieldSetDirty                   FieldSetDirty objID, dirty
    FieldSetAllDirty                FieldSetAllDirty dirty
    FieldSetSelection               FieldSetSelection objID, startPos, endPos
    FieldSetInsertionPoint          FieldSetInsertionPoint objID, pos
    FieldSetInsPtPosition           FieldSetInsPtPosition objID, pos
    FieldGetAttributes              attributes = FieldGetAttributes(objID)
    FieldSetAttributes              FieldSetAttributes objID, attributes
    FieldGetFont                    fontId = FieldGetFont(objID)
    FieldSetFont                    FieldSetFont objID, fontId
    FieldGetScrollPosition          position = FieldGetScrollPosition(objID)
    FieldSetScrollPosition          FieldSetScrollPosition objID, position
    FieldGetScrollValues            totalLines = FieldGetScrollValues(objID)
    FieldGetVisibleLines            lines = FieldGetVisibleLines(objID)
    FieldGetNumberOfBlankLines      lines = FieldGetNumberOfBlankLines(objID)
    FieldScrollable                 yesNo = FieldScrollable(objID, direction)
    FieldScrollField                FieldScrollField objID, nbrLines, direction
    FieldSetBounds                  FieldSetBounds objID, topLeftX, topLeftY, width, height
    FormGetNumberOfObjects          nbr = FormGetNumberOfObjects()
    FormGetObjectBounds             x = FormGetObjectBounds(objID)
    FormGetObjectPosition           x = FormGetObjectPosition(objID)
    FormGetObjectType               type = FormGetObjectType(objID)
    FormSetObjectPosition           FormSetObjectPosition objID, x, y
    FormSetObjectBounds             FormSetObjectBounds objID, topLeftX, topLeftY, width, height
    FormGetTitle                    title = FormGetTitle()
    FormReplaceTitle                FormReplaceTitle title, forceLength
    ListGetTopItem                  topItem = ListGetTopItem(objID)
    ListSetTopItem                  ListSetTopItem objID, topItem
    ListGetVisibleItems             visibleItems = ListGetVisibleItems(objID)
    ListScrollList                  result = ListScrollList(objID, direction, nbrItems)

フォント関連
    FontGetFont                     fontId = FontGetFont()
    FontSetFont                     oldFontId = FontSetFont(fontId)
    FontSelect                      fontId = FontSelect()
    FontCharWidth                   width = FontCharWidth(charString)
    FontCharsWidth                  width = FontCharsWidth(charString, optionalLen)
    FontWidthToOffset               offset = FontWidthToOffset(charString, optionalLen, width)
    FontCharsInWidth                length = FontCharsInWidth(charString, optionalLen, width)
    FontWordWrap                    length = FontWordWrap(charString, width)

HotSync データ
    SyncUserName                    userName = SyncUserName()
    SuccessfulSync                  syncDate = SuccessfulSync()
    LastSync                        syncDate = LastSync()

ローカライズ:地域情報関数
    LocalizeNumber                  localNbrStr = LocalizeNumber(stdNbrStr)
    DelocalizeNumber                stdNbrStr = DelocalizeNumber(localNbrStr)
    LocalizeDate                    localDateStr = LocalizeDate(stdDateStr, ToDateFormat, longDateFormat)

環境設定
    GetAppPreferences               data = GetAppPreferences(pgmName, prefId, saved)
    SetAppPreferences               status = SetAppPreferences(pgmName, prefId, data, saved)
    GetSysPreference                data = GetSysPreference(prefID)
    SetSysPreference                SetSysPreference prefID, data

プログレスマネージャ
    ProgressStartDialog             ProgressStartDialog title
    ProgressStopDialog              ProgressStopDialog force
    ProgressUpdateDialog            ProgressUpdateDialog error, message
    ProgressUserCancel              canceled = ProgressUserCancel()
    ProgressPercent                 percent = ProgressPercent(current, count)
    ProgressPercentString           strValue = ProgressPercentString(percent, resolution, completeChar, incompleteChar)

文字列関数
    String4ToInt                    intValue = String4ToInt(fourByteString)
    IntToString4                    fourByteString = IntToString4(intValue)
    DelimitedItem                   item = DelimitedItem(inputStr, delimiter, nbr)
    FixedWidthString                fixedStr = FixedWidthString(origStr, width, options)
    NormalSpacedString              normalStr = NormalSpacedString(origStr)

システム時刻関数
    SelectOneTime                   newTimeSelected = SelectOneTime(defHour, defMinute, title)
    IncrementSystemTime             newSysTime = IncrementSystemTime(oldSysTime, hours, minutes, seconds)
    SystemTime                      sysTime = SystemTime(strDate, strTime, seconds, ToDateFormat)
    StringDateTime                  strDateTime = StringDateTime(sysTime, ToDateFormat, ToTimeFormat, AMPMFormat)
    StringDate                      strDate = StringDate(sysTime, ToDateFormat)
    StringTime                      strTime = StringTime(sysTime, ToTimeFormat, AMPMFormat)

ライブラリバージョン1.4の追加と変更点
    PostEvent                       PostEvent eventNbr
    FormGetFocus                    objID = FormGetFocus()
    FieldGetTextLength              txtLen = FieldGetTextLength(objID)
    RandomNumber                    nbr = RandomNumber(seed, minNbr, maxNbr)
    ResetAutoOffTimer               ResetAutoOffTimer()
    SetAutoOffTime                  oldSeconds = SetAutoOffTime(newSeconds)
    ProgramVersionString            verStr = ProgramVersionString(cardNbr, pgmName)
    DynamicHeapSize                 heapSize = DynamicHeapSize()
    DynamicHeapFree                 freeSize = DynamicHeapFree()
    DynamicHeapMaxChunk             maxChunkSize = DynamicHeapMaxChunk()
    SortInit                        error = SortInit(maxItems, itemType)
    SortAddString                   error = SortAddString(strItem)
    SortAddInteger                  error = SortAddInteger(intItem)
    SortAddDouble                   error = SortAddDouble(dblItem)
    SortGetString                   strItem = SortGetString(index)
    SortGetInteger                  intItem = SortGetInteger(index)
    SortGetDouble                   dblItem = SortGetDouble(index)
    SortQSort                       numItems = SortQSort(reverseSort, caselessSort)
    SortInsertionSort               numItems = SortInsertionSort(reverseSort, caselessSort)
    ListQSort                       numItems = ListQSort(objID, reverseSort, caselessSort)
    ListInsertionSort               numItems = ListInsertionSort(objID, reverseSort, caselessSort)

ライブラリバージョン2.0の追加と変更点
    FormGetAllObjectTypes           type = FormGetAllObjectTypes(objID)
    FieldClearAll                   FieldClearAll()
    ObjectWithPoint                 obj = ObjectWithPoint(x, y, returnType, searchOption)
    ANDInt                          result = ANDInt(int1, int2)
    ORInt                           result = ORInt(int1, int2)
    XORInt                          result = XORInt(int1, int2)
    OnesComplement                  result = OnesComplement(intValue)
    BitValue                        result = BitValue(intValue, bitNumber)
    BitsValue                       result = BitsValue(intValue, startBit, endBit)
    SetBitValue                     result = SetBitValue(intValue, bitNumber, bitValue)
    SetBitsValue                    result = SetBitsValue(intValue, bitsValue, startBit, endBit)
    IntToHex                        hexValue = IntToHex(intValue, trimLeading)
    HexToInt                        intValue = HexToInt(hexValue)
    IntToBin                        binValue = IntToBin(intValue, trimLeading)
    BinToInt                        intValue = BinToInt(binValue)

スクリーン用及びカラー用関数:
    GetSupportedDepths              depths = GetSupportedDepths()
    DepthSupported                  boolean = DepthSupported(depth)
    ColorSupported                  boolean = ColorSupported()
    SetDepth                        SetDepth depth
    SetColor                        SetColor boolean
    SaveScreenMode                  SaveScreenMode()
    RestoreScreenMode               RestoreScreenMode()
    CurrentDepth                    depth = CurrentDepth()
    CurrentColor                    boolean = CurrentColor()
    SetToDefaults                   SetToDefaults()
    DefaultDepth                    depth = DefaultDepth()
    DefaultColor                    boolean = DefaultColor()
    GetTableEntryIndex              index = GetTableEntryIndex(which)
    GetTableEntryRGB                index = GetTableEntryRGB(which)
    GetRGBIndex                     index = GetRGBIndex()
    GetRGBRed                       red = GetRGBRed()
    GetRGBGreen                     green = GetRGBGreen()
    GetRGBBlue                      blue = GetRGBBlue()
    SetTableEntryIndex              SetTableEntryIndex which, index
    SetTableEntryRGB                SetTableEntryRGB which, red, green, blue
    BrightnessAdjust                BrightnessAdjust()
    ContrastAdjust                  ContrastAdjust()
    PickColorIndex                  changed = PickColorIndex(index, title)
    PickColorRGB                    changed = PickColorRGB(red, green, blue, title)
    IndexToRGB                      IndexToRGB index
    RGBToIndex                      index = RGBToIndex(red, green, blue)
    SetForeColor                    oldIndex = SetForeColor(newIndex)
    SetBackColor                    oldIndex = SetBackColor(newIndex)
    SetTextColor                    oldIndex = SetTextColor(newIndex)
    DrawLine                        DrawLine x1, y1, x2, y2
    DrawGrayLine                    DrawGrayLine x1, y1, x2, y2
    EraseLine                       EraseLine x1, y1, x2, y2
    InvertLine                      InvertLine x1, y1, x2, y2
    DrawPixel                       DrawPixel x, y
    ErasePixel                      ErasePixel x, y
    InvertPixel                     InvertPixel x, y
    GetPixel                        index = GetPixel(x, y)
    ScreenLock                      success = ScreenLock(mode)
    ScreenUnlock                    ScreenUnlock()
    WinSaveBits                     WinSaveBits index, x, y, width, height
    WinRestoreBits                  WinRestoreBits index, x, y

スリープ・ウェイクイベント関数
    SetSleepEvent                   SetSleepEvent eventNbr
    SetWakeEvent                    SetWakeEvent eventNbr
    GetSleepEvent                   eventNbr = GetSleepEvent()
    GetWakeEvent                    eventNbr = GetWakeEvent()
    GetSleepEventTime               eventTime = GetSleepEventTime()
    GetWakeEventTime                eventTime = GetWakeEventTime()



文字列の暗号化及び復号化関数
    EncryptDESString                encryptedStr = EncryptDESString(decryptedStr)
    DecryptDESString                decryptedStr = DecryptDESString(encryptedStr)
    SetDESKey                       SetDESKey keyStr

NSBSystemLibライブラリ 関数リファレンス:


バージョン情報

バージョン情報機能は、NSBSystemLibライブラリのバージョン、およびユーザのPalmOSシステムに関する情報へのアクセス機能を提供します。

Version

version = NSBSystemLib.Version()
NSBSystemLibライブラリのバージョンを返します。

戻り値 version as Double

Dim version as Double version = NSL.Version()

CompileInfo

compileDateTime = NSBSystemLib.CompileInfo()
NSBSystemLibライブラリがコンパイルされた日付と時刻を返します。

戻り値 compileDateTime as String

Dim compileDateTime as String compileDateTime = NSL.CompileInfo()

SystemVersion

version = NSBSystemLib.SystemVersion()
PalmOSのバージョンを返します。

戻り値 version as Double

Dim version as Double version = NSL.SystemVersion()

参考: GlobalVersionMajor(), GlobalVersionMinor()

共有ライブラリグローバル変数へのアクセス

現在、共有ライブラリの各関数が返す戻り値は、単一の値を返します。 しかし、ライブラリ中の多くの関数は、複数の値を返します。 これらの値を参照するために、これらの値は、ライブラリ中のグローバル変数として 格納されています。下記の機能は、これらのグローバル変数の値を参照します。

一般的に、これらの関数は、特別な関数を利用した後に使われます。

GlobalVersionMajor

gblMajor = NSBSystemLib.GlobalVersionMajor()
PalmOSのバージョン数字のメジャーバージョンを返します。 この値は、ライブラリをロードしたときに、グローバル変数に代入されます。

戻り値 gblMajor as Integer

Dim gblMajor as Integer gblMajor = NSL.GlobalVersionMajor()

参考: SystemVersion()

GlobalVersionMinor

gblMinor = NSBSystemLib.GlobalVersionMinor()
PalmOSのバージョン数字のマイナー部分を返します。 この値は、ライブラリをロードしたときに、グローバル変数に代入されます。

戻り値 gblMinor as Integer

Dim gblMinor as Integer gblMinor = NSL.GlobalVersionMinor()

参考: SystemVersion()

GlobalX

x = NSBSystemLib.GlobalX()
NSBSystemLibライブラリの中のグローバル変数「x」の値を返します。

戻り値 x as Integer

Dim x as Integer x = NSL.GlobalX()

GlobalY

y = NSBSystemLib.GlobalY()
NSBSystemLibライブラリの中のグローバル変数「y」の値を返します。

戻り値 y as Integer

Dim y as Integer y = NSL.GlobalY()

GlobalStartX

startX = NSBSystemLib.GlobalStartX()
NSBSystemLibライブラリの中のグローバル変数「StartX」の値を返します。

戻り値 startX as Integer

Dim startX as Integer startX = NSL.GlobalStartX()

GlobalStartY

startY = NSBSystemLib.GlobalStartY()
NSBSystemLibライブラリの中のグローバル変数「StartY」の値を返します。

戻り値 startY as Integer

Dim startY as Integer startY = NSL.GlobalStartY()

GlobalEndX

endX = NSBSystemLib.GlobalEndX()
NSBSystemLibライブラリの中のグローバル変数「EndX」の値を返します。

戻り値 endX as Integer

Dim endX as Integer endX = NSL.GlobalEndX()

GlobalEndY

endY = NSBSystemLib.GlobalEndY()
NSBSystemLibライブラリの中のグローバル変数「EndY」の値を返します。

戻り値 endY as Integer

Dim endY as Integer endY = NSL.GlobalEndY()

GlobalStartPos

startPos = NSBSystemLib.GlobalStartPos()
NSBSystemLibライブラリの中のグローバル変数「startPos」の値を返します。

戻り値 startPos as Integer

Dim startPos as Integer startPos = NSL.GlobalStartPos()

GlobalEndPos

endPos = NSBSystemLib.GlobalEndPos()
NSBSystemLibライブラリの中のグローバル変数「endPos」の値を返します。

戻り値 endPos as Integer

Dim endPos as Integer endPos = NSL.GlobalEndPos()

GlobalWidth

width = NSBSystemLib.GlobalWidth()
NSBSystemLibライブラリの中のグローバル変数「width」の値を返します。

戻り値 width as Integer

Dim width as Integer width = NSL.GlobalWidth()

GlobalHeight

height = NSBSystemLib.GlobalHeight()
NSBSystemLibライブラリの中のグローバル変数「height」の値を返します。

戻り値 height as Integer

Dim height as Integer height = NSL.GlobalHeight()

GlobalHour

gblHour = NSBSystemLib.GlobalHour()
NSBSystemLibライブラリの中のグローバル変数「hour」の値を返します。

戻り値 gblHour as Integer

Dim gblHour as Integer gblHour = NSL.GlobalHour()

参考: SelectOneTime()

GlobalMinute

gblMinute = NSBSystemLib.GlobalMinute()
NSBSystemLibライブラリの中のグローバル変数「minute」の値を返します。

戻り値 gblMinute as Integer

Dim gblMinute as Integer gblMinute = NSL.GlobalMinute()

参考: SelectOneTime()

アラーム関数

PalmOS上のアラームは、特別に配置されたサブプログラムの システムコールとして動作します。そのため、プログラムを 特にアラームを処理することができるように、記述する必要が あります。 このようなプログラムが必要とする幾つかの条件には、 特別なコードの受け取りと、グローバル変数の及ばない部分への アクセスを含んでいます。 NSBasicプログラムは、現在これらの必要条件を処理する事が できず、アラームを単体で処理することができません。 しかしながら、NS Basicプログラムから「プロキシ」プログラムを 使用することで、アラームを利用することができます。

プロキシプログラムは、その名前が意味する通り、NS Basicプログラムの 代理として機能します。NSBAlarmProxyプログラムと共に動作する事を前提 としたここで説明するアラーム関数は、ライブラリと共に配布されます。 現行のPalmOSは、1つのプログラムのために、1つだけのアクティブなアラームを サポートします。そういう事から、 サポート提供します。そのため、5つまでNSBAlarmProxyプログラムを利用できるように しました。5つの代理プログラムを使って、例えば、1つのNS Basicプログラムから 5つのアラームをセットしたり、また、各1つずつのアラームをサポートするプログラムを 5本使うなど、これらの組み合わせで動作させる事になります。アラームを1つしか設定しない場合、1つのプロキシプログラムのインストールで十分です。 これらのNSBAlarmProxyプログラムの名前は、以下の通りです:
NSBAlarmProxy1, NSBAlarmProxy2, NSBAlarmProxy3, NSBAlarmProxy4, and NSBAlarmProxy5
NSBAlarmProxyプログラムは、あなたのNSBasicプログラムの代わりに多くの異なる事を 行わせることができます。 それらは、デバイスの電源ON、単なるアラーム、アラート表示、指定されたプログラムを スタートさせる、の他に、動作中のNS Basicからイベントを感知したりできます。 アラームは、自動的にそれら自身をリセットしたり、再スケジュールするように設定できます。 イベントを感知できるリセット機能の特徴を使う事で、簡単に「割り込みタイマー」を実現する事も出来ます。

たいていの場合、アラームが起動すると、プロキシプログラムは、その動作ログを残します。 このログは、プロキシプログラムのアプリケーション設定に反映されます。 そのため、最新の動作ログだけが利用でき、個別のベータベースは作られません。 この情報は、色々な目的のために使う事が出来ます。 あなたのNS Basicプログラムが、ユーザーによってスタートされたのか、アラームによって 開始されたのかを知る1つの方法です。 これは、あなたのStartupコード内で、アラームログと現在時刻をチェックする事で出来ます。 もし、それらが同じか、近い時間で、また、ログの中にプログラム名が残っていれば このプログラムはアラームによって始められたと考える事が出来ます。 この情報を使って、標準か、もしくは、別のスタート処理を持ったフォームを選択させて プログラムを開始させることが出来ます。

SetAlarmReset

NSBSystemLib.SetAlarmReset resetTime, resetLimit
自動アラームによってセットされる次のアラーム用間隔をリセットします。

引数 resetTime as Integer リセット間隔(秒) 0 = 自動的にアラームをリセットしません resetLimit as Integer 生じることができる自動リセットの数の限界。 -1 = リセットは制限されていません。 自動リセットを止めるためにCancelAlarm()を使用しなければなりません。 0 = 自動的にアラームをリセットしません

Dim resetTime as Integer Dim resetLimit as Integer resetTime = 10 resetLimit = -1 NSL.SetAlarmReset resetTime, resetLimit

この機能が使用される場合、これは、各SetAlarm()関数の前にコールしなければなりません。

補足: 無限ループになり得るので、自動リセットを使うときは注意をして下さい。 アラームイベントは、指定された間隔で正確に発生します。そのため、これらのイベントの プログラムを処理する速度が、イベントのキューに追いつかない場合、無限ループとなります。 通常、これらの間隔は、2秒以下に設定してはいけません。

SetAlarm

status = NSBSystemLib.SetAlarm(alarmPgm, alarmTime, alarmCmd, alarmMsg)
指定されたプログラムのためにアラームをセットします。 このライブラリ上のアラーム機能は、NSBAlarmProxyプログラムと共に使用されるように 設計されています。この機能と他のプログラムを一緒に使用している間は、 大きな障害になります。これは、この機能が、プログラムのアプリケーション設定に 書き込みをするためです。同じ設定を使用する非プロキシプログラムに対して、 不正となりハードリセットが必要になるかもしれません。 プログラム名には、将来、アラームプロキシプログラムが追加される事を考慮するような 制限はされていません。

引数 alarmPgm as String アラームプログラム名 alarmTime as Integer 絶対アラーム時間(システム時間フォーマットか、現在の時刻からの秒の増分で指定)。 現在のシステム時間から5分差し引いた値に等しいかそれより大きい場合、その時間を 絶対時間と見なします。 alarmCmd as Integer アラームコマンド説明: -32767 〜 -30001 = "Timer" コマンド これらのコマンドは、最小限のオーバーヘッドしか持ちません。 これらの動作は、アラームログにも書かれません。さらに、これらは、自動的に アラームをリセットします。これらは、CancelAlarm()関数を使って、キャ ンセルしなければなりません。 これらのコマンドは、コマンドの絶対値を持つイベントをキューにいれます。 ここで使われるリセット間隔(秒)は次のように計算します: abs(cmd) - 30000 例: コマンドが「-30005」の場合、インターバルは5秒になります。イベント タイプに30005を持つイベントをキューに入れます。 0 = "nilEvent"をキューにいれます。単純に、Palmデバイスの電源ONなどに使えます。 1 = システムアラーム音のみ鳴らします。 2 = システムアラームを鳴らし、alarmMsbパラメータで指定するメッセージを伴ったAlert(警報)を発生します。 3 = alarmMsgパラメータで指定する名前のプログラムをスタートさせます。この場合、alarmMsgパラメータ は、次の書式をもった文字列で指定します: <programName>[,<launcherWaitTime>][;<userInfo>] 例: "Address" "Address;started by MyProg" "Address,6;started by MyProg" 補足: launcherWaitTimeは、現在のプログラムを中断するまでの時間(秒)で、デフォルト値は2秒に 設定されています。 alarmMsgの文字列全て同様、userInfoはアラームログに書かれます。これは自 由に使う事が出来ます。 4 〜 255 = Keyイベントと同じ値をログに残す特別なキューを指定します。 24832 〜 30000 = 指定されたイベントタイプと同じイベントをキューにいれます。 alarmMsg as String 80文字以下の文字列で、alarmCmd "2"のメッセージか、alarmCmd "3"のプログラミングに使用します。 これは、アラームログに色々な情報を残すため、とても有用なものです。

戻り値 status as Integer 0 = 正常終了 -1 = 指定されたアラームプログラムがインストールされていません -2 = almErrorMemory - メモリーが不十分です -3 = almErrorFull - アラームキューが満タンです -4 = 予期しないエラー・未定義のエラー

Dim status as Integer Dim alarmPgm as String Dim alarmTime as Integer Dim alarmCmd as Integer Dim alarmMsg as String alarmPgm = "NSBAlarmProxy1" alarmTime = 3600 ' 1 hour from now alarmCmd = 3 alarmMsg = "Hey Wake UP!" status = NSL.SetAlarm(alarmPgm, alarmTime, alarmCmd, alarmMsg)

参照: SystemTime()

補足: 自動リセットを使う時は、無限ループになる可能性があるので 特に注意して下さい。アラームイベントは、指定された間隔で正確に発生します。 そのため、これらのイベントの プログラムを処理する速度が、イベントキューに 追いつかない場合、無限ループとなります。 通常、これらの間隔は、2秒以下に 設定してはいけません。

CancelAlarm

status = NSBSystemLib.CancelAlarm(alarmPgm)
指定されたアラームプログラムをキャンセルするときに使います。

引数 alarmPgm as String アラームプログラム名

戻り値 status as Integer 0 = 正常終了 -1 = 指定されたアラームプログラムがインストールされていません -2 = almErrorMemory - メモリーが不十分です -3 = almErrorFull - アラームキューが満タンです -4 = 予期しないエラー・未定義のエラー

Dim status as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" status = NSL.CancelAlarm(alarmPgm)

GetAlarm

alarmTime = NSBSystemLib.GetAlarm(alarmPgm, alarmCmd, alarmMsg)
現在セットされているアラームの情報を取得します

引数 alarmPgm as String アラームプログラム名 alarmCmd as String AlarmCmdの文字列。この引数には戻り値が返されます。 この関数を使う前に、最大の文字数で初期化する必要があります。 この文字列は6文字より長くなってはいけません。 alarmMsg as String Alarm メッセージの文字列。この引数には戻り値が返されます。 この関数を使う前に、最大の文字数で初期化する必要があります。 この文字列は80字より長くなってはいけません。

戻り値 alarmTime as Integer アラーム時間がシステム設定にしたがった書式で返されます。 この値は、1904年1月1日からの経過秒で返されます。

Dim alarmTime as Integer Dim alarmPgm as String Dim alarmCmd as String Dim alarmMsg as String alarmPgm = "NSBAlarmProxy1" '最大の文字列で初期化します。 alarmCmd = "123456" alarmMsg = "1234567890123456789012345678901234567890" _ + "1234567890123456789012345678901234567890" alarmTime = NSL.GetAlarm(alarmPgm, alarmCmd, alarmMsg)

参考: StringDateTime(), StringDate(), StringTime()

GetAlarmTime

alarmTime = NSBSystemLib.GetAlarmTime(alarmPgm)
現在セットされているアラームの情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 alarmTime as Integer アラーム時間がシステム設定にしたがった書式で返されます。 この値は、1904年1月1日からの経過秒で返されます。

Dim alarmTime as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmTime = NSL.GetAlarmTime(alarmPgm)

参考: StringDateTime(), StringDate(), StringTime()

GetAlarmResetTime

resetTime = NSBSystemLib.GetAlarmResetTime(alarmPgm)
現在セットされているアラームの情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 resetTime as Integer アラームリセット時間(秒)

Dim resetTime as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" resetTime = NSL.GetAlarmResetTime(alarmPgm)

GetAlarmResetLimit

resetLimit = NSBSystemLib.GetAlarmResetLimit(alarmPgm)
現在セットされているアラームの情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 resetLimit as Integer アラームリセットの限界

Dim resetLimit as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" resetLimit = NSL.GetAlarmResetLimit(alarmPgm)

GetAlarmCommand

alarmCmd = NSBSystemLib.GetAlarmCommand(alarmPgm)
現在セットされているアラームの情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 alarmCmd as Integer アラームコマンド

Dim alarmCmd as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmCmd = NSL.GetAlarmCommand(alarmPgm)

GetAlarmMessage

alarmMsg = NSBSystemLib.GetAlarmMessage(alarmPgm)
現在セットされているアラームの情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 alarmMsg as String アラームメッセージ

Dim alarmMsg as String Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmMsg = NSL.GetAlarmMessage(alarmPgm)

AlarmLog

alarmTime = NSBSystemLib.AlarmLog(alarmPgm, alarmCmd, alarmMsg)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名 alarmCmd as String AlarmCmdの文字列。この引数には戻り値が返されます。 この関数を使う前に、最大の文字数で初期化する必要があります。 この文字列は6文字より長くなってはいけません。 alarmMsg as String Alarm メッセージの文字列。この引数には戻り値が返されます。 この関数を使う前に、最大の文字数で初期化する必要があります。 この文字列は80字より長くなってはいけません。

戻り値 alarmTime as Integer アラーム時間がシステム設定にしたがった書式で返されます。 この値は、1904年1月1日からの経過秒で返されます。

Dim alarmTime as Integer Dim alarmPgm as String Dim alarmCmd as String Dim alarmMsg as String alarmPgm = "NSBAlarmProxy1" alarmCmd = "123456" alarmMsg = "1234567890123456789012345678901234567890" _ + "1234567890123456789012345678901234567890" alarmTime = NSL.AlarmLog(alarmPgm, alarmCmd, alarmMsg)

参考: StringDateTime(), StringDate(), StringTime()

AlarmLogAlarmTime

alarmTime = NSBSystemLib.AlarmLogAlarmTime(alarmPgm)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 alarmTime as Integer アラーム時間がシステム設定にしたがった書式で返されます。 この値は、1904年1月1日からの経過秒で返されます。

Dim alarmTime as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmTime = NSL.AlarmLogAlarmTime(alarmPgm)

参考: StringDateTime(), StringDate(), StringTime()

AlarmLogResetTime

resetTime = NSBSystemLib.AlarmLogResetTime(alarmPgm)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 resetTime as Integer アラームリセット時間(秒)

Dim resetTime as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" resetTime = NSL.AlarmLogResetTime(alarmPgm)

AlarmLogResetLimit

resetLimit = NSBSystemLib.AlarmLogResetLimit(alarmPgm)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 resetLimit as Integer アラームリセットの限界

Dim resetLimit as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" resetLimit = NSL.AlarmLogResetLimit(alarmPgm)

AlarmLogResetCount

resetCount = NSBSystemLib.AlarmLogResetCount(alarmPgm)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 resetCount as Integer アラームがリセットされた回数

Example Dim resetCount as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" resetCount = NSL.AlarmLogResetCount(alarmPgm)

AlarmLogCommand

alarmCmd = NSBSystemLib.AlarmLogCommand(alarmPgm)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 alarmCmd as Integer アラームコマンド

Dim alarmCmd as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmCmd = NSL.AlarmLogCommand(alarmPgm)

AlarmLogMessage

alarmMsg = NSBSystemLib.AlarmLogMessage(alarmPgm)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 alarmMsg as String アラームメッセージ

Dim alarmMsg as String Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmMsg = NSL.AlarmLogMessage(alarmPgm)

ClearAlarmLog

alarmPgm = NSBSystemLib.ClearAlarmLog()
指定されたアラームプログラムのログを削除します。

引数 alarmPgm as String アラームプログラム名

Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmPgm = NSL.ClearAlarmLog()


データベース関数

データベース関数は、Palmデバイス上のデータベースを定義する方法を 提供します。また、データベースの情報を取得したり、一部設定を 変更できる機能を提供します。ただし、実際のデータを読み書きする 機能は提供されていません。

FindDatabase

dbID = NSBSystemLib.FindDatabase(cardNo, dbName)
指定されたデータベースのデータベースID(LocalID)を返します。

引数 cardNo as Integer この値は、ほとんどの場合、0 を指定する dbName as String データベース名

戻り値 dbID as Integer 0 が返された場合、指定したデータベースが存在しません それ以外は、指定されたデータベースのIDを返します

Dim dbID as Integer Dim cardNo as Integer Dim dbName as String cardNo = 0 dbName = "NSBRuntime" dbID = NSL.FindDatabase(cardNo, dbName)

DatabaseInfo

dbName = NSBSystemLib.DatabaseInfo(cardNo, dbID)
カードNoとデータベースID(LocalID)で示されるデータベースの名前を 返します。それ以外に、データベースの他の情報も参照することが 可能です。詳しい使い方とデータの参照方法などは、例を見てください。

引数 cardNo as Integer dbID as Integer

戻り値 dbName as String

Dim cardNo as Integer Dim dbID as Integer Dim dbName as String Dim dbVersion as Integer Dim dbCreationDate as Integer Dim dbModificationDate as Integer Dim dbBackupDate as Integer Dim dbModificationNumber as Integer Dim dbAppInfoID as Integer Dim dbSortInfoID as Integer Dim dbType as Integer Dim dbCreatorID as Integer cardNo = 0 dbName = "NSBRuntime" dbID = NSBNSL.FindDatabase(cardNo, dbName) If dbID <> 0 Then dbName = NSL.DatabaseInfo(cardNo, dbID) If dbName <> "" Then dbVersion = NSL.DatabaseVersion() dbCreationDate = NSL.DatabaseCreationDate() dbModificationDate = NSL.DatabaseModificationDate() dbBackupDate = NSL.DatabaseBackupDate() dbModificationNumber = NSL.DatabaseModificationNumber() dbAppInfoID = NSL.DatabaseAppInfoID() dbSortInfoID = NSL.DatabaseSortInfoID() dbType = NSL.DatabaseType() dbCreatorID = NSL.DatabaseCreatorID() EndIf EndIf

  参照: DatabaseName(), DatabaseAttributes(), DatabaseVersion(), DatabaseCreationDate(), DatabaseModificationDate(), DatabaseBackupDate(), DatabaseModificationNumber(), DatabaseType(), DatabaseCreatorID()

DatabaseName

dbName = NSBSystemLib.DatabaseName()
DatabaseInfo()関数で直前に呼び出されたデータベースの、名前を返します。

戻り値 dbName as String

DatabaseInfo()関数の例を参照して下さい。

DatabaseAttributes

dbAttributes = NSBSystemLib.DatabaseAttributes()
DatabaseInfo()関数で直前に呼び出されたデータベースの、アトリビュート(属性)を返します。

戻り値 dbAttributes as Integer 属性は、ビットデータで返されます。以下に、利用可能なビットマスク値を示します: Bit 0 (0x0001) - dmHdrAttrResDB Bit 1 (0x0002) - dmHdrAttrReadOnly Bit 2 (0x0004) - dmHdrAttrAppInfoDirty Bit 3 (0x0008) - dmHdrAttrBackup Bit 4 (0x0010) - dmhdrAttrOKToInstallNewer Bit 5 (0x0020) - dmHdrAttrResetAfterInstall Bit 6 (0x0040) - dmHdrAttrCopyPrevention Bit 7 (0x0080) - dmHdrAttrStream Bit 8 (0x0100) - dmHdrAttrHidden Bit 9 (0x0200) - hmHdrAttrLaunchableData Bit 15 (0x8000) - dmHdrAttrOpen

DatabaseInfo()関数の例を参照して下さい。

DatabaseVersion

dbVersion = NSBSystemLib.DatabaseVersion()
DatabaseInfo()関数で直前に呼び出されたデータベースの、バージョンを返します。

戻り値 dbVersion as Integer

DatabaseInfo()関数の例を参照して下さい。

DatabaseCreationDate

dbCreationDate = NSBSystemLib.DatabaseCreationDate()
DatabaseInfo()関数で直前に呼び出されたデータベースの、作成日付を返します。 この日付は、システムフォーマットに従って、1904年1月1日からの経過秒を表しています。

戻り値 dbCreationDate as Integer

DatabaseInfo()関数の例を参照して下さい。

参照: StringDateTime(), StringDate(), StringTime()

DatabaseModificationDate

dbModificationDate = NSBSystemLib.DatabaseModificationDate()
DatabaseInfo()関数で直前に呼び出されたデータベースの、更新日付を返します。 この日付は、システムフォーマットに従って、1904年1月1日からの経過秒を表しています。

戻り値 dbModificationDate as Integer

DatabaseInfo()関数の例を参照して下さい。

参照: StringDateTime(), StringDate(), StringTime()

DatabaseBackupDate

dbBackupDate = NSBSystemLib.DatabaseBackupDate()
DatabaseInfo()関数で直前に呼び出されたデータベースの、バックアップ日付を返します。 この日付は、システムフォーマットに従って、1904年1月1日からの経過秒を表しています。

戻り値 dbBackupDate as Integer

DatabaseInfo()関数の例を参照して下さい。

参考: StringDateTime(), StringDate(), StringTime()

DatabaseModificationNumber

dbModificationNumber = NSBSystemLib.DatabaseModificationNumber()
DatabaseInfo()関数で直前に呼び出されたデータベースの、更新レコード数を返します。 この数は、レコードを削除したり、追加したり、修正した場合にそれぞれ1つずつ加算されます。

戻り値 dbModificationNumber as Integer

DatabaseInfo()関数の例を参照して下さい。

DatabaseAppInfoID

dbAppInfoID = NSBSystemLib.DatabaseAppInfoID()
DatabaseInfo()関数で直前に呼び出されたデータベースのアプリケーション情報ブロックのローカルIDを返します。

戻り値 dbAppInfoID as Integer 0:情報ブロックが利用可能でない状態を表します。

DatabaseInfo()関数の例を参照して下さい。

DatabaseSortInfoID

dbSortInfoID = NSBSystemLib.DatabaseSortInfoID()
DatabaseInfo()関数で直前に呼び出されたデータベースのソートテーブルブロックのローカルIDを返します。

戻り値 dbSortInfoID as Integer 0:ソートテーブルが利用可能でない状態を表します。

DatabaseInfo()関数の例を参照して下さい。

DatabaseType

dbType = NSBSystemLib.DatabaseType()
DatabaseInfo()関数で直前に呼び出されたデータベースのタイプ(型)を返します。

戻り値 dbType as Integer

DatabaseInfo()関数の例を参照して下さい。

参考: IntToString4()

DatabaseCreatorID

dbCreatorID = NSBSystemLib.DatabaseCreatorID()
DatabaseInfo()関数で直前に呼び出されたデータベースのクリエータIDを返します。

戻り値 dbCreatorID as Integer

DatabaseInfo()関数の例を参照して下さい。

参照: IntToString4()

DatabaseTotalSize

dbTotalSize = NSBSystemLib.DatabaseTotalSize(cardNo, dbID)
指定されたデータベースのヘッダ(カード番号やデータベースID情報など)を含む総サイズを返します。 さらに、それは、データベースのレコード数やデータベース内のサイズの合計を検索します。 例などを参考に、データへのアクセス方法のより詳しい情報を得てください。

引数 cardNo as Integer dbID as Integer

戻り値 dbTotalSize as Integer

Dim cardNo as Integer Dim dbID as Integer Dim dbTotalSize as Integer Dim dbNumRecords as Integer Dim dbDataSize as Integer cardNo = 0 dbName = "NSBRuntime" dbID = NSL.FindDatabase(cardNo, dbName) If dbID <> 0 Then dbTotalSize = NSL.DatabaseSize(cardNo, dbID) dbNumRecords = NSL.DatabaseNumRecords() dbDataSize = NSL.DatabaseDataSize() EndIf

参照: DatabaseNumRecords(), DatabaseDataSize()

DatabaseNumRecords

dbNumRecords = NSBSystemLib.DatabaseNumRecords()
DatabaseTotalSize()関数で直前に呼び出されたデータベースのレコード数を返します。

戻り値 dbNumRecords as Integer

DatabaseTotalSize()関数の例を参照して下さい。

DatabaseDataSize

dbDataSize = NSBSystemLib.DatabaseDataSize()
DatabaseTotalSize()関数で直前に呼び出されたデータベースのヘッダを差し引いたデータサイズを返します。

戻り値 dbDataSize as Integer

DatabaseTotalSize()関数の例を参照して下さい。

DeleteDatabase

status = NSBSystemLib.DeleteDatabase(cardNo, dbID)
指定されたデータベースを削除します。

引数 cardNo as Integer dbID as Integer

戻り値 status as Integer 0 = successful(成功) 257 = memErrChunkLocked(メモリーエラー:チャンクロック) 258 = memErrNotEnoughSpace(メモリーエラー:十分な空きがない) 259 = memErrInvalidParam(メモリーエラー:引数が不正) 517 = dmErrDatabaseOpen(データベースエラー:データベースが開いている) 518 = dmErrCantOpen(データベースエラー:データベースが開けない) 519 = dmErrCantFind(データベースエラー:データベースが見つからない) 526 = dmErrROMBased(データベースエラー:ROM上のデータベースである)

Dim cardNo as Integer Dim dbID as Integer Dim status as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) If dbID <> 0 Then status = NSL.DeleteDatabase(cardNo, dbID) EndIf

参照: FindDatabase()

GetNextDatabaseByTypeCreator

dbID = NSBSystemLib.GetNextDatabaseByTypeCreator(newSearch, dbType, dbCreatorID, onlyLatestVersion)
指定されたデバイス上に存在するデータベース一覧を検索するために使用します。

引数 newSearch as Integer 0 = continue searching for databases(続けて検索) 1 = start a new search(新規検索) dbType as Integer Integer database type.(データベースタイプ) 0 = wildcard search.(ワイルドカード検索) dbCreatorID as Integer Integer Creator ID.(クリエターID) 0 = wildcard search.(ワイルドカード検索) onlyLatestVersion as Integer 0 = 全てのバージョンを返します。 1 = 同一クリエータID内の最新バージョンのみ返します。

戻り値 dbID as Integer dbID (ローカルID) of the database.

Dim dbID as Integer Dim newSearch as Integer Dim dbType as Integer Dim dbCreatorID as Integer Dim onlyLatestVersion as Integer Dim dbCardNo as Integer Dim dbName as String onlyLatestVersion = 0 dbType = NSL.String4ToInt("libr") dbCreatorID = 0 newSearch = 1 dbID = 1 Do While dbID <> 0 dbID = NSL.GetNextDatabaseByTypeCreator(newSearch, _ dbType, dbCreatorID, onlyLatestVersion) If dbID <> 0 Then dbCardNo = NSL.DatabaseCardNo() dbName = NSL.DatabaseInfo(dbCardNo, dbID) End If newSearch = 0 Loop

参照: DatabaseCardNo(), DatabaseInfo()

DatabaseCardNo

dbCardNo = NSBSystemLib.DatabaseCardNo()
GetNextDatabaseByTypeCreator()関数で直前に呼び出されたデータベースのカード番号を返します。

戻り値 dbCardNo as Integer

GetNextDatabaseByTypeCreator()関数の例を参照して下さい。

NumDatabases

nbr = NSBSystemLib.NumDatabases(cardNo)
指定されたカード番号上にあるデータベースの数を検索します。

引数 cardNo as Integer

戻り値 nbr as Integer

Dim nbr as Integer Dim cardNo as Integer cardNo = 0 nbr = NSL.NumDatabases(cardNo)

このルーチンは、カード上のデータベースのディレクトリ情報を得るのに有用です。 GetDatabase()は、インデックス番号0〜(NumDatabases-1)までのデータベースIDを返します。 参照: GetDatabase()

NumCards

nbr = NSBSystemLib.NumCards()
この関数は、システム上のメモリーカードスロット数を返します。 全てのスロットが存在しなくてもかまいません。

戻り値 nbr as Integer

Dim nbr as Integer nbr = NSL.NumCards()

GetDatabase

dbID = NSBSystemLib.GetDatabase(cardNo, index)
指定されたカード番号とインデックスのデータベースIDを検索します。

引数 cardNo as Integer index as Integer

戻り値 dbID as Integer 0 = 無効

Dim nbr as Integer Dim dbID as Integer Dim cardNo as Integer Dim index as Integer Dim dbName as String cardNo = 0 nbr = NSL.NumDatabases(cardNo) index = 0 Do While index < nbr dbID = NSL.GetDatabase(cardNo, index) If dbID <> 0 Then dbName = NSL.DatabaseInfo(cardNo, dbID) End If index = index + 1 Loop

参照: NumDatabases()

SetDatabaseName

status = NSBSystemLib.SetDatabaseName(cardNo, dbID, dbName)
指定されたデータベースの名前を変更します。

引数 cardNo as Integer dbID as Integer dbName as String

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbName as String cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbName = "oldNSBAlarmProxy5" status = NSL.SetDatabaseName(cardNo, dbID, dbName)

SetDatabaseAttributes

status = NSBSystemLib.SetDatabaseAttributes(cardNo, dbID, dbAttributes)
指定されたデータベースのアトリビュート(属性)を変更します。

引数 cardNo as Integer dbID as Integer dbAttributes as Integer 属性は、ビットデータで表します。以下に、利用可能なビットマスク値を示します: Bit 0 (0x0001) - dmHdrAttrResDB Bit 1 (0x0002) - dmHdrAttrReadOnly Bit 2 (0x0004) - dmHdrAttrAppInfoDirty Bit 3 (0x0008) - dmHdrAttrBackup Bit 4 (0x0010) - dmhdrAttrOKToInstallNewer Bit 5 (0x0020) - dmHdrAttrResetAfterInstall Bit 6 (0x0040) - dmHdrAttrCopyPrevention Bit 7 (0x0080) - dmHdrAttrStream Bit 8 (0x0100) - dmHdrAttrHidden Bit 9 (0x0200) - hmHdrAttrLaunchableData Bit 15 (0x8000) - dmHdrAttrOpen

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbAttributes as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbAttributes = 2 status = NSL.SetDatabaseAttributes(cardNo, dbID, dbAttributes)

SetDatabaseVersion

status = NSBSystemLib.SetDatabaseVersion(cardNo, dbID, dbVersion)
指定されたデータベースのバージョン番号を変更します。

引数 cardNo as Integer dbID as Integer dbVersion as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbVersion as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbVersion = 6 status = NSL.SetDatabaseVersion(cardNo, dbID, dbVersion)

SetDatabaseCreationDate

status = NSBSystemLib.SetDatabaseCreationDate(cardNo, dbID, dbCreationDate)
指定されたデータベースの作成日付を変更します。

引数 cardNo as Integer dbID as Integer dbCreationDate as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbCreationDate as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbCreationDate = NSL.SystemTime("", "", 0, 0) status = NSL.SetDatabaseCreationDate(cardNo, dbID, _ dbCreationDate)

SetDatabaseModificationDate

status = NSBSystemLib.SetDatabaseModificationDate(cardNo, dbID, dbModificationDate)
指定されたデータベースの更新日付を変更します。

引数 cardNo as Integer dbID as Integer dbModificationDate as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbModificationDate as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbModificationDate = NSL.SystemTime("", "", 0, 0) status = NSL.SetDatabaseModificationDate(cardNo, dbID, _ dbModificationDate)

SetDatabaseBackupDate

status = NSBSystemLib.SetDatabaseBackupDate(cardNo, dbID, dbBackupDate)
指定されたデータベースのバックアップ日付を変更します。

引数 cardNo as Integer dbID as Integer dbBackupDate as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbBackupDate as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbBackupDate = NSL.SystemTime("", "", 0, 0) status = NSL.SetDatabaseModificationDate(cardNo, dbID, _ dbBackupDate)

SetDatabaseModificationNumber

status = NSBSystemLib.SetDatabaseModificationNumber(cardNo, dbID, dbModificationNumber)
指定されたデータベースの更新レコード数を変更する時に使用します。

引数 cardNo as Integer dbID as Integer dbModificationNumber as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbModificationNumber as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbModificationNumber = 0 status = NSL.SetDatabaseModificationNumber(cardNo, dbID, _ dbModificationNumber)

SetDatabaseAppInfoID

status = NSBSystemLib.SetDatabaseAppInfoID(cardNo, dbID, dbAppInfoID)
指定されたデータベースのアプリケーション情報ローカルIDを変更します。

引数 cardNo as Integer dbID as Integer dbAppInfoID as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbAppInfoID as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbAppInfoID = 0 status = NSL.SetDatabaseAppInfoID(cardNo, dbID, _ dbAppInfoID)

SetDatabaseSortInfoID

status = NSBSystemLib.SetDatabaseSortInfoID(cardNo, dbID, dbSortInfoID)
指定されたデータベースのソートテーブル・ローカルIDを変更します。

引数 cardNo as Integer dbID as Integer dbSortInfoID as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbSortInfoID as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbSortInfoID = 0 status = NSL.SetDatabaseSortInfoID(cardNo, dbID, _ dbSortInfoID)

SetDatabaseType

status = NSBSystemLib.SetDatabaseType(cardNo, dbID, dbType)
指定されたデータベースのタイプを変更します。

引数 cardNo as Integer dbID as Integer dbType as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbType as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbType = String4ToInt("appl") status = NSL.SetDatabaseType(cardNo, dbID, dbType);

SetDatabaseCreatorID

status = NSBSystemLib.SetDatabaseCreatorID(cardNo, dbID, dbCreatorID)
指定されたデータベースのクリエータIDを変更します。

引数 cardNo as Integer dbID as Integer dbCreatorID as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbCreatorID as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbCreatorID = String4ToInt("TEST") status = NSL.SetDatabaseCreatorID(cardNo, dbID, dbCreatorID);


イベント関数

イベント関数を使用することにより、NS Basic標準のEvent CodeセクションおよびSysEventAvailable()関数が提供するイベント感知および処理よりも、さらに多くの制御が可能になります。

GetEvent

eventType = NSBSystemLib.GetEvent(timeoutTicks, consumePenEvents, returnVirtualEvents)
イベントがある場合(発生している場合)、そのシステムイベントタイプを返します。引数timeoutTicksを指定する事で、「ノン・ブロッキング」の遅延を実現できます。 timeoutTicksで指定する時間が経過する前にイベントが発生したら、イベントタイプと共に、ただちにこの関数は返されます。これは、アニメーションやゲームなどに有用な方法です。

引数 timeoutTicks as Integer この関数が返されるまでにシステム時計が何回刻む(tick数)かを指定します consumePenEvents as Integer 0 = ペン・イベントを消費しません 1 = ペン・イベントを消費します この関数は、PalmOSのEvtGetEvent()関数を呼び出します。 EvtGetEvent()関数は、イベントキューからイベントを取り去ります。 他の処理にこれらの取り除いたイベントを利用可能な状態にする為に、この共有ライブラリ関数は、 検知するイベントを再度キューに戻します。 これは描画などのペン・イベントに使う場合、望ましくないかもしれません。この場合、 consumePenEventsを1にセットすると、ペン・イベントは再度キューに戻らず、 ペン・データは利用可能なままになります。 returnVirtualEvents as Integer 0 = 仮想キー(主要)イベントを返しません 1 = 仮想キーイベントを返します。 仮想キーイベントは、PalmOSシステムか、サードパーティのシステムレベルで生じるイベントです。 これらのイベントは、低バッテリー警告や、バックライトの状態変更などのイベントを含みます。 多くの場合、仮想キーイベントは、返されます。 もし、これらが返される時、このライブラリのSysHandleEvent()関数をコールして、システムに 処理させることが賢明でしょう。

戻り値 eventType as Integer -1 = 指定するタイムアウトの時間内で何もイベントがない場合 0 = nilEvent(空イベント) 1 = penDownEven(ペンダウン・イベント)t 次の変数に、ペンの座標を参照できます: GlobalX(), and GlobalY() 2 = penUpEvent(ペンアップ・イベント) 次の変数に、ペンの座標を参照できます: GlobalX(), and GlobalY() 次の変数に、ペンのストローク座標を参照できます: GlobalStartX(), GlobalStartY(), GlobalEndX(), and GlobalEndY() 3 = penMoveEvent(ペン移動・イベント) 次の変数に、ペンの座標を参照できます: GlobalX(), and GlobalY() 4 = keyDownEvent(キーをダウンイベント) キー入力データを取得できます: KeyEventChr(), KeyEventKeyCode(), and KeyEventModifiers() 5 = winEnterEvent(ウィンドウ:Enter) 6 = winExitEvent(ウィンドウ:Exit) 7 = ctlEnterEvent(コントロール:Enter) 8 = ctlExitEvent(コントロール:Exit) 9 = ctlSelectEvent(コントロール:Select、ボタン関係が選択された時) 10 = ctlRepeatEvent(コントロール:Repeat) 11 = lstEnterEvent(リスト:Enter) 12 = lstSelectEvent(リスト:Select) 13 = lstExitEvent(リスト:Exit) 14 = popSelectEvent(ポップアップ:Select) 15 = fldEnterEvent(フィールド:Enter) 16 = fldHeightChangedEvent(フィールド:Height変更) 17 = fldChangedEvent(フィールド:変更) 18 = tblEnterEvent(テーブル:Enter) 19 = tblSelectEvent(テーブル:Select) 20 = daySelectEvent(ディ:Select) 21 = menuEvent(メニューイベント) 22 = appStopEvent(アプリケーション:Stop) 21 = frmOpenEvent(フォーム:Open) 22 = frmGotoEvent(フォーム:Goto) 23 = frmUpdateEvent(フォーム:Update) 24 = frmSaveEvent(フォーム:Save) 25 = frmCloseEvent(フォーム:Close) 26 = frmTitleEnterEvent(フォーム:TitleEnter) 27 = frmTitleSelectEvent(フォーム:TitleSelect) 28 = tblExitEvent(テーブル:Exit) 29 = sclEnterEvent(スクロール:Enter) 30 = sclExitEvent(スクロール:Exit) 31 = sclRepeatEvent(スクロール:Repeat) 35 = tsmConfirmEvent(日本語変換関連:確定) 36 = tsmFepButtonEvent(日本語変換関連:キー) 37 = tsmFepModeEvent(日本語変換関連:モード) 2048 = menuCmdBarOpenEvent(メニュー:コマンドバーOpen) 2049 = menuOpenEvent(メニュー:Open) 2050 = menuCloseEvent(メニュー:Close) 2051 = frmGadgetEnterEvent(フォーム:Gadget) 2052 = frmGadgetMiscEvent(フォーム:Gadget) 4096 = firstINetLibEvent(INetLib関連) 4352 = firstWebLibEvent(WebLib関連) 24576 = firstUserEvent(Userイベント)

Dim eventType as Integer Dim timeoutTicks as Integer NSL.FlushEvents() eventType = 0 Do While eventType <= 0 'do something eventType = NSL.GetEvent(timeoutTicks, 0, 0) Loop

この関数が、ボタンイベントの一部コードとして使用される場合、この関数を呼ぶ前に、ペンディングされているキーやペンのイベントをクリアしたいと思うでしょう。確かに、ボタンを押すことに起因する「ペン・アップ」イベントは、ただちにこの関数に戻り値を発生させます。これについては、FlushEvents()関数の例を参考にして下さい。

SysHandleEvent

NSBSystemLib.SysHandleEvent()
直近のGetEvent()関数によって発生したイベントを消費します。 これは、EvtGetEvent()をコールし、次いでSysHandleEvent()を呼ぶことで実現します。

NSL.SysHandleEvent()

FlushEvents

NSBSystemLib.FlushEvents()
保留中のキーやボタンイベントをクリアします。 これは、PalmOSのEvtFlushKeyQueue()関数と、EvtFlushPenQueue()関数を呼ぶことで実現しています。 そして、その後、EvtGetEvent()およびSysHandleEventを()をコールすることで、残っている全てのイベントを空にします。

NSL.FlushEvents()

KeyEventChr

keyChr = NSBSystemLib.KeyEventChr()
キーイベントの「Chr」データメンバーを返します。GetEvent()関数は、この関数のために、イベントタイプ4(keyDownEvent)を返しているでしょう。

戻り値 keyChr as Integer

Dim keyChr as Integer keyChr = NSL.KeyEventChr()

KeyEventKeyCode

keyCode = NSBSystemLib.KeyEventKeyCode()
キーイベントの「KeyCode」データメンバーを返します。 GetEvent()関数は、この関数のために、イベントタイプ4(keyDownEvent)を返しているでしょう。

戻り値 keyCode as Integer

Dim keyCode as Integer keyCode = NSL.KeyEventKeyCode()

KeyEventModifiers

modifiers = NSBSystemLib.KeyEventModifiers()
キーイベントの「modifiers」データメンバーを返します。 GetEvent()関数は、この関数のために、イベントタイプ4(keyDownEvent)を返しているでしょう。

戻り値 modifiers as Integer

Dim modifiers as Integer modifiers = NSL.KeyEventModifiers()


フィールド・フォーム関数

フィールド、フォーム関数は、フィールドとフォームオブジェクトを操作する便利な機能を提供します。 これらの機能は、標準のNS Basic上からでは実現できないような操作を可能にします。 これらは、SysTrapSub()やSysTrapFunc()命令を使って実現できますが、より単純なインターフェースを提供します。

ControlHitControl

NSBSystemLib.ControlHitControl objID
コントロールをタップをシミュレートします。これの関数は、イベントキューにctlSelectEventを追加します。

引数: objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

Dim objID as Integer objID = 1008 NSL.ControlHitControl objID

FieldCopy

NSBSystemLib.FieldCopy objID
現在選択されているテキストをクリップボードにコピーします。

引数: objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

Dim objID as Integer objID = 1008 NSL.FieldCopy objID

FieldCut

NSBSystemLib.FieldCut objID
現在選択されているテキストをクリップボードにコピーし、その選択範囲を削除し、次いで、そのフィールドを再描画します。 要するに、カット、です。

引数: objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

Dim objID as Integer objID = 1008 NSL.FieldCut objID

FieldInsert

NSBSystemLib.FieldInsert objID, insString
現在、選択されている部分を、insStringに指定した文字列で置き換えて再描画します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 insString as String

Dim objID as Integer Dim insString as String objID = 1008 insString = "Insert This!" NSL.FieldInsert objID, insString

FieldPaste

NSBSystemLib.FieldPaste objID
現在、選択されている範囲を、クリップボード内のテキストで置き換えます。

引数: objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

Dim objID as Integer objID = 1008 NSL.FieldPaste objID

FieldUndo

NSBSystemLib.FieldUndo objID
フィールドオブジェクトに加えられた直前の変更をアンドゥします。 これには、ペーストや、カットも含まれます。

引数: objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

Dim objID as Integer objID = 1008 NSL.FieldUndo objID

FieldGetInsPtPosition

pos = NSBSystemLib.FieldGetInsPtPosition(objID)
文字列の挿入ポイント位置を返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 pos as Integer

Dim pos as Integer Dim objID as Integer objID = 1008 pos = NSL.FieldGetInsPtPosition(objID)

この関数が返す挿入ポイントは、文字列のバイト・オフセットの左側にあります。 つまり、例えば、戻り値が 0 の時、それは、先頭の文字の左側にあることになります。 複数行を持つフィールドの場合、行送りには、1つの文字を含んでいますので、次の行の始めは、行送りキャラクターの後になります。FieldSetInsertionPoint()と FieldSetInsPtPosition()を参照して下さい。

FieldGetSelection

startPos = NSBSystemLib.FieldGetSelection(objID)
フィールド内の選択されたテキストの開始位置と終了位置を返します。ただ、この関数は開始位置だけを返します。終了位置を取得するにはGlobalEndPos()関数を使用します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 startPos as Integer

Dim startPos as Integer Dim objID as Integer Dim endPos as Integer objID = 1008 startPos = NSL.FieldGetSelection(objID) endPos = NSL.GlobalEndPos()

FieldAnyDirty

dirty = NSBSystemLib.FieldAnyDirty()
フォーム上にある1つ又は、それ以上のフィールド内の値が、最後にチェックした時から更新されていれば、1 を返します。

戻り値 dirty as Integer

Dim dirty as Integer dirty = NSL.FieldAnyDirty()

FieldDirty

dirty = NSBSystemLib.FieldDirty(objID)
フォーム上の指定したフィールドの値が変更されていれば、1を返します。

引数 objID as Integer 0 =現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 dirty as Integer

Dim dirty as Integer Dim objID as Integer objID = 1008 dirty = NSL.FieldDirty(objID)

FieldSetDirty

NSBSystemLib.FieldSetDirty objID, dirty
指定したフィールドに、印をセットします。あるフィールドの印が、最後にセットした時から変わっていたら、そのフィールドは、変更があったと見なして良いでしょう。(※訳者注:原文では印は、Dirty:汚れ、になっています)

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 dirty as Integer 0 = 印なし 1 = 印をする

Dim objID as Integer Dim dirty as Integer objID = 1008 dirty = 1 NSL.FieldSetDirty objID, dirty

FieldSetAllDirty

NSBSystemLib.FieldSetAllDirty dirty
アクティブフォーム上の全フィールドに、印をセットします。

引数: dirty as Integer 0 = 印なし 1 = 印をする

Dim dirty as Integer NSL.FieldSetAllDirty dirty

FieldSetSelection

NSBSystemLib.FieldSetSelection objID, startPos, endPos
フィールド内に、startPos、endPosで指定された選択範囲をセットし、その範囲をハイライト表示します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 startPos as Integer endPos as Integer

Dim objID as Integer Dim startPos as Integer Dim endPos as Integer objID = 1008 NSL.FieldSetSelection objID, startPos, endPos

FieldSetInsertionPoint

NSBSystemLib.FieldSetInsertionPoint objID, pos
posで指定された位置に、挿入ポイントをセットします。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 pos as Integer

Dim objID as Integer Dim pos as Integer objID = 1008 NSL.FieldSetInsertionPoint objID, pos

このルーチンは、挿入位置を明示しない点がFieldldSetInsPtPositionと異なります。また、これは、フォーカスも移しません。FieldSetInsPtPosition() や FieldGetInsPtPosition()を参照して下さい。

FieldSetInsPtPosition

NSBSystemLib.FieldSetInsPtPosition objID, pos
posで指定された位置に、挿入ポイントをセットします。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 pos as Integer

Dim objID as Integer Dim pos as Integer objID = 1008 NSL.FieldSetInsPtPosition objID, pos

挿入ポイントが、可視位置を超えている場合、その場所までスクロールして、可視状態にします。FieldSetInsertionPoint() とFieldGetInsPtPosition()を参考にして下さい。

FieldGetAttributes

attributes = NSBSystemLib.FieldGetAttributes(objID)
ビットイメージデータで、フィールドの属性を返します。BitsNbytes共有ライブラリは、ビット値の操作する機能を含んでいます。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 attributes as Integer ビットイメージデータは、次の意味を含みます: bit 0 - reserved(反転) bit 1 - numeric(数値) bit 2 - hasScrollBar(スクロールバーあり) bit 3 - autoShift(AutoShift True) bits 4 and 5 - justification(位置調整) 00 - leftAlign(左寄せ) 01 - centerAlign (中央寄せ:サポートされないかもしれない) 10 - rightAlign(右寄せ) bits 6 and 7 - underlined(下線) 00 - noUnderline(下線なし) 01 - grayUnderline(灰色アンダーライン) 10 - solidUnderline(実線アンダーライン) bit 8 - dirty(印) bit 9 - insPtVisible(挿入ポイント可視) bit 10 - dynamicSize(サイズ自動調整) bit 11 - hasFocus(フォーカス) bit 12 - singleLine(単一行) bit 13 - editable(編集可) bit 14 - visible(可視) bit 15 - usable(使用可)

Dim attributes as Integer Dim objID as Integer objID = 1008 attributes = NSL.FieldGetAttributes(objID)

FieldSetAttributes

NSBSystemLib.FieldSetAttributes objID, attributes
指定したフィールドの属性をセットします。属性は、整数型のビットイメージデータで指定します。 BitsNbytes共有ライブラリは、ビット値の操作する機能を含んでいます。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 attributes as Integer ビットイメージデータは、次の意味を含みます: bit 0 - reserved(反転) bit 1 - numeric(数値) bit 2 - hasScrollBar(スクロールバーあり) bit 3 - autoShift(AutoShift True) bits 4 and 5 - justification(位置調整) 00 - leftAlign(左寄せ) 01 - centerAlign (中央寄せ:サポートされないかもしれない) 10 - rightAlign(右寄せ) bits 6 and 7 - underlined(下線) 00 - noUnderline(下線なし) 01 - grayUnderline(灰色アンダーライン) 10 - solidUnderline(実線アンダーライン) bit 8 - dirty(印) bit 9 - insPtVisible(挿入ポイント可視) bit 10 - dynamicSize(サイズ自動調整) bit 11 - hasFocus(フォーカス) bit 12 - singleLine(単一行) bit 13 - editable(編集可) bit 14 - visible(可視) bit 15 - usable(使用可)

Dim objID as Integer Dim attributes as Integer objID = 1008 NSL.FieldSetAttributes objID, attributes

FieldGetFont

fontId = NSBSystemLib.FieldGetFont(objID)
フィールドのFontIDを返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 fontId as Integer

Dim fontId as Integer Dim objID as Integer objID = 1008 fontId = NSL.FieldGetFont(objID)

FieldSetFont

NSBSystemLib.FieldSetFont objID, fontId
フィールドのFontIDを指定します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 fontId as Integer

Dim objID as Integer Dim fontId as Integer objID = 1008 fontId = 2 'large font NSL.FieldSetFont objID, fontId

FieldGetScrollPosition

position = NSBSystemLib.FieldGetScrollPosition(objID)
フィールドのスクロール位置を返します。これは、可視行の先頭文字からのオフセット値になります。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 position as Integer

Dim position as Integer Dim objID as Integer objID = 1008 position = NSL.FieldGetScrollPosition(objID)

FieldSetScrollPosition

NSBSystemLib.FieldSetScrollPosition objID, position
フィールドのスクロール位置を設定します。これは、可視行の先頭文字からのオフセット値をセットします。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 position as Integer

Dim objID as Integer Dim position as Integer objID = 1008 position = 20 NSL.FieldSetScrollPosition objID, position

FieldGetScrollValues

totalLines = NSBSystemLib.FieldGetScrollValues(objID)
フィールドのスクロール値を返します。これらは、スクロールバーを更新するために必要な値です。この版数はスクロール位置(オフセット行番号)、テキスト高さ(画面にフィールドの文字列を表示するのに必要な行数)、及び、フィールド自体の高さを返します。この関数の戻り値は、テキスト高さ(行数の合計)のみ、返されます。 スクロール位置は、GlobalStartPos()関数を、フィールド高さは、GlobalHeight()関数を使ってください。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 totalLines as Integer

Dim totalLines as Integer Dim objID as Integer Dim position as Integer Dim height as Integer objID = 1008 totalLines = NSL.FieldGetScrollValues(objID) position = GlobalStartPos() height = GlobalHeight()

FieldGetVisibleLines

lines = NSBSystemLib.FieldGetVisibleLines(objID)
フィールドの可視部分に表示できる行数を返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 lines as Integer

Dim lines as Integer Dim objID as Integer objID = 1008 lines = NSL.FieldGetVisibleLines(objID)

FieldGetNumberOfBlankLines

lines = NSBSystemLib.FieldGetNumberOfBlankLines(objID)
フィールド下部に表示される下線の本数を返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 lines as Integer

Dim lines as Integer Dim objID as Integer objID = 1008 lines = NSL.FieldGetNumberOfBlankLines(objID)

FieldScrollable

yesNo = NSBSystemLib.FieldScrollable(objID, direction)
フィールドが指定された方向にスクロールできる場合は、1を、そうでなければ 0 を返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 direction as Integer 0 = up(上) 1 = down(下)

戻り値 yesNo as Integer

Dim yesNo as Integer Dim objID as Integer Dim direction as Integer objID = 1008 yesNo = NSL.FieldScrollable(objID, direction)

FieldScrollField

NSBSystemLib.FieldScrollField objID, nbrLines, direction
nbrLinesで指定された行数だけ、フィールドを上又は下へスクロールさせます。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 nbrLines as Integer direction as Integer 0 = up(上) 1 = down(下)

Dim objID as Integer Dim nbrLines as Integer Dim direction as Integer objID = 1008 NSL.FieldScrollField objID, nbrLines, direction

FieldSetBounds

NSBSystemLib.FieldSetBounds objID, topLeftX, topLeftY, width, height
フィールドの位置とサイズを変更します

Parameters objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 topLeftX as Integer topLeftY as Integer width as Integer height as Integer

Dim objID as Integer Dim topLeftX as Integer Dim topLeftY as Integer Dim width as Integer Dim height as Integer objID = 1008 NSL.FieldSetBounds objID, topLeftX, topLeftY, width, height

ワード・ラップ情報を含むメモリブロックを変更する必要があり、十分なスペースが無い場合は、Fatal Errorを引き起こす可能性があります。

FormGetNumberOfObjects

nbr = NSBSystemLib.FormGetNumberOfObjects()
アクティブフォーム上のオブジェクト数を返します。

戻り値 nbr as Integer -1 アクティブなフォームがありません

Dim nbr as Integer nbr = NSL.FormGetNumberOfObjects()

FormGetObjectBounds

x = NSBSystemLib.FormGetObjectBounds(objID)
指定したフォーム上のオブジェクトの x, y, width,および heightを返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 x as Integer -1 フォーカスが無効なオブジェクトか、フォーカスを持っていないオブジェクトです

Dim x as Integer Dim objID as Integer Dim y as Integer Dim width as Integer Dim height as Integer objID = 1008 x = NSL.FormGetObjectBounds(objID) y = NSL.GlobalY() width = NSL.GlobalWidth() height = NSL.GlobalHeight()

この関数では、x位置だけが返されます。グローバル変数の、GlobalY(), GlobalWidth(),及び GlobalHeight()を使って、その他の値を取得する必要があります。

FormGetObjectPosition

x = NSBSystemLib.FormGetObjectPosition(objID)
フォームオブジェクトのX及びY位置を返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

Returns x as Integer -1 無効なオブジェクトか、フォーカスを持ったオブジェクトがありません

Dim x as Integer Dim objID as Integer Dim y as Integer objID = 1008 x = NSL.FormGetObjectPosition(objID) y = NSL.GlobalY

この関数では、X位置しか返しません。グローバル変数のGlobalY()を使ってY位置を取得する必要があります。

FormGetObjectType

type = NSBSystemLib.FormGetObjectType(objID)
指定されたオブジェクトの種類を返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 type as Integer -1 無効なオブジェクトか、フォーカスを持ったオブジェクトがありません 0 = frmFieldObj(フィールド) 1 = frmControlObj(コントロール) 2 = frmListObj(リスト) 3 = frmTableObj(テーブル) 4 = frmBitmapObj(ビットマップ) 5 = frmLineObj(ライン) 6 = frmFrameObj(フレーム) 7 = frmRectangleObj(レクタングル) 8 = frmLabelObj(ラベル) 9 = frmTitleObj(タイトル) 10 = frmPopupObj(ポップアップ) 11 = frmGraffitiStateObj(Graffiti状態) 12 = frmGadgetObj(ガジェット) 13 = frmScrollbarObj(スクロールバー)

Dim type as Integer Dim objID as Integer objID = 1008 type = NSL.FormGetObjectType(objID) この関数は、全てのコントロールの種類に関する情報を提供しません。全てのオブジェクトの週類を 得るには、FormGetAllObjectTypes()関数を使います。

FormSetObjectPosition

NSBSystemLib.FormSetObjectPosition objID, x, y
x、yで指定された位置に、オブジェクトを移動します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 x as Integer y as Integer

Dim objID as Integer Dim x as Integer Dim y as Integer objID = 1008 x = 120 y = 40 NSL.FormSetObjectPosition objID, x, y

FormSetObjectBounds

NSBSystemLib.FormSetObjectBounds objID, topLeftX, topLeftY, width, height
オブジェクトの、境界と位置を設定します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 topLeftX as Integer topLeftY as Integer width as Integer height as Integer

Dim objID as Integer Dim topLeftX as Integer Dim topLeftY as Integer Dim width as Integer Dim height as Integer objID = 1008 NSL.FormSetObjectBounds objID, topLeftX, topLeftY, width, height

FormGetTitle

title = NSBSystemLib.FormGetTitle()
フォームの現在のタイトルを返します。

戻り値 title as String

Dim title as String title = NSL.FormGetTitle()

FormReplaceTitle

NSBSystemLib.FormReplaceTitle title, forceLength
現在のフォームのタイトルをtitleで置き換えます。置き換えるタイトルの文字列長は、元のタイトルの長さを超えて指定することが出来ません。 forceLengthパラメーターが 0の場合、置き換えるタイトルは、現在のタイトル長さに自動的に切り詰められます。 もし、タイトル文字列の長さが変わってしまう場合、FormGetTitle()関数を使って変更前のタイトルを取得し、その長さを NS BasicのLen()関数で取得して、それをforceLengthの引数として使うべきです。

引数 title as String forceLength as Integer

Dim title as String Dim forceLength as Integer NSL.FormReplaceTitle title, forceLength

ListGetTopItem

topItem = NSBSystemLib.ListGetTopItem(objID)
指定されたリストボックスの先頭の番号を返します。

引数 objID as Integer

戻り値 topItem as Integer

Dim topItem as Integer Dim objID as Integer topItem = NSL.ListGetTopItem(objID)

ListSetTopItem

NSBSystemLib.ListSetTopItem objID, topItem
指定されたリストボックスの先頭の番号を指定します。それが、末尾になる場合は、先頭にはなりません。

引数 objID as Integer topItem as Integer

Dim objID as Integer Dim topItem as Integer NSL.ListSetTopItem objID, topItem

ListGetVisibleItems

visibleItems = NSBSystemLib.ListGetVisibleItems(objID)
指定されたリストボックスの可視部分の項目数を返します。

引数 objID as Integer

戻り値 visibleItems as Integer

Dim visibleItems as Integer Dim objID as Integer visibleItems = NSL.ListGetVisibleItems(objID)

ListScrollList

result = NSBSystemLib.ListScrollList(objID, direction, nbrItems)
指定された方向と項目数だけ、リストボックスをスクロールさせます。

引数 objID as Integer direction as Integer 0 = up(上) 1 = down(下) nbrItems as Integer

戻り値 result as Integer 0 = スクロールできないません 1 = スクロール成功

Dim result as Integer Dim objID as Integer Dim direction as Integer Dim nbrItems as Integer result = NSL.ListScrollList(objID, direction, nbrItems)


フォント関連

フォント関連の関数は、デフォルトのフォントを決定したり、変更する機能を提供します。また、PalmOS上で、可変幅のフォント機能を提供します。

FontGetFont

fontId = NSBSystemLib.FontGetFont()
現在のカレントのフォントIDを返します。

戻り値 fontId as Integer

Dim fontId as Integer fontId = NSL.FontGetFont()

FontSetFont

oldFontId = NSBSystemLib.FontSetFont(fontId)
カレントフォントを設定します。

引数 fontId as Integer

戻り値 oldFontId as Integer

Dim oldFontId as Integer Dim fontId as Integer oldFontId = NSL.FontSetFont(fontId)

FontSelect

fontId = NSBSystemLib.FontSelect()
3種類のシステムフォントのうち1つを選択できるようなダイアログを表示し、ユーザーが選択したFontIDを返します。

戻り値 fontId as Integer

Dim fontId as Integer fontId = NSL.FontSelect()

FontCharWidth

width = NSBSystemLib.FontCharWidth(charString)
指定された文字の幅を返します。もし、指定された文字がカレントフォント内に見当らない場合、文字化けした記号が返されます。

補足: 引数として文字列を渡しても、先頭の1文字だけが評価の対象になります。

引数 charString as String

戻り値 width as Integer

Dim width as Integer Dim charString as String width = NSL.FontCharWidth(charString)

FontCharsWidth

width = NSBSystemLib.FontCharsWidth(charString, optionalLen)
指定した文字列の幅を返します。カレントフォント内に指定した文字が見当らない場合は、文字化けした記号が返されます。

引数 charString as String optionalLen as Integer 0 = 実際の文字列の長さを使います

戻り値 width as Integer

Dim width as Integer Dim charString as String Dim optionalLen as Integer width = NSL.FontCharsWidth(charString, optionalLen)

FontWidthToOffset

offset = NSBSystemLib.FontWidthToOffset(charString, optionalLen, width)
ピクセル位置を与えれば、その位置に表示された文字の位置を返します。もし、ピクセル位置が、文字の左端であれば、GlobalStartPos() は1を返します。 そうでない場合、0を返します。 GlobalWidth()は、返されたオフセットまでのテキストのピクセル幅を返します。

引数 charString as String optionalLen as Integer 0 = 実際の文字列の長さを使います width as Integer

戻り値 offset as Integer

Dim offset as Integer Dim charString as String Dim optionalLen as Integer Dim width as Integer offset = NSL.FontWidthToOffset(charString, optionalLen, width)

FontCharsInWidth

length = NSBSystemLib.FontCharsInWidth(charString, optionalLen, width)
与えられた幅に適合する文字列長をバイト数で返します。グローバル変数のGlobalWidth()には、ピクセル数が返されます。

引数 charString as String optionalLen as Integer 0 = 実際の文字列の長さを使います width as Integer

戻り値 length as Integer

Dim length as Integer Dim charString as String Dim optionalLen as Integer Dim width as Integer length = NSL.FontCharsInWidth(charString, optionalLen, width)

文字列の終端の空白は無視され削除されます。キャリッジリターンの後の文字は無視され、文字列は切り捨てられて扱われます。

FontWordWrap

length = NSBSystemLib.FontWordWrap(charString, width)
与えら得た文字列が、指定された幅の中にどれだけのテキストが表示できるかバイト数を返します。

引数 charString as String width as Integer 0 = 実際の文字列の長さを使います

戻り値 length as Integer

Dim length as Integer Dim charString as String Dim width as Integer length = NSL.FontWordWrap(charString, width)


HotSync データ

HotSyncデータ関数は、HotSyncアプリケーションの情報を提供します。

SyncUserName

userName = NSBSystemLib.SyncUserName()
HotSyncユーザー名前を返します。

戻り値 userName as String

Dim userName as String userName = NSL.SyncUserName()

SuccessfulSync

syncDate = NSBSystemLib.SuccessfulSync()
最後にHotSyncが成功した日付をシステム・フォーマットで返します。戻り値は、1904年1月1日からの経過秒として返されます。 StringDateTime()、StringDate()、又は、StringTime()を使ってシステム・フォーマットを文字列へ変換して使ってください。

戻り値 syncDate as Integer

Dim syncDate as Integer syncDate = NSL.SuccessfulSync()

LastSync

syncDate = NSBSystemLib.LastSync()
最後にHotSyncした日付をシステム・フォーマットで返します。戻り値は、1904年1月1日からの経過秒として返されます。 StringDateTime()、StringDate()、又は、StringTime()を使ってシステム・フォーマットを文字列へ変換して使ってください。

戻り値 syncDate as Integer

Dim syncDate as Integer syncDate = NSL.LastSync()


ローカライズ:地域情報関数

ローカライズ機能は日付や通貨などの表示書式を、システムで指定されるような標準/米国フォーマットからユーザの要望するフォーマットに変換するために使用されます。 例えば、ヨーロッパ各国では、1000単位の区切りに「.」を使い、10進数区切りには「,」を使います。また、日付には、dd/mm/yy形式を使うのが一般的です。 これらの関数は、ユーザーが希望するセットに対して、必要な変換を行います。

LocalizeNumber

localNbrStr = NSBSystemLib.LocalizeNumber(stdNbrStr)
与えられた文字列の数値形式を、標準/米国フォーマットから、システム設定で設定した地域情報にしたがったフォーマットへ変更します。

引数 stdNbrStr as String

戻り値 localNbrStr as String

Dim localNbrStr as String Dim stdNbrStr as String stdNbrStr = "4,123.56" localNbrStr = NSL.LocalizeNumber(stdNbrStr)

DelocalizeNumber

stdNbrStr = NSBSystemLib.DelocalizeNumber(localNbrStr)
与えられた文字列の数値形式を、システム設定で設定した地域情報にしたがったフォーマットから、標準/米国フォーマットへ変更します。

引数 localNbrStr as String

戻り値 stdNbrStr as String

Dim stdNbrStr as String Dim localNbrStr as String locNbrStr = "4.123,56" stdNbrStr = NSL.DelocalizeNumber(localNbrStr)

LocalizeDate

localDateStr = NSBSystemLib.LocalizeDate(stdDateStr, ToDateFormat, longDateFormat)
与えられた文字列の日付形式を、標準/米国フォーマットから、システム設定で設定した地域情報にしたがったフォーマットへ変更します。

引数 stdDateStr as String 日付文字列に、時刻情報を含んでも、時刻部分は無視されます。 ToDateFormat as Integer 0 = stdDateStrの書式を"MM/DD/YY[YY]"で指定します 1 = stdDateStrの書式を"[YY]YY/MM/DD"で指定します longDateFormat as Integer 0 = 短い日付書式を指定します 1 = 長い日付書式を指定します

戻り値 localDateStr as String(ローカライズされた日付文字列)

Dim localDateStr as String Dim stdDateStr as String Dim ToDateFormat as Integer Dim longDateFormat as Integer stdDateStr = DateMMDDYY(Today()) ToDateFormat = 0 longDateFormat = 0 localDateStr = NSL.LocalizeDate(stdDateStr, ToDateFormat, longDateFormat)


環境設定

環境設定は、システム環境設定とアプリケーション環境設定の2つのカテゴリに分けられます。 システム環境設定は、自動OFF時間、日付書式などを含んでいます。 アプリケーション環境設定は、アプリケーションの特別な情報の格納に使われます。 これらの環境設定は、プログラム状態、登録コードなどを格納しています。 アプリケーション環境設定を使うことで、あえてデータベースを作る必要を省いてくれるかもしれませんが、それほど大きなデータを含むことは出来ません。

GetAppPreferences

data = NSBSystemLib.GetAppPreferences(pgmName, prefId, saved)
アプリケーション環境設定文字列を取得します。

引数 pgmName as String プログラム名 - これは要注意です prefId as Integer 環境設定ID saved as Integer 0 = 環境設定は、ハードリセットの後に保持されません 1 = 環境設定は、ハードリセットの後も保持されます

戻り値 data as String

Dim data as String Dim pgmName as String Dim prefId as Integer Dim saved as Integer pgmName = "SysLibTest" prefId = 1 saved = 0 data = NSL.GetAppPreferences(pgmName, prefId, saved)

現在、設定文字列は、250バイト以下に制限されています。

SetAppPreferences

status = NSBSystemLib.SetAppPreferences(pgmName, prefId, data, saved)
アプリケーション設定文字列を設定します。

引数 pgmName as String プログラム名 - これは要注意です prefId as Integer 環境設定ID data as String saved as Integer 0 = 環境設定は、ハードリセットの後に保持されません 1 = 環境設定は、ハードリセットの後も保持されます

戻り値 status as Integer 0 = 成功 -1 = 無効なプログラム名を指定しました

Dim status as Integer Dim pgmName as String Dim prefId as Integer Dim data as String Dim saved as Integer pgmName = "SysLibTest" prefId = 1 data = "anything I want!" saved = 0 status = NSL.SetAppPreferences(pgmName, prefId, data, saved)

現在、設定文字列は、250バイト以下に制限されています。

GetSysPreference

data = NSBSystemLib.GetSysPreference(prefID)
システム環境設定値を取得します。

引数 prefID as Integer PalmOS SDKの Preferences.h の値を指定します: 0 = prefVersion 1 = prefCountry 2 = prefDateFormat 3 = prefLongDateFormat 4 = prefWeekStartDay 5 = prefTimeFormat 6 = prefNumberFormat 7 = prefAutoOffDuration 現在は、prefAutoOffDurationSecs が良く使われます (prefAutoOffDuration は分単位です) 8 = prefSysSoundLevelV20 9 = prefGameSoundLevelV20 10 = prefAlarmSoundLevelV20 11 = prefHidePrivateRecordsV33 12 = prefDeviceLocked 13 = prefLocalSyncRequiresPassword 14 = prefRemoteSyncRequiresPassword 15 = prefSysBatteryKind 16 = prefAllowEasterEggs 17 = prefMinutesWestOfGMT グリニッジ標準時 18 = prefDaylightSavings サマータイム 19 = prefRonamaticChar 20 = prefHard1CharAppCreator App creator for hard key #1 21 = prefHard2CharAppCreator 22 = prefHard3CharAppCreator 23 = prefHard4CharAppCreator 24 = prefCalcCharAppCreator 25 = prefHardCradleCharAppCreator 26 = prefLauncherAppCreator 27 = prefSysPrefFlags 28 = prefHardCradle2CharAppCreator 29 = prefAnimationLevel PalmOS 3.0から、次のものが追加されました: ------------------------------------------ 30 = prefSysSoundVolume 実際の振幅 − エラー音や、その他アラームやゲーム以外の音 31 = prefGameSoundVolume 32 = prefAlarmSoundVolume 33 = prefBeamReceive 使用しない−赤外通信の検索モードを持つ ExgLibControl を使う 34 = prefCalibrateDigitizerAtReset Trueは、ソフトリセット時に、ユーザーキャリブレーションを表示します 35 = prefSystemKeyboardID 優先されるキーボードリソースのID 36 = prefDefSerialPlugIn デフォルトのシリアルプラグインのcreator ID PalmOS 3.1からの拡張分: ------------------------- 37 = prefStayOnWhenPluggedIn 38 = prefStayLitWhenPluggedIn PalmOS 3.2からの拡張分: ------------------------- 39 = prefAntennaCharAppCreator App creator for antenna key PalmOS 3.3からの拡張分: ------------------------- 40 = prefMeasurementSystem English, Metric, etc. PalmOS 3.5からの拡張分: ------------------------- 41 = prefShowPrivateRecords returns privateRecordViewEnum 42 = prefAutoOffDurationSecs PalmOS 4.0からの拡張分: ------------------------- 43 = prefTimeZone G.M.T.からの相対時間。+は、G.M.T.の東, −は西t 44 = prefDaylightSavingAdjustment D.S.T.の調整(分)、標準的には、0か60 45 = prefAutoLockType Never, on poweroff, after preset delay or at preset time. 46 = prefAutoLockTime Auto lock preset time or delay. 47 = prefAutoLockTimeFlag 分か時間で 48 = prefLanguage 選択された言語(セットアップのFormats) 49 = prefLocale 国(セットアップのFormats) 50 = prefTimeZoneCountry タイムゾーン 51 = prefAttentionFlags User prefs for getting user's attention 52 = prefDefaultAppCreator Default application launched on reset.

戻り値 data as Integer

Dim data as Integer Dim prefID as Integer prefID = 7 'prefAutoOffDuration - in seconds data = NSL.GetSysPreference(prefID)

SetSysPreference

NSBSystemLib.SetSysPreference prefID, data
システム環境設定値を設定します。

引数 prefID as Integer GetSysPreference()関数を参照 data as Integer

Dim prefID as Integer Dim data as Integer prefID = 7 'prefAutoOffDuration - in minutes data = 3 '3 minutes NSL.SetSysPreference prefID, data


プログレスマネージャ

プログレスマネージャ関数は、長時間を要する処理の経過を表示するダイアログを提供します。これらは、ユーザーに処理の進行状況を伝える機能を提供できます。

ProgressStartDialog

NSBSystemLib.ProgressStartDialog title
プログレスダイアログをスタートさせます。これら関数は、長い時間を要する処理を実行している間、その経過状況をユーザーに伝える特別なアラート画面を表示します。

引数: title as String 20文字以内のダイアログのタイトル文字列

Dim title as String Dim message as String Dim stage as Integer Dim error as Integer Dim force as Integer Dim canceled as Integer Dim strValue as String Dim resolution as Integer Dim completeChar as String Dim incompleteChar as String Dim percent as Integer Dim count as Integer completeChar = "|" incompleteChar = "." resolution = 5 count = 100 title = "Progress Test..." NSL.ProgressStartDialog title Delay 1 error = 0 stage = 1 Do While stage <= count canceled = NSL.ProgressUserCancel() If canceled = 1 Then Exit Do End If percent = NSL.ProgressPercent(stage, count) strValue = NSL.ProgressPercentString(percent, resolution, _ completeChar, incompleteChar) Message = strValue + Chr(10) + Str(percent) _ + "% complete" + Chr(10) _ + "stage = " + Str(stage) NSL.ProgressUpdateDialog error, message stage = stage + 1 Delay 0.25 Loop force = 0 Delay 1 NSL.ProgressStopDialog(force)

参照: ProgressStopDialog(), ProgressUpdateDialog()

ProgressStopDialog

NSBSystemLib.ProgressStopDialog force
プログレスダイアログをストップし、ダイアログボックスの表示を消します。

引数: force as Integer 0 = ただちに、ダイアログを終了しません。 1 = ただちに、ダイアログを終了します。 この引数は、ダイアログがエラーメッセージを表示する過程においてのみ、意味を持ちます。 もし、"force"に 0 がセットされていれば、ユーザーはダイアログを消すために「OK」ボタンを タップしなければなりません。

ProgressStartDialog() の例を見てください。

ProgressUpdateDialog

NSBSystemLib.ProgressUpdateDialog error, message
プログレスダイアログ上の表示メッセージを更新します。

引数 error as Integer 0 = エラーはありません 1 = エラー発生にします もし、"error"に 1 をセットした場合、ダイアログには、特別な指定されたメッセージが 表示され、"OK"ボタンを表示します。 message as String 表示するメッセージ。120文字以内で指定します。

ProgressStartDialog() の例を見てください。

ProgressUserCancel

canceled = NSBSystemLib.ProgressUserCancel()
ユーザーが"Cancel"をタップした時、1 が返されます。 途中で中断しないか、してはならない処理を作るときには、この関数は使わないで下さい。 今のPalmOSでは、このボタンを非表示にしたり、無効の灰色表示にできませんので、"Cencel"ボタンは、 表示されています。しかし、実際は、何も動作しません。

戻り値 canceled as Integer

ProgressStartDialog() の例を見てください。

ProgressPercent

percent = NSBSystemLib.ProgressPercent(current, count)
入力された値に対して、完了した値の割合(%)を計算します。 この関数は、実際は、プログレスマネージャAPIの一部機能ではありません。 これは、プログレスダイアログのメッセージに含むことができるように、割合を計算するのに便利な方法として提供しています。

引数 current as Integer 繰り返し処理ループ中の、現在の繰り返し数 count as Integer 100%完了する時の、繰り返し数

戻り値 percent as Integer

ProgressStartDialog() の例を見てください。

ProgressPercentString

strValue = NSBSystemLib.ProgressPercentString(percent, resolution, completeChar, incompleteChar)
進行中の「完了・未完了」の割合を表現するような文字列を返します。 この関数は、実際は、プログレスマネージャAPIの一部機能ではありません。 これは進行度合いを、■などのグラフィックキャラクタを使って表すための便利な関数として提供されます。 ここで返された文字列は、プログレスダイアログのメッセージの一部に使うことができます。

引数 percent as Integer Percent complete - 参照: ProgressPercent(). resolution as Integer パーセントのサイズを表す解像度(resolution) 解像度 1 は、100文字で処理が完了することを意味します。 1%変化する毎に、処理文字列に反映されます。 解像度 5 は、20文字で処理が完了することを意味します。 5%変化する毎に、処理文字列に反映されます。 処理文字列の長さは、(100 ÷ 解像度)で計算できます。 解像度は、以下のどれかである必要があります: 1, 2, 4, 5, 10, 20, 25, or 50 completeChar as String 進行した時に表示される文字列を指定します。 "|" を推奨します。 incompleteChar as String 未完了の処理を表す文字列を指定します。 "." を推奨します。 "completeChar"と"incompleteChar" は、同じピクセル幅の文字列であるべきです。 そうすることで、実際の進行状況を、正確に伝えることができます。

戻り値 strValue as String

ProgressStartDialog() の例を見てください。


文字列関数

これらの文字列関数は、ライブラリ中の他の関数で使うために、文字列を操作する便利な手段を提供します。

String4ToInt

intValue = NSBSystemLib.String4ToInt(fourByteString)
4バイトの文字列の、整数値を返します。 この関数は、クリエータID、アプリケーションンタイプ、リソースタイプなどの値を計算する時などに有用です。

引数 fourByteString as String

戻り値 intValue as Integer

Dim intValue as Integer Dim fourByteString as String fourByteString = "libr" intValue = NSL.String4ToInt(fourByteString)

参照: IntToString4()

IntToString4

fourByteString = NSBSystemLib.IntToString4(intValue)
整数値から、4バイトの文字列を返します。これは、整数値から、クリエータIDやアプリケーションタイプや、リソースタイプなどを作るのに役立ちます。

引数 intValue as Integer

戻り値 fourByteString as String

Dim fourByteString as String Dim intValue as Integer intValue = 1818845810 '"libr" fourByteString = NSL.IntToString4(intValue)

参照: String4ToInt()

DelimitedItem

item = NSBSystemLib.DelimitedItem(inputStr, delimiter, nbr)
特定のデリミタ(分割文字)を含む文字列から、デリミタで分解した指定した位置の文字列を返します。

Parameters inputStr as String デリミタを含む分割したい文字列 delimiter as String デリミタ(文字、または、文字列) nbr as Integer 返したい位置。これは、1 が先頭になります。

Returns item as String 取り出された文字列が返されます。指定された文字列がない場合、デリミタが返されます。

Dim item as String Dim inputStr as String Dim delimiter as String Dim nbr as Integer inputStr = "Joe;Mary;Jane" delimiter = ";" nbr = 2 'Returns the string "Mary" item = NSL.DelimitedItem(inputStr, delimiter, nbr)

入力文字列は、250文字以下でなければなりません。

FixedWidthString

fixedStr = NSBSystemLib.FixedWidthString(origStr, width, options)
文字列を固定幅の文字列を返します。 これは、PopUpやListBoxなどの項目データとして、長さを揃えたデータを作りたい時に役立ちます。 指定するピクセル数に収まるよう、必要に応じて、幅広のスペース(chr(25))と通常のスペース(chr(32))が組み合わされます。 指定された幅を超える部分は、切り取られます。

幅広のスペースは、5ピクセル、通常のスペースは、2ピクセルの幅です。この関数は、通常のフォント(Font ID=0)にのみ適用されます。

引数 origStr as String 表示したい文字列 width as Integer 表示したい幅のピクセル数 options as Integer 0 = 左詰め 1 = 右詰め 2 = 左詰めで表示し、切り取られたことを「...」で表します 3 = 右詰めで表示し、切り取られたことを「...」で表します 4 = 中央合わせで表示し、切り取られたことを「...」で表します 5 = 中央合わせ

戻り値 fixedStr as String 調整された文字列

Dim fixedStr as String Dim origStr as String Dim width as Integer Dim options as Integer origStr = "This is a test" width = 80 options = 0 fixedStr = NSL.FixedWidthString(origStr, width, options)

NormalSpacedString()関数を使うと、通常のスペースの文字列に変換できます。

NormalSpacedString

normalStr = NSBSystemLib.NormalSpacedString(origStr)
文字列に含まれる、広幅スペース(chr(25))を通常スペース(chr(32))へ置き換えます。

引数 origStr as String

戻り値 normalStr as String

Dim normalStr as String Dim origStr as String normalStr = NSL.NormalSpacedString(origStr)

参照: FixedWidthString()

システム時刻関数

PalmOSのシステム時刻は、1904年1月1日からの経過秒を整数値で表します。 大抵の日付や時刻を持つPalmOSのAPIは、この書式の時刻を使います。 このシステム時刻関数は、時刻とシステム時刻書式への変換機能を提供します。

SelectOneTime

newTimeSelected = NSBSystemLib.SelectOneTime(defHour, defMinute, title)
PalmOS関数のSelectOneTime()を呼び出し、ユーザーが、1つの時刻を選択できるようなダイアログを表示します。 この関数は、時間を選択すると、1 を返しますが、そうでなければ、0 を返します。 グローバル変数の、GlobalHour() と GlobalMinute() には、選択された時間が返されます。

引数 defHour as Integer デフォルトで選択しておく時刻(時間) defMinute as Integer デフォルトで選択しておく時刻(分) title as String

戻り値 newTimeSelected as Integer

Dim newTimeSelected as Integer Dim defHour as Integer Dim defMinute as Integer Dim title as String defHour = 10 defMinute = 30 title = "Some Title" newTimeSelected = NSL.SelectOneTime(defHour, defMinute, title) If newTimeSelected = 1 Then defHour = NSL.GlobalHour() defMinute = NSL.GlobalMinute() End If

IncrementSystemTime

newSysTime = NSBSystemLib.IncrementSystemTime(oldSysTime, hours, minutes, seconds)
指定する時刻(oldSysTime)に、指定された時間、分、秒を加えたシステム時間を返します。(指定する時刻は、1904年1月1日からの経過秒です)

引数 oldSysTime as Integer 0 = 現在の時刻を使います hours as Integer minutes as Integer seconds as Integer

戻り値 newSysTime as Integer

Dim newSysTime as Integer Dim oldSysTime as Integer Dim hours as Integer Dim minutes as Integer Dim seconds as Integer oldSysTime = 0 hours = 0 minutes = 30 seconds = 0 'Add 30 minutes n