2011/04/26

Delphi/C++ Builder の TreeNode (TreeView) で OverlayIndex の使い方

TreeView へ ImageList を設定しておいて、目的のノードへ OverlayIndex を指定するが、下記のコードのみでは何も起きない
(例) 1番のイメージへ、5番のイメージを重ねたい
TreeNode.ImageIndex := 1;
TreeNode.SelectedIndex := 1;
TreeNode.OverlayIndex := 5;
OverlayIndex を利用するには、ImageList の方で、あらかじめ Overlay へ利用するイメージインデックスを決めておかなければならない(利用できる透過イメージは最大4つまで)

ImageList の 5番目を利用する場合
ImageList1.Overlay(5, 0);
のようにあらかじめ指定しておく
引数は、Overlay(透過イメージのIndex, OverlayIndex で利用する箱の番号(0~3))
TreeNode.ImageIndex := 1;
TreeNode.SelectedIndex := 1;
TreeNode.OverlayIndex := 0; // Overlay(5, 0); の 0
OverlayIndex は、ImageList の番号ではなく、Overlayで指定した箱(0~3)の番号となる

2011/04/25

Delphi/C++ Builder の TBitmap で Empty を True にする

Delphi/C++ Builder の TBitmap で Empty を True にする

Bitmap.FreeImage;
とかやっても、Empty は True にならない
Bitmap.Assign(nil);
みたいにすると、Bitmapがクリアされ Empty が True になる

2011/04/21

Google クラウドプリント

モバイル端末から、ネットワーク経由でプリントアウトできる「Google クラウドプリント」

仕組みは、PCのアカウントを設定した Google Chrome ブラウザを経由して印刷が行われる
設定は簡単で、プリンタが使える環境なら Chrome の設定を行えばOK

このサービス Google Chrome を経由するって事は?

・Chrome に設定を行うと、chrome.exe のプロセスが常駐
・印刷を実行する(される)PCへログオンしておかなければならない
・もちろん、電源も入っていなければならない

印刷までの条件が多いというか、それならリモートソフトでいいじゃん的な...
せめてサービスで動作すべきところ

ということで、自問自答をまとめてみた

サービスで動作しないって事は?
PCをログオン状態で放置
セキュリティ面で問題あるんじゃないの?
外出先からプリントアウトできるメリットは大きい!
外出先からプリントアウト
誰が読むんだよ
そこへいる誰かに読ませる
それならメールでいいじゃん
自分のために Android端末 から印刷したい時もあるぞ
つまり自分はプリンタのそばにいる
ということは、PC端末とAndroid端末が目の前にある
それならPC端末使うだろ
ログオン済みだし


Google クラウドプリントに対応した、ネットワーク対応プリンタやプリントサーバが出ればいいんじゃね?ドライバは Google側が持てばいいワケだし

コカコーラの電子マネー「Cmode」終了

コカ・コーラの「Cmode」、電子マネーサービスが終了

まぁ、微妙な存在だったので、撤退やむなしだろうか
自販機だけでなく、コンビニへ導入できなかったのが敗因かもしれない

払い戻しなど、廃止には大変な労力を要するようで、企業側から見たプリペイド型のマイナス点だろう。プラス点と言えば、ユーザーから利息無しで預かったカネの利息だろうか。

2011/04/20

Seagate、SamsungのHDD部門を統合

Seagate、SamsungのHDD部門を統合
結局、HDDメーカーは、どこが残っているのかメモ(吸収等)
  • Seagate (Sumsung, Maxtor > Quantum)
  • Western Digital (HGST > IBM)
  • 東芝(富士通) - モバイル向け

3.5inch は 2大体制となるのだろうか
ちょっと寡占状態が行きすぎているようにも感じるけど...

2011/04/12

アップデートでダメさ加減が増した spモードメール

特殊なやりとりで、サードパーティを排除しているspモードメールアプリ

アップデート後も、応答無しの頻発や入力の緩慢さが相変わらずの話題
大した機能もないのに、醜い出来なのはその通りだと思う

ところで、「SPモードメール受信BOX」という受信ボックスを開くAndroidアプリの機能に、ひな形作成というのがある
あらかじめ、メール(宛先、件名、本文など)を定義しておいて、それを呼び出せるという便利な機能

これって、純正 spモードメールの入力画面を回避できるって事になる
それなら、新規メール作成だけのアプリとか出来るんじゃないだろうか

2011/04/07

USB-RSAQ5, USB-RSAQ5R が Windows7 64bit に対応

IOデータの RS232C ⇔ USB 変換ケーブル
USB-RSAQ5USB-RSAQ5R のドライバが 2011年4月5日に Windows7 64bit へ対応

Update履歴
http://www.iodata.jp/lib/product/u/1922_win7.htm
http://www.iodata.jp/lib/product/u/1921_win7.htm

「どのタイプの固定電話が停電時に使えるのか? 」企業編

どのタイプの固定電話が停電時に使えるのか?」興味津々で見たが、一般家庭向けの話だった

なので、企業で使うであろう回線の「停電 + 災害」について

企業の場合

加入電話は
・アナログ回線
・INS64(ISDN64)回線
・INS1500回線

IP電話は
・0ABJ系(加入電話の番号が引き継げる ひかり電話など)
・050系(フツーのIP電話)

等が一般的

まずは、停電について
「IP電話」は、アダプタや終端装置、音声ゲートウェイの電源を、自前でバックアップしなければ NG
従来の2ワイヤータイプの機器を切り捨ててフルSIPとかで組んでいると、災害時に(担当者も)痛い目に遭う可能性が高い

「アナログ回線」の場合、一般的なビジネスホンやPBXは、数十分から数時間のバッテリーで稼働、その後バッテリーを使い切った後は、「停電直通電話」というのを電話を取るであろう場所へ配置してあり、局からの給電で動作する。
この状態で、「アナログ回線」は「回線数 × 停電直通電話機(アナログ用)」本数分の外線を利用可能

「INS64回線」は、1本で2回線分と言われているように、通常2ch取れるが、局からの給電は あくまで1回線のため「チャンネル数 / 2 × 停電直通電話機(INS用)」が利用可能となる。つまり局給電では、通常利用できる半分のチャンネルしか利用できない。ただし、これはPBX直収の場合であり、TA等を外部に付けている場合はそちらの電源を確保しなければならない。

さらに「INS64回線」で代表組を組んでいる場合、停電対応のためには局側の代表構成を、若い方から空いているところへ着信する一般的な「順次」ではなく、着信がローテーションする「ラウンドロビン」にしておく必要がある。これは、停電直通時に1回線目の 2ch目が常に空きとなるため、うまく代表が滑らずに呼びっぱなしの状態が多く発生してしまうためである。ただ「ラウンドロビン」についても 1回線目の2ch目に着信した場合、同様の症状になるが、次の着信は 2回線目の1ch目へ着信するため、1/2の確率で着信を行うことが可能となる。

「アナログ→INS64 代表組」(追記)は、それぞれの停電直通を用意しておく。この構成は、停電とは別に大きな落とし穴があり、子番の INS64がDSU故障や線路の断線でリンク切れを起こすと、問題のない代表のアナログ回線が利用不能になるため、できるだけ避けるべき構成である。

「INS1500回線」の場合、「局 ⇔ DSU ⇔ PBX」という構成で、DSU は PBX から電源をを取るのが一般的である。
さらに INS1500を収容する PBXの規模なら、通常 3時間程度を保持するバッテリーを持っているが、バッテリーを使い切るとINS1500回線は光回線のため、IP電話同様に利用不能となる。
INS1500を導入する規模なら、建物自体が発電機を用いた無停電を用意している可能性は高いだろうけど。

さらに、「ダイヤルイン」を併用している回線について、「アナログ回線」の場合、ダイヤルインを受けられなくなった場合、PBXが指定回線のL2へ地気を伸ばしてやり、ダイヤルイン着信を解除する仕組みになっている。発着信は出来るものの着信が指定部署に関係なく着信してしまう。「INS64回線」の場合、ダイヤルイン情報を処理できなくなるため、アナログ同様に停電直通が単回線と同様に着信する形となる。特にFAXをダイヤルインへ含んでいる場合、それも電話機へ着信してしまうという事になる(停電でFAXが使えないから同じ事だけど)。「INS1500回線」の場合は、電力を用意しない限り受けられない。



つぎに、電話局の局舎が稼働不能 or 外線が断線した場合
有線を利用している限り、全ての回線が利用不能になる(あたりまえである)

回線に番号が紐付いていない 050 については、別の場所で接続環境を作ってしまえば、利用可能という最大のメリットがある。また、0800 や 0120 の着信課金についても、基本的に転送サービスであるため、転送先を変更して乗り切ることができる。転送先の登録に時間がかかる場合があるので、複数の転送先をあらかじめ登録しておき、すぐに切り替えできるように準備しておくべきだろう。

回線に番号が紐付けされている それ以外の回線について、利用可能なのが「転送サービス
しかし、普段から申し込んでおくのも無駄である(フュージョン050には、基本料無料で不応答転送があるので、普段からどこかへ指定しておくことが可能だったりする)、災害が起きてから申し込んでみると、NTT回線の場合、転送先の登録や転送開始の 初期設定を、契約回線から行わなければならない。つまりこの状態で、そんなことは 不可能 である。経験上、ソフトバンク回線(おとくライン)の場合、営業担当に伝えれば、初期設定を行った状態でスタート可能だった。



災害時の 規制について

大きな地震などがあると、電話等に通話規制が行われる。経験的に地震発生後 約5分後以降に規制が行われるようなので、災害発生後すぐに発信すれば、規制にかからない可能性が高い。

「加入電話」および「ひかり電話」については、規制が行われるらしいが、050系はおそらく発信規制をうけない。ただし、着信側に規制が行われている場合は、同じ事である。

また「加入電話」は、公共性の高い場所(公共施設、医療機関)へ引かれている回線について「災害時有線電話」というのが設定(NTT側で勝手に決めているみたい)されている。この回線に指定されていると、毎年、電話番号を記載した資料とシールを送ってくる。
「災害時有線電話」は「発信規制を受けない回線」という事になる。つまり、着信については発信側の規制がかかるので、こちらから発信して確認を行うのが有効な利用方法となる。
ちなみに、NTT以外の直収サービス(ソフトバンクテレコムおとくライン、KDDIメタルプラス等)については、災害時有線電話のサービス自体が無いため、公共機関などで回線キャリアを変更する場合は、注意が必要である。

携帯電話についても、発信規制が行われるため、メールや災害伝言ダイヤルなどを利用するべきであろう



災害の可能性と、そのための準備について、どれだけ金をかければいいのかは、永遠の課題

2011/04/04

Windows 7 Home Premium で、パスワード無しの共有フォルダ

あまりやらないけど、Windows 7 Home Premium で、パスワード無しの共有フォルダを作製する機会があったので、画面をキャプチャしておいた

  1. コントロールパネルから、ネットワークと共有センター → 共有の詳細設定 で、パスワード保護を無効にする
    ※パスワード無しを利用する場合のみ

  2. 共有したいフォルダのプロパティ「共有」タブで、Everyone へ目的のアクセス権を与える

  3. 同じく共有したいフォルダのプロパティ「セキュリティ」タブで、Everyone へ目的のアクセス権を与える

WOWOWのプログラムガイドが未だ到着しない

通信と関係あるのかどうだか、WOWOWのプログラムガイドが未だ到着しない

いちお、お知らせなんかが掲載されているが、全国的に遅延という状態らしい

ところで、番組表と言えば NHKにも各局(ある程度のエリア)でタイムテーブルの冊子を作っていて、NHK等へいくとタダで貰えるんだけど、有料放送なら契約者へ郵送すべきじゃないだろうか

2011/04/01

Delphi/C++ Builder の PageControl で TabPosition を tpBottom にする

今更だけど PageControl (TPageControl) で TabPosition を tpBottom にする
(おかしくなるのは知っていたけど、タブを下へ付けることがこれまで無かったので)


TabPositiontpTop の場合

TabPositiontpBottom にしてみる(上用のタブがそのまま下へついてしまう)

対策1
uses に UxTheme を追加して、フォームのOnShowイベント辺りで SetWindowTheme を使って、PageControl のテーマを解除する
※ OnShowイベントへ記述したのは、フォームのドッキングなどで、テーマが戻ってしまうため
procedure TForm1.FormShow(Sender: TObject);
begin
    SetWindowTheme(PageControl1.Handle, '', '');
end;
その結果が、こんな感じ
シンプルだし、これでいいのかも...

対策2
PageControl の OwnerDraw プロパティを True にして、自前でタブを描画(OnDrawTabイベント)する
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
var TabRect: TRect;
    PageControl: TPageControl;
begin
    // OwnerDraw = True の場合
    PageControl := TPageControl(Control);
    TabRect := Rect;

    // 背景を塗りつぶす
    if Active then begin
        PageControl.Canvas.Brush.Color := clWindow; // アクティブ色
    end
    else begin
        PageControl.Canvas.Brush.Color := clBtnFace; // 非アクティブ色
    end;
    PageControl.Canvas.FillRect(Rect);

    // 文字を書き込む
    PageControl.Canvas.Font.Color := clWindowText; // 文字色
    DrawText(PageControl.Canvas.Handle, pChar(PageControl.Pages[TabIndex].Caption), -1, TabRect, DT_WORDBREAK or DT_NOCLIP or DT_CENTER or DT_SINGLELINE or DT_VCENTER);
end;
With を使いたくなるが、このイベントは引数に TabIndex や Rect なんてのが使われているので、表現が曖昧になるので注意が必要。上はあえて with を使わなかった

上記のコードで描画したものがコレ

まぁ、サードパーティのコンポーネントを使えば済む話だけど、基本は標準コントロールでという方は多いハズ