2018年5月11日金曜日

画面外のウィンドウをキーボード入力のみで移動する

マルチディスプレイからシングルディスプレイに切り替えた後とかに
アプリを起動するとウィンドウが画面外で立ち上がり、
どうしようもないときがたまにあります。

アプリによっては設定ファイルでリセット出来たりしますが
大抵はどうしようもなかったり。。


というわけで小技。

1.アプリを立ち上げる。
  (見えないけど対象アプリのウィンドウがアクティブな状態にする)

2.Alt+Spaceキーを押した後にMキーを押す

3.移動したい方向のカーソルキー(←↓↑→)を長押しする。

4.ウィンドウが見えたらOK!


やってることはウィンドウのシステムメニューを開いて移動させてるだけですが、
結構使えます。(例外はあると思いますが)


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のレジストリを確認すると、
しっかり記述されていました。

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


2016年11月29日火曜日

Delphi10.1 Berlin

開発の小ネタが思いつかないので、
Delphiの新しいのって出てたっけ?と
調べてみたら、とっくに出てましたね、Delphi 10.1 Berlinが。

今年4月発表で前のバージョンSeattleから7ヶ月。
相変わらず早い。。

ていうか、サイクル的には次が出そうな気が・・・


あとBerlinってやっぱりドイツのベルリンですかね。

前回はSeattle(シアトル)だったし、
なぜか都市名が続きます。

由来は判りませんでしたが、
代わりにwikiで仕入れた情報によると
FireMonkeyフレームワークの由来が
2016年の干支である「丙申 (ひのえさる) 」だとか。

ただFireMonkeyは2011年から導入されるのに
なぜ?という感じですが。。


まぁそんなことはともかく、驚きは

”無償版”があるじゃないですか!!

遙か昔に出て以来、ずっと無償版はなかったですが、
ここに来て無償版。
他に押され放しなので、奮発したんでしょうか(笑)

最近新しいDelphiを触ってないし、
落ち着いたらちょっと試してみたいですね。