当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2011年10月28日金曜日

配列の中身をトリミングしてみる

先週はサボってごめんなさい。ご存じの方も多いと思いますが(ホントか?)、筆者は先週、大きな買い物をしたのです。
それに丸々一日を費やしてしまったので、更新出来ませんでした。

xPagesネタは、記事を書きながら、DBを作っているので、結構体力を使うのです。
なので、みなさんどんどん、ノーツDBをxPages化してくださいね。

さて、今日はxPagesネタは一休み(終わらないですよ)。
久しぶりに、Lotus Scriptネタです。

たまには、見たいですよね。Lotus Scriptネタ。

ということで見たい方は、
にほんブログ村 IT技術ブログへ
をクリックしましょう。



今日は、配列の中身をトリミングしてみるというものです。
トリミングは、皆さん知ってますよね?そうです。余分なスペース(空白)を削除するというものです。

文字列変数の中身から余分なスペースを削除するには、LTrimやRtrim、Trim関数を使いますね。
LTrim関数は文字列のうち、一番左側にある余分なスペースを、RTrimは文字列のうち、一番右側にある余分なスペースを、Trim関数は文字列の一番左と一番右の両方の余分なスペースを削除してくれます。

配列の場合、各要素を取り出して、Trim関数で余分なスペースを削除して、また配列に戻す。
と言うことを行います。

では、いつものようにサンプルを見てみましょう。

Sub Click(Source As Button)
    On Error Goto ErrProc
   
    Dim data1     As Variant
    Dim data2     As Variant
    Dim dummyd(0) As String
   
    data1 = Split( "abc, def, hij", "," )
   
    '配列の各要素を取り出して、それぞれトリミングを行う
    Forall x In data1
        If Isempty(data2) Then
            dummyd(0) = Trim(x)
            data2 = dummyd
        Else
            dummyd(0) = Trim(x)
            data2 = Arrayappend( data2, dummyd )
        End If
    End Forall
   
    '置換した配列の中身を確認する
    Forall z In data2
        Msgbox "【" + z + "】"
    End Forall
   
    Exit Sub
   
Errproc:
    Msgbox _
    Cstr(Erl) & Chr$(10) & _
    Cstr(Err) & Chr$(10) & _
    Error, _
    0, "エラー"
   
    Exit Sub
End Sub


・・・大変ですね。



ここで、記事を見るのを止めてしまった方、もったいない。
Lotus Scriptはそんなに不便ではありません。
ちゃんとあります。配列の各要素をトリミングしてくれる心強い関数が!

その名も「FullTrim」関数です!
では、上記のサンプルをFullTrim関数に置き換えたものを見てみましょう。

Sub Click(Source As Button)
    On Error Goto ErrProc
   
    Dim data1     As Variant
    Dim data2     As Variant
   
    data1 = Split( "abc, def, hij", "," )
    '配列の要素をすべてトリミングする
    data2 = Fulltrim( data1 )
   
    '置換した配列の中身を確認する
    Forall z In data2
        Msgbox "【" + z + "】"
    End Forall
   
    Exit Sub
   
Errproc:
    Msgbox _
    Cstr(Erl) & Chr$(10) & _
    Cstr(Err) & Chr$(10) & _
    Error, _
    0, "エラー"
   
    Exit Sub
End Sub


どうです?簡単ですね。
ということで、配列の中身をトリミングする場合は、FullTrim関数を使いましょう。

これは、ノーツ文書の中で、複数値に余分なスペースがあって、それを削除したいときに使えますね。
思い当たる方は早速試してみてください。



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2011年10月16日日曜日

おじさんSEが学ぶXPages(4)

前回の投稿から2週間1週間(ぼけてましたね)が経過してしまいました。
つまりもう10月も半ばという事です。もう年の瀬はすぐです。あっという間です。




では、今回もボタンクリックをしてくださいね。
にほんブログ村 IT技術ブログへ



さて・・・前回は・・・
えーっと、あぁ、containerコントロールの編集をしていて途中で終わってしまったんでしたね。
今回はその続きをやりましょう。

containerコントロールのheaderパネルとmainパネルに背景色をつけました。
残るfooterパネルにも設定をしましょう。
右側のコントロールビューから「ラベル」を選択して、footerパネルの中にドラッグ&ドロップします。
ラベルの内容は「Copyright (C) 2011 ef Co.,Ltd All Rights Reserved.」とします。みなさんは適当に何か書いてください。

作成したラベルはフレーム内の一番右側に配置するようにしてみましょう。
画面左側のアウトラインビューでfooterパネルを選択します。
[フォント]タブを開いて、「文字揃え」の中の[右揃え]ボタンをクリックします。
footerパネルの[フォント]タブ

これでさきほど作成したラベルがパネル内で右側に寄せられました。

では、今度はframeパネルの設定をもう少し変更します。
frameパネルを選択したら、[余白]タブを選択します。
余白を選択しておかないと、xPagesの画面を開いたときに幅がいっぱいいっぱい表示されてしまうので、あまり格好良くありません(アプリケーションによっては、その方が良いかもしれませんが)。

ということで、ここでframeパネルの余白を設定します。
今回は、上下左右 すべて同じ設定にしてみます。
単位は、「ピクセル」を選択します。すると、左側のボックスに数値が入力できるようになりますので、「10.0」と入力します。

frameパネルの[余白]タブ

この数値は、皆さんの好みで設定してください。


次にtabパネルの中に「タブ付きパネル」を設定してみます。
画面をタブで切り替える事が出来るコントロールです。
コントロールビューの「コンテナコントロール」から[タブ付きパネル]を選択して、tabパネルの中にドラッグ&ドロップします。

タブが2つの状態で追加されましたね。
ただ、タブの名前が、"新規タブ"、"新規タブ2"になっているので、それを変更します。

アウトラインビューで、タブ付きパネルを見ると、左側に△ボタンがあるはずです。そこをクリックしてみると、「タブパネル」というコントロールが2つ表示されます。
そのうち、上の「タブパネル」をクリックします。

プロパティビューに「タブパネル」の情報が表示されました。
ここで名前トラベルをそれぞれ次のように設定します。
上のタブ 名前:homeTab、ラベル:蔵書一覧
下のタブ 名前:IssueguidesTab、ラベル:貸し出し一覧


タブ付きパネルを追加した


せっかくタブを作成したので、それぞれのタブをクリックしたときの動作を設定しておきます。
「蔵書一覧」のタブを選択したら、「イベントビュー」を開きます。
[アクションの追加]というボタンがあるのでクリックします。
「アクション」は"ページを開く"、「開くページの名前」は"home"にして[OK]をクリックします。
タブのシンプルアクション

同様に、「貸し出し一覧」のタブにもアクションを追加します。
「アクション」は"ページを開く"、「開くページの名前」は"Issueguides"にして[OK]をクリックします。

これで、タブをクリックすると、設定したページが開くようになります。

ですが・・・
Issueguidesのページには、何も設定してありません。
ということで、Issueguidesページを開いて、containerコントロールを追加しておいてください。


ここで、作成したxPagesを実際に開いてみると分かるのですが、タブをクリックすると画面は切り替わるのですが、タブはいつまでも「蔵書一覧」のままになっています。

これでは、タブの意味があまりないので、現在選択されているタブがなんなのかを分かるようにしましょう。
この設定は少々面倒です。

まずは、containerコントロールのプロパティビューを開きます。
その中の[プロパティ定義]というタブを開きます。
そうしたら、[新規プロパティ]ボタンをクリックして、新規にプロパティを作成します。
名前は任意ですが、「tabID」としておきます。種類は「string」としておきます。
新規プロパティを追加

これはcontainerコントロール全体で管理できる変数です。
ここに、タブが切り替えられた際に、どのタブが選択されたのかを格納します。


次に、 この値によるタブの切り替え方法を設定します。
「タブ付きパネル」を選択して、プロパティビューを開きます。
[タブ付きパネル]タブにある「オプション」の「デフォルトで開くタブ」にある◇をクリックして、[値の計算...]をクリックします。
画面の左側にグローバルオブジェクトの一覧が表示されるので、その中から「compositeData」を探します。見つかったら、△ボタンをクリックして展開します。

すると、そこにさきほど作成したプロパティの「tabID」が出来ているので、それをダブルクリックします。
右側の画面に表示されたら、[OK]をクリックします。
デフォルトで開くタブの設定画面

すると、デフォルトで開くタブのところが、青文字で"{計算済み}"に変わった事が分かると思います。

これで、プロパティの値によって、開くタブが変わります。



しかし、まだプロパティに値が格納されていませんので、何も変わりません。
では、どのようにプロパティを格納すればよいのかを見ていきます。

containerコントロールはここで保存しておきます。


あらかじめ作成してあった「home」XPageを開きます。
その中に表示されているcontainerコントロールを選択します。
そこで[すべてのプロパティ]タブを開きます。
その中に[カスタム][tabID]があるので、「値」欄に「蔵書一覧」のタブパネルの名前である"homeTab"を入力します。
これで、「home」XPageが開かれた場合は、「蔵書一覧」タブが選択された状態になります。

同様に、「Issueguides」XPageを開いて、[カスタム][tabID]の値に"IssueguidesTab"を入力します。

これで、タブ付きパネルの設定は完了です。



今度は、それぞれのタブを開いたときの画面を編集したいのですが、
今、編集しているのは、共通画面であるcontainerコントロールです。
このまま編集してしまうと、共通ではなくなってしまいます。

これを回避するために(というか、共通画面でも各ページ毎にコンテンツを変える事が出来るようにするために)、「編集可能領域」というコントロールを利用します。

コントロールビューのコアコントロールの中から、「編集可能領域」を選択して、contentパネルにドラッグ&ドロップします。
任意ですが、後々わかりやすくするために、プロパティビューで、これの名前を変更します。
名前とファセット名の両方を「contentData」としておきます。

編集可能領域のプロパティビュー


 と言ったところで、containerコントロールの編集は、ここで一度終わりにします。
次回からは、編集可能領域に設定するコントロールの内容を編集していきます。




【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2011年10月10日月曜日

Lotus Knows Expo 2011に参加してみましたよ

10月10日。今日は体育の日です。晴れの特異日ということで、晴れが多い日だそうです。ということで、今日も晴れています。昨晩は雨だったのに、さすがです。

先週の金曜日、プリンスパークタワー東京にてLotus Knows Expo 2011が開催されました。

去年はAndroid端末が流行の兆しを見せていた事で、Androidでノーツを使いましょう!みたいな事でしたが、今年はビジネスで使うならタブレット!と言う事で、タブレット端末でのモバイルアクセスはどうすればよいのか?というのが目に付きました。

全体としては、エンタープライズもソーシャルで!というのを勧めていたようですが、やはり筆者にはしっくり来ませんでした。
発想力の乏しい筆者には、マーケティングで使う以外の活路がまだ見いだせていないのです。

この辺はアイディア勝負なのでしょうか。

もっと感性を磨く必要がありそうな筆者でした。


さて、恒例のゲットしたもの一覧です。
お土産ではありませんが、会場内で使えたものとして「バルカンコイン」なるものがありました。
バルカンコイン

Vの字に「VULCAN」と入ってます。その周りには、「Lotus Knows Expo 2011」と書いてあります。
どう考えても今年しか使えません。きっと大阪会場でも利用されるのでしょう。
しかし、その後、どうするんでしょうか?記念品にするにしてもあまりにも大量流通していたと思います。
ちなみに、一人あたり「3バルカンコイン」をもらえました。「サンバルカンコイン」「サンバルカン」・・・だじゃれでしょうか・・・


次は、その他にゲットしたものです。
レコモット社のトートバッグ(受付で入場者に配られたものです)、Lotus Collaboration Times(今回の会場案内図やセッションのタイムスケジュール等が書かれたもので、やはり入場者全員に配られました)、緑色のものが入場者の先着x名に配られたTシャツ引換券で引き替えたTシャツです。
真ん中のものがアンケートに答えて返却するともらえるボールペンです(毎年、どこかでペンがいただけるのですが、消費しきれていませんので、そろそろ他のものが良いです・・・)、それと、懇意にしていただいているチームスタジオジャパンさんの3Dノートです。
ゲットしたもの

その他の話題としては、Lotus Notes/Domino 8.5.3(英語版)が10/5にリリースされました。
XPages関連がさらに使いやすくなっているようなので、早めにダウンロードしてテストしてみるのも良いでしょう。


閉会した後は、イエローな方々とわいわいとLotus談義をさせていただきました。
そんな中で、参加メンバーによる交換ブログならぬリレーブログを実施する事が決まりました。
12/8に開催が決まった「Lotus 夜Day 2011」までに一巡させよう!ということですが、忙しいメンバーが果たして本当に一巡させる事が出来るのでしょうか、こうご期待!

なお、一番手の「@munesora」さんはすでに書き終えて公開されていますので、読んでみてください!
プロフィールにタグをつけるモチベーションとは?



・・・筆者は何を書こうかな。

2011年10月3日月曜日

おじさんSEが学ぶXPages(3)

10月になりました。衣替えですね。今週末はLotus Knows Expo 2011が開催されます。
楽しみですね!

さて、連載の3回目です。
今回は、前回の予告通り、containerコントロールを編集して、共通レイアウトの部分を作成します。


では、いつものようににほんブログ村 IT技術ブログへ
を押してから先に進んでください。

Lotus Domino Designerで「図書管理」を開いたら、左側のツリーから「カスタムコントロール」を選択してダブルクリックします。
さくせいしたcontainerコントロールが表示されるので、それをダブルクリックして開きます。
カスタムコントロール画面

では、実際に編集していきましょう。

まずは、パネルを組み込みます。これはHTMLタグでいうと、<div>タグになります。
[コントロール]ビューから、「パネル」 (*1)を選択して、containerコントロール画面にドラッグ&ドロップします。(*1 コンテナコントロールというカテゴリの中にあります。)

このパネルの名前は「frame」とします。

さらに、パネルを追加します。このとき、ドラッグ&ドロップする際、今追加したframeパネルの中にドロップするようにしてください。
このパネルの名前は、「header」とします。
containerコントロールにパネルを追加

さらに、パネルを4つ追加します。
それぞれ名前を「main」「tab」「content」「footer」とします。
ここで、適当に追加してしまうと、思ってもいない場所に設定されてしまいます。

そんなときは、[アウトライン]ビューに表示されているコントロールをマウスで選択して、好きな場所にドラッグ&ドロップします。

ここでは、下図のような順番に並べ替えます。
containerコントロールのパネルの並びを変更した状態

また、前回作成したラベルを「header」コントロールの中に移動しておきます。


今度は、containerコントロールのスタイルを設定してみましょう。
スタイルシートを使うと自由に設定できますが、ここではLotus Domino Designerに設定されているプロパティでどこまでできるかを確認するために、そちらでやっていきましょう。
(Dojoについては、IBMの新人SEが学ぶXPagesに詳しく出ていますので、そちらを参照してください。 )

さて気を取り直して、最初にheaderパネルの設定を行います。
パネルのプロパティを見ると・・・
大きさや背景を設定できるようです。
パネルのプロパティ

ということで、大きさと背景色を設定してみましょう。
大きさは、「高さ」を47ピクセルにします(これは、適当な数値にしてください)。
背景は、単色はつまらないのでグラデーションにしてみましょう・・・ってできません!
ノーツの表ならグラデーションが描けるのに・・・仕方がないので、グラフィックで代用します。

グラフィックの作成には、Lotus SymphonyのPresentationを使います。
Lotus Domino DesignerでXPagesを作成しようという方なら導入済みでしょうから(笑)
[作成][図形描画オブジェクト]メニューを実行すると、図形描画オブジェクトのツールバーが表示されるので、そこから四角形を選択して、適当な大きさにドラッグ&ドロップします。

この図形を選択したまま、右側のメニューから[その他の形状プロパティ]を選択すると、プロパティ画面が表示されます。

[領域]タブで色を選択して、[透明度]タブでグラデーションを選択します。
[線]タブで非表示にすれば、グラデーションの図形ができあがりました。
後は、ペイント等を使って大きさを調整します。gifもしくはjpegで保存しておいてください。
ちなみに、筆者はこんなグラフィックを作成しました。
headerパネル用の背景グラフィック
 
わかりやすいように、幅はちょっと太めにしてあります。


さて、グラフィックが作成できたらLotus Domino Designerに戻ります。
headerプロパティの背景タブを選択して、[イメージのURL]の横にあるフォルダのアイコンをクリックします。
画像の選択画面

画像の選択画面が表示されるので、[追加]ボタンをクリックして、さきほど作成したグラフィックを追加します。右側に画像が表示されたら、[OK]をクリックします。

ついでにラベルの設定もしてみましょう。
ラベルのプロパティ
同様にtabパネルにもグラフィックを設定します。
ここでは筆者はこんなグラフィックを作成しました。
tabパネル用の背景グラフィック

ここまででcontainerコントロールはこんな画面になりました。
containerコントロールの画面


というところで、今日は終わります。
中途半端でごめんなさい。


次回で、ひとまずcontainerコントロールの編集を完了にしましょう。

では。

Lotus Expo 2011で会いましょう(あ。筆者は一般参加者として紛れています)。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】



単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ