Adsense_top

2009年4月23日木曜日

「光センサー液晶パッド」搭載、シャープ メビウス

先日、モニター募集をしていたシャープの新メビウスが発表されました
「光センサー液晶パッド」搭載、つまり「タッチパッド」の部分がタッチパネルになっていて、パソコン版「ニンテンドーDS」みたいな感じ。


実際、どんな活用方法があるのか今のところ考えつきませんが、タブレットPC用のソフトが使えそうなので、結構楽しいことになるかも。
タブレットPC用のプログラムは作った事はありませんが、同様のマシンが普及がタブレットPCの普及にも影響するかも。
実機に是非触れて見たいものです。今日発売開始なので、この週末見に行ってきます。
モニターに選ばないかなぁー。


参考ページ
シャープ、メビウス公式ページ


2009年4月20日月曜日

64bit OSへの移行時期

ITmediaに「64ビット版が選択できる武闘派ノート──「dynabook Qosmio GX/FX」」との記事が書かれていた。
SonyのVAIOにも64bitOSのものが出ている。BTOメーカーだけでなく普通のメーカーから発売され始めたことから、そろそろ移行時期なのかな。
低価格パソコンにもメモリ4G(32bit Windowsでは実際は3G超までしか利用されないらしい)が搭載されていることから、メーカーとしても新たなセールスポイント・価格維持のためにもメーカー主導で移行して行くのでしょうか。
Microsoft Office 14(次期バージョン)にも64bit版が用意されることからも近いと考えてもいいと思います。
Officeの件は別にして、Microsoftの煽りが少ないのなぜなんだろう?
次期Windows(Windows 7)のマシンを買う時には、個人的には移行のタイミングなのかなぁと、思っています。


参考ページ
Windows 7は最後の32ビットWindowsか
64 bit 版 Windows XP は 32 bit 版とどう違うか


 


2009年4月18日土曜日

C# NumericUpDownとDateTimePickerの表示内容を空に。

今日は、Tips的なものが浮かばないので、小技って言うよりC#の小ネタです。



  • NumericUpDownの表示内容を消す方法
    numericUpDown1.Text = string.Empty;

Visual Studioのインテリセンスでは表示されないので気が付いていない人もいるかと思いますが、「.Text」が使えます。
ただし、上記コードで表示は消えますが、「.Value」の値は変更されていませんので注意が必要です。




  • DateTimePickerの表示内容を消す方法
    dateTimePicker1.Format =
System.Windows.Forms.DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "g";

NumericUpDown同様内容は保持されたままです。
予めFormtプロパティをCustomにしておいて下記のように使えば良いかと。

    private void dateTimePicker1_KeyDown(object sender,
KeyEventArgs e)
{
DateTimePicker dp = (DateTimePicker)sender;
if (e.KeyCode == Keys.Delete)
{
dp.CustomFormat = "g";
}
else
{
dp.CustomFormat = "yyyy/MM/dd";
}
}

private void dateTimePicker1_ValueChanged(object sender,
EventArgs e)
{
DateTimePicker dp = (DateTimePicker)sender;
dp.CustomFormat = "yyyy/MM/dd";
}

どちらも、どうでもいいようなネタですが、必要な人もいるかも...
 


2009年4月17日金曜日

C# DataGridViewの列ヘッダを縦書きにする

シャープ・メビウスのモニター募集に応募してみたら、アンケートにブログに関することがあり、前に立ち上げたまま何も書かずにいたココを思い出したので、これをきっかけ書きけ始めようと思います。
いきなりネタがないので、メモ代りにプログラミングのコードを書いておくことにします。

C#でWindows Form上のDataGridViewの列ヘッダを縦書きにするコードです。
ColumHeaderDefaultCellStyleのGdiVerticalFontをtrueにしても縦書きにならないようなので...

dataGridView1をFormに配置し列を1列追加しした状態です。
dataGridView1のColumnHeaderHeightModeをAutoSize以外にして、ColumnHeaderHeightを縦書き文字が納まるだけ高さを設定しておきます。
dataGridView1のCellPaintingイベントに以下のように書きます。

private void dataGridView1_CellPainting(object sender,
DataGridViewCellPaintingEventArgs e)
{
DataGridView dv = (DataGridView)sender;
// 列ヘッダ
if (e.RowIndex < 0)
{
// 縦書き対象列か確認(1列目)
if (e.ColumnIndex == 0)
{
// 列ヘッダの背景と境界線を描画
e.Paint(e.ClipBounds,
DataGridViewPaintParts.Background
| DataGridViewPaintParts.Border);
StringFormat sf = new StringFormat();
//縦書きにする
sf.FormatFlags = StringFormatFlags.DirectionVertical
| StringFormatFlags.NoWrap;
//上詰め
sf.Alignment = StringAlignment.Near;
// 左右中央
sf.LineAlignment = StringAlignment.Center;
Rectangle rect = e.CellBounds;
// 境界線に文字が掛からないように、描画範囲を少し縮める。
rect.Inflate(-2, -2);
//縦書き文字の描画
string text = dv.Columns[e.ColumnIndex].HeaderText;
Font font = dv.ColumnHeadersDefaultCellStyle.Font;
Brush foreBrush = new SolidBrush(
dv.ColumnHeadersDefaultCellStyle.ForeColor);
e.Graphics.DrawString(text, font, foreBrush, rect, sf);
e.Handled = true;
}
}
}

こんな感じになります。



先に、ColumnHeaderHeightを縦書き文字が納まるだけ高さを設定しておくようにと書きましたが、実行時にヘッダ文字列を登録する場合は登録直後に、あらかじめ高さがわからない時はFormのLoadイベントに、以下のようにして高さを調整するコード書いておくとOKです。
Graphics graphics = dataGridView1.CreateGraphics();
Font font = dataGridView1.ColumnHeadersDefaultCellStyle.Font;
StringFormat sf = new StringFormat();
sf.FormatFlags = StringFormatFlags.DirectionVertical;
sf.Alignment = StringAlignment.Near;
sf.LineAlignment = StringAlignment.Center;
string s = dataGridView1.Columns["tateColumn"].HeaderText;
SizeF stringSize = graphics.MeasureString(s, font, 1000, sf);
if (dataGridView1.ColumnHeadersHeight < (int)stringSize.Height)
{
dataGridView1.ColumnHeadersHeight = (int)stringSize.Height + 5;
}


dataGridView1のColumnHeaderHeightModeをAutoSize以外にするのを忘れないにように。