2017年12月5日火曜日

エクスプローラからコマンドプロンプト

たまに使う小技。

エクスプローラ上でALT+Dキーをクリックすると
アドレスバーにフォーカスが移動するので、
そこで「cmd」と入力してEnterするとコマンドプロンプトが立ち上がる。

たまにしか使わないけど、知ってるとちょっと便利かも?

2017年9月5日火曜日

DataGridViewの選択行を枠で表示する方法

大阪本社 M・Tです。

久々の開発ブログ投稿です。

最近、必要に駆られてVB.NetでDataGridViewの選択行を
枠で表示するということをしましたので紹介します。

通常、DataGridViewでは選択行は色が反転して表示されます。
こんな感じです。













それを以下のようになるようにします。













まあ座標計算して線を描画するだけなんですが
こういうサンプルはWebで探しても意外と少ないので
残しておこうかなと思いました。

イベントはCellPaintingとRowPostPaintです。

'CellPaintingイベント
Private Sub DataGridView1_CellPainting(sender As System.Object,
                                       e As DataGridViewCellPaintingEventArgs) _
Handles DataGridView1.CellPainting

    Dim dgv As DataGridView = CType(sender, DataGridView)

    '行選択時の背景色と前景色を変えない
    If e.RowIndex >= 0 Then
        dgv.Rows(e.RowIndex).DefaultCellStyle.SelectionBackColor
          = e.CellStyle.BackColor

        dgv.Rows(e.RowIndex).DefaultCellStyle.SelectionForeColor
          = e.CellStyle.ForeColor
    End If

End Sub

'RowPostPaintイベント
Private Sub DataGridView1_RowPostPaint(sender As System.Object,
                                       e As DataGridViewRowPostPaintEventArgs)_
Handles DataGridView1.RowPostPaint

    Dim dgv As DataGridView = CType(sender, DataGridView)

    If e.RowIndex = dgv.CurrentRow.Index Then
        '太さ2の黒い線
        Dim linePen As New Pen(Color.Black, 2)

        '座標計算

        '開始X 行ヘッダ表示の場合、行ヘッダ分右にずらす
        Dim startX As Integer = IIf(dgv.RowHeadersVisible,
                                                dgv.RowHeadersWidth,
                                                0)

        '開始Y 行のTOPより1ピクセル下
        '(1ピクセル下にしておかないと選択行を移動したとき
        ' 前に選択していた行の線の描画がきれいに消えない)
        Dim startY As Integer = e.RowBounds.Top + 1

        '終了X
        '開始X+表示される全列の幅-スクロールしないと見えない列の幅
        Dim endX As Integer = startX + _
        dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - _
          dgv.HorizontalScrollingOffset

        '線を引く 上
        e.Graphics.DrawLine(linePen,
                                      startX,
                                      startY,
                                      endX,
                                      startY)


        '線を引く 左
        e.Graphics.DrawLine(linePen,
                                       startX,
                                       startY,
                                       startX,
                                       startY + e.RowBounds.Height - 1)

        '線を引く 右
        e.Graphics.DrawLine(linePen,
                                       endX,
                                       startY,
                                       endX,
                                       startY + e.RowBounds.Height - 1)

        '下罫線を引くため開始Yを再計算
        '(1ピクセル上にしておかないと選択行を移動したとき
        '  前に選択していた行の線の描画がきれいに消えない)
        startY = e.RowBounds.Top + e.RowBounds.Height - 1

        '線を引く 下
        e.Graphics.DrawLine(linePen,
                                      startX,
                                      startY,
                                      endX,
                                      startY)

    End If


End Sub


本日は以上です。ではまた。

2017年7月28日金曜日

游ゴシック

お客様からメールで送られてきたExcelファイル内の画像が、
PCによって縦がつぶれて横長になったり、
正常に表示されたりしたので調査したところ
Office2016から標準のフォントが「游ゴシック」に変わっていました。

「游ゴシック」はフォントに高さがあるので
フォントを「游ゴシック」の状態で画像を貼り付けて保存した場合、
「游ゴシック」がインストールされていないPCでは
表示したときにセルの高さが保存した状態よりも狭くなり、
画像の縦がつぶれてしまいます。

対策としては「游ゴシック」をインストールしましょう。

「游ゴシック」はWidows8.1から標準でインストールされるので、
それ以前のWindwosを使っている方は「游ゴシック 游明朝フォントパック」で
検索してインストールすることをおすすめします。

個人的にはWindowsUpdateに入れてもいいくらいだと思いますが。。。

また、Office2016を使っている方は余計なトラブルを防ぐためにも
オプションの基本設定から規定フォントを「MS Pゴシック」へ
変更しておくことをおすすめします。

大阪:s.n

2017年3月13日月曜日

Windows究極の神モード

大阪のMTです。

Windowsには神モードと呼ばれる隠しオプションがあり、
通称GodModeと呼ばれ、詳細版コントロールパネルが起動する。

神の呼び出し方
1.フォルダを新規作成します。
2.フォルダ名を GodMode.{ED7BA470-8E54-465E-825C-99712043E01C} に変更。
3.GodModeという名前のアイコンに変身します。

共通フォルダ内で一覧表示できるので意外と便利かも。

2017年1月17日火曜日

IEの自動構成

大阪のMTです。

近々『プロキシサーバーが変更されます』ということで、

自動構成のスクリプトを変更し、IEのプロキシサーバーのアドレスが

正しく変更されるかテストした時の話です。


テスト中にアドレスが変更されないPCが発生。

というか、ほぼ失敗で一部だけ成功。

ただ、はっきりとした原因がわからなかった。

正しく変更されたPCと下記項目を比較したりしたが、
・ファイアウォールの設定内容
・ローカルセキュリティポリシーの設定内容
・ドメイン参加・不参加
・そもそもスクリプトを認識している?

結果、どの項目もシロだった。

色々とググってみたら、下記のような記述を発見…

自動構成を使用するには、
レジストリに FEATURE_AUTOCONFIG_BRANDING を追加する必要があります。

えーっ、そうなんだ。

その後、正しく変更されたPCのレジストリを確認すると、
しっかり記述されていました。

(追加した覚えはないけど、、)