Modify

Ticket #24 (closed タスク: 修正済み)

Opened 22 months ago

Last modified 22 months ago

Win高速化 PC+ v1.93 の開発

Reported by: attosoft Owned by: attosoft
Priority: 普通 Milestone: Win高速化 Classic version 1.0.x
Component: Win高速化 Classic Keywords:
Cc:

Description (last modified by attosoft) (diff)

2005 年 11 月以降更新がストップしている Win高速化 PC+ のメンテナンスとして Win高速化 PC+ v1.93 を開発する。

  • UI デザインを全体的に見直す
    • コントロールレイアウト、ロゴ画像、配色など
    • 独特な UI を Windows 標準スタイルに近づける
  • 機能追加
    • ウィンドウリサイズ (最大化)
    • XP テーマスタイルへの対応
    • カテゴリタブのデフォルト非表示
    • フォームの遅延作成
  • 機能改善
    • 設定項目実装 (読込/設定、保存/復元) を一通りチェック
    • Windows Vista, 7 対応 (エラー回避のみ、正式には対応しない)
    • 低解像度、256 色表示対応
  • 各種リソース (バージョン、文字列、URL、画像、プロパティ) の更新
    • リソーススクリプトによる文字列、画像、アイコンリソースの外部ファイル化
  • Borland Delphi 開発環境の構築
  • リリース ZIP の作成 (公開しない)

※ Win高速化 PC+ v1.93 は一般には公開しないが、Win高速化 Classic version 1.0 開発のベースとする。

Attachments

Change History

comment:1 Changed 22 months ago by attosoft

(In [270]) Win高速化 Classic 向けのリポジトリレイアウトの構築 (see #24)

comment:2 Changed 22 months ago by attosoft

(In [271]) [270] の修正コミット (win-accel-classic へ移動) (see #24)

comment:3 Changed 22 months ago by attosoft

(In [272]) Win高速化 PC+ 1.92 に相当するプロジェクトファイルの初期コミット (see #24)

comment:4 follow-up: ↓ 42 Changed 22 months ago by attosoft

  • Description modified (diff)
  • Summary changed from Win高速化 Classic version 1.9.3 リリース to Win高速化 Classic version 1.0 リリース

特に問題が発覚しない限りは原則 Win高速化 PC+ の実行コードは変更しない。

方針を変更し、操作性や可読性などを改善するため以下の機能を追加および削除する。

追加する機能
  • 標準のタイトルバーおよびメニューバー
  • ウィンドウリサイズ
  • ステータスバー
  • 解説文の外部リソース化
削除する機能
  • 独自タイトルバーおよびツールボタン
  • タスクトレイへの収納
  • コンパクト表示モード
  • 透明度や配色、タブスタイルのカスタマイズ

comment:5 Changed 22 months ago by attosoft

(In [283]) Win高速化 PC+ v1.92 タグ
(see #24)

comment:6 Changed 22 months ago by attosoft

(In [284]) 以下のコントロールに埋め込まれている画像リソースの更新。

  • アイコンボタン (TBitBtn)
  • ロゴ画像 (TImage)
  • ツールボタン (TSpeedButton)
  • メニューアイコン (TMenuItem)

(see #24)

comment:7 Changed 22 months ago by attosoft

(In [285]) コンテキストメニューによる選択文字列の検索が正しく動作するように実装を修正。

  • 検索に使用する URL の更新
  • メニュー項目名やキャプション、メニュー順序の見直し
  • 検索先に「IT用語辞典 BINARY」を追加

(see #24)

comment:8 Changed 22 months ago by attosoft

(In [286]) [285] のコミット漏れ (コンテキストメニューによる選択文字列の検索が正しく動作するように実装を修正)
(see #24)

comment:9 Changed 22 months ago by attosoft

(In [287]) 「バージョン情報」画面の内容を更新。

  • Version を 1.93 に
  • Copyright を 2003-2010 に
  • Web サイトや不具合報告の URL を更新

(see #24)

comment:10 Changed 22 months ago by attosoft

(In [288]) プロジェクトオプションの更新。

  • バージョン情報の更新
    • バージョン番号を 1.9.3.0 に
    • s/Attosoft/attosoft/g
  • コンパイル時にデバッグ情報を出力しない

(see #24)

comment:11 Changed 22 months ago by attosoft

(In [289]) コントロールのプロパティなどを全体的にチェック。

  • Caption, Hint プロパティの文言見直し
  • Font (ParentFont), Color (ParentColor) プロパティの整理
    • 適切な値の指定、および冗長な指定を削除
  • メイン画面のガイダンスラベルを削除
    • メイン画面のレイアウトを調整
  • 使用していいない非表示ラベルの削除

(see #24)

comment:12 Changed 22 months ago by attosoft

(In [290]) ドラッグによるメインフォームのリサイズに対応。

  • メインフォームのサイズ変更を禁止していた処理を削除
  • 最小サイズの指定 (Constraints.MinHeight, Constraints.MinWidth)
  • リサイズ時にコントロールが適切にレイアウトされるよう、以下のプロパティを設定
    • Anchors, Align = alClient

(see #24)

comment:13 Changed 22 months ago by attosoft

(In [291]) 全体的な UI チェック。

  • 全フォームのレイアウトを改善
    • 対象:メイン画面、パフォーマンス画面、オプション画面、保存と復元画面
    • 絶対値指定ではなく Align プロパティによって自動的に配置されるように
    • サイズ縮小時のコントロールの重なりを考慮したコントロール順序に
    • TabOrder プロパティの見直し
  • UI の精緻化
    • コントロールのマージンやサイズの調整、文言の見直しなど
    • 「サービス」ボタンと「ユーティリティ」ボタンの間にスペース
    • 「保存と復元」ボタンの上にボーダーを配置
  • バージョン情報の内容を更新
    • 公式サイトやブログへのリンクを追加

(see #24)

comment:14 Changed 22 months ago by attosoft

(In [292]) オプションダイアログおよび保存と復元ダイアログをモーダルダイアログとして表示する。

  • オプションダイアログの適用ボタン
    • ModalResult を mrOK から mrNone に変更
      • mrOK はモーダルダイアログを閉じるため
      • Kind, Default, Glyph.Data プロパティの変更
  • ダイアログ表示後のタブ切り替え処理
    • ダイアログ表示前にタブを切り替えておくように変更

(see #24)

comment:15 Changed 22 months ago by attosoft

(In [293]) メイン画面のバナー画像およびロゴ画像の更新。

  • Day Roman, リフレクション 使用
  • コントロールの位置およびサイズ調整
    • フォーム、タイトルバー、ボタン、リストボックスなど

(see #24)

comment:16 Changed 22 months ago by attosoft

(In [294]) タイトルバーに最大化ボタンを追加。

  • 「最大化」および「元に戻す」画像をリソースファイルで定義
    • 最大化および元に戻した際に画像を切替える
  • タイトルバーのダブルクリックで最大化するように変更
    • 変更前はウィンドウシェード (コンパクトモード)
  • 最大化時はタイトルバーのドラッグによる移動を不可とする
  • ツールボタンをより適切な配置となるように調整

(see #24)

comment:17 Changed 22 months ago by attosoft

(In [295]) コンパクトモードおよびパフォーマンスモードの実装改善。

  • メイン画面からのモード切替
    • コンパクトボタンクリック時に、コンパクトモードでない場合を考慮
    • パフォーマンスボタンクリック時に、パフォーマンスモードの場合を考慮
  • ShowPerformance フラグを削除 (BtnPerformance.Down プロパティの使用)
  • フォームのダブルクリック時の挙動を変更
    • メイン画面に戻るのではなくモード切替を行う

(see #24)

comment:18 Changed 22 months ago by attosoft

(In [296]) コンポーネントに埋め込まれている画像やアイコンの外部リソース化。

  • リソーススクリプトファイル (resources/images.rc, icons.rc) の追加
    • s/Main.rc/resources\images.rc/g
  • FormCreate 時にリソースファイルで定義したリソースを指定
  • フォームファイル (*.dfm) に記述されていたバイナリ文字列の削除
    • Glyph.Data, Picture.Data, Icon.Data, Bitmap.Data
    • ※ 保守性や可読性の低下を招いていた

(see #24)

comment:19 Changed 22 months ago by attosoft

(In [297]) 画像リソースの更新。

  • 新しい画像を追加
    • RestoreCompact.bmp, Windows.bmp
  • 画像の差し替え
    • Close.bmp, Minimize.bmp, regedit.bmp
  • 既存の画像の微修正 (エッジや透過などの調整)
    • AppIcon.bmp, AppIcon_s.bmp, Exit.bmp, Help.bmp, ipconfig.bmp

(see #24)

comment:20 Changed 22 months ago by attosoft

(In [299]) 細かい変更をまとめてコミット。

  • Caption, Hint プロパティ値の文言見直し
  • バナー画像の背景を不透明に (Transparent プロパティの削除)
  • 高速化ボタンの Default 指定を解除 (タブ切替のたびに強調されるため)
  • サービスタブおよびユーティリティタブ内の TabOrder プロパティ値の見直し
  • オプションダイアログのフォルダボタンのサイズおよび位置を調整
  • コンパクトモードとパフォーマンスモードで Caption プロパティ値を切替
  • 不要な BorderIcons プロパティの削除

(see #24)

comment:21 Changed 22 months ago by attosoft

(In [301]) オプションダイアログによる設定周りの実装改善。

  • アプリケーションの配色を clBtnFace に統一
    • 従来の独特な配色から Windows 標準に準拠
    • 以前の配色はカラースタイルの一つとして提供
  • カラースタイル選択時にリアルタイムにカラーパネルを更新
  • 設定読込/適用時の再描画処理の方法を改善
    • フォームの再表示をやめ、TForm.Refresh およびタブスタイルの変更を行う
    • ※ タブコントロールの枠が再描画されない問題への対応
  • 色選択ダイアログ (TColorDialog)
    • 表示トリガーを TLabel.Click から TPanel.Click に
      • 色を表すために用いていた TEdit を TPanel に差し替え
    • 未作成のカスタム色を選ぶとエラーとなる問題の修正
  • 文字の大きさの設定を「保存と復元」ダイアログにも適用
  • 透明度に数値以外が入力された場合の考慮
  • 設定読込/適用時の処理のリファクタリング

(see #24)

comment:22 Changed 22 months ago by attosoft

(In [302]) 未チェックの項目数と全項目数を表示する方法の改善。表示項目ごとに TLabel を配置していたが、Format 関数を用いてまとめて文字列処理するように変更。
(see #24)

comment:23 Changed 22 months ago by attosoft

(In [303]) ソースコードやコンポーネントに埋め込まれている文字列の外部リソース化。

  • リソーススクリプトファイル (resources/texts.rc) の作成
  • 以下の箇所で表示されるテキストをテキストファイルとして抽出
    • 解説エリアに表示される初期内容
    • チェックリストボックスの設定項目名一覧
    • 設定項目選択時に表示される解説
    • 保存と復元ダイアログの解説 (パソコンの状態、Outlook Express)
  • リソースファイルからテキストを読み込む LoadTextFromResourceName 関数の作成
  • ソースファイル (*.pas) やフォームファイル (*.dfm) に記述されていた文字列の削除
    • ※ 保守性や可読性の低下を招いていた

(see #24)

comment:24 follow-up: ↓ 25 Changed 22 months ago by attosoft

(In [304]) XP テーマスタイル (視覚スタイル) への対応。TXPManifest コンポーネントを配置して、XP テーマが有効な場合はコンポーネントに視覚スタイルが適用されるようにする。

※ Delphi 7 のコンポーネント (VCL) は視覚スタイルや Unicode などへの対応に問題があるため、以下の回避コードを実装する。

  • TPanel.Color や TLabel.Color などが反映されない
    • 明示的に TPanel.ParentBackground = False や TLabel.Transparent = True を指定する必要がある
    • ※ オプションで設定したカラースタイルが適用されない。またカラースタイル選択時にカラーパネルが更新されない。
  • TPageControl のタブ切替えボタン下の領域にある一部のコントロール (ボタンなど) が描画されない
    • コントロールの背面 (親) に ParentBackground = False な TPanel を配置する
    • ※ ユーティリティタブやパソコン情報タブの右端に位置するボタンの右半分が描画されない
  • TCustomEdit.SelText が正しい選択文字列を返さない
    • Unicode 文字を考慮して選択文字列を取得する GetSelText 関数を作成
    • ※ 右クリックからの検索で選択文字列が正しく認識されない
  • TImage のサイズ拡大部分の領域にあった一部のコントロール (ボタンなど) が再描画によってクリアされない
    • コントロールの背面 (親) に ParentBackground = False な TPanel を配置する
    • ※ カラースタイルを変更した状態でウィンドウサイズを拡大すると、拡大部分の領域にツールボタンの描画が残る
  • IME の再変換が正しく機能しない
    • 選択文字列が正しく認識されないためと思われる。重要でないため対応しない。

(see #24)

comment:25 in reply to: ↑ 24 Changed 22 months ago by attosoft

comment:24 への返信

※ Delphi 7 のコンポーネント (VCL) は視覚スタイルや Unicode などへの対応に問題がある

TXPManifest コンポーネントやマニフェストファイル (AppName.exe.manifest) を適用すると、Windows コモンコントロールのバージョンが強制的に更新される。そのためコントロールの外観はリッチになるが、VCL はコントロールの仕様変更に追従できていないため、一部のコントロールで問題が発生する。たとえばコントロールが Unicode ベースとなることで、バイト単位で文字列処理を行う VCL で問題が発生し、選択文字列の判定などに失敗する。問題のいくつかは Delphi 2006 でも残っており、多くは Delphi 2009 の VCL を使用することで解決する。

comment:26 Changed 22 months ago by attosoft

(In [305]) 設定項目を表示するタブコントロールのタブをデフォルトで表示しないように変更。

  • カスタマイズオプションとしてタブを表示する設定を追加
  • タブスタイルやタブの表示/非表示に応じてタブコントロールの高さを調整

(see #24)

comment:27 Changed 22 months ago by attosoft

(In [306]) 右クリックからの選択文字列の検索で、文字数が15文字以上の場合はトリミングしてメニューに表示する。
(see #24)

comment:28 Changed 22 months ago by attosoft

(In [307]) コントロールのプロパティの更新。

  • 冗長な Font プロパティの指定を削除 (ParentFont = True に)
  • TPageControl 内の TPanel に ParentBackground = False を指定
    • 視覚スタイル有効時に、タブスタイルを tsTabs 以外にするとパネルの背景色が反映されなくなるため
  • Caption, Hint プロパティの文言見直し

(see #24)

comment:29 Changed 22 months ago by attosoft

(In [308])  DelForExp によるソースフォーマット (コード整形)
(see #24)

comment:30 Changed 22 months ago by attosoft

(In [309]) リファクタリング:処理が重複しているイベントハンドラの整理
(see #24)

comment:31 Changed 22 months ago by attosoft

(In [310]) リファクタリング:Main.dfm のインデント ([304] で差分計算のためあえてインデントせずに挿入した TPanel の子オブジェクトをインデント)
(see #24)

comment:32 Changed 22 months ago by attosoft

(In [311]) UI 設計時に参照される以下のプロパティを指定。実装コードには不要だが、変更内容から毎回削除するのが手間なためコミット。

  • TForm.Left, Top プロパティ
  • TPanel.DesignSize プロパティ

(see #24)

comment:33 Changed 22 months ago by attosoft

(In [312]) メインダイアログ以外のフォームの遅延作成。アプリケーション起動時に全てのフォームを自動作成せずに、初回表示時に Create する。

  • フォーム参照箇所で、フォームが未作成の場合を考慮
  • 設定ファイルの設定読込/保存
    • 一括読込をやめ、各フォームの FormCreate で個別に設定を読み込む
  • 右クリックからの選択文字列の検索
    • イベントハンドラを TPopupMenu.OnPopup から TMemo.OnContextPopup に
  • フォームメンバの参照方法
    • Create 関数内ではフォーム変数ではなく self 修飾に
      • フォーム変数は Create 関数内では初期化前
    • 冗長なフォーム変数経由の参照を削除 (リファクタリング)
    • NTFS変換ボタンクリック時のドライブ指定の誤りを修正

(see #24)

comment:34 Changed 22 months ago by attosoft

(In [313]) Windows Vista, 7 などの考慮。起動時にエラーとならない程度の対応を行う。(正式には対応しない)

  • Windows のバージョンチェック
    • XP 以降の Windows の場合は XP とみなす
  • ドライブ一覧の取得
    • エラー:ハードディスク以外のドライブにアクセスしていた一部の処理を修正
    • リファクタリング:重複コードの整理
  • サービス一覧の取得
    • エラー:管理者権限がなく一覧が取得できない場合を考慮
  • ネットワークアダプタ一覧の取得
    • エラー:一覧の項目数を表す変数が適切な値とならない場合があるため修正

(see #24)

comment:35 Changed 22 months ago by attosoft

(In [314]) 設定項目実装 (読込/設定、保存/復元) を一通りチェック。

  • システム(2), システム(4): 安全のためデフォルトで設定不可に
    • オプションから設定項目の無効化を解除できる
  • システム(4): 設定無効時は値指定ではなく値を削除する
  • システム(10): XP SP2 用の設定から全てのサービスパック用の設定に
    • Windows XP の場合に設定不可としないように変更
  • デスクトップ(10): スタートアップの種類の保存・復元に対応
  • 設定変更時/設定復元時のダイアログ表示の抑制
    • エクスプローラ(8), サービス
  • 復元時にバックアップ値がない場合は値削除ではなくデフォルト値を指定
    • 起動・終了(6), (7), その他(1)
  • その他(1): WMP 7.1, 9.0, 10.0, 11.0 への対応
  • サービス停止時のスタートアップの種類を「無効」から「手動」に変更
  • 復元時に システム(4) や その他(8) が正しく復元されない場合がある問題を修正
  • 復元の対象から「パソコン情報」の項目 (使用者、会社名、コンピュータ名) を除外
  • 復元関数:バックアップ値が NULL の場合はレジストリ値を削除する

(see #24)

comment:36 Changed 22 months ago by attosoft

(In [315]) Windows 9x 対応。

  • Windows 9x の場合はサービスボタンをグレーアウト
  • 低解像度で十分な高さがない場合は、フォーム全体やすべてのボタンが表示領域内に収まるように調整
  • 256 色表示の場合はアイコンボタンのビット数を調整
    • ※ 8 bit 画像でもパレットの関係で 256 色表示されないため

(see #24)

comment:37 Changed 22 months ago by attosoft

(In [316]) 解説エリアの初期内容とサービスの解説文を全面的に書き直し。
(see #24)

comment:38 Changed 22 months ago by attosoft

(In [317]) TMemo コントロールに左右マージン (3ピクセル) を設定。
(see #24)

comment:39 Changed 22 months ago by attosoft

(In [318]) 画像リソースの修正。透過色と同色の領域が透過領域とみなされないよう調整。
(see #24)

comment:40 Changed 22 months ago by attosoft

(In [319]) 各種リソース (文言、URL、プロパティなど) をまとめて更新。

  • メッセージダイアログ
    • s/環境設定/オプション/g
  • 解説文
    • s/Attosoft/attosoft/g
    • s/[詳しい解説]欄/[解説] エリア/g
    • s/[e]ボタン/[i] ボタン/g
    • s/Win高速化 PC+.exe/win_accelerator.exe/g
  • オプションダイアログ
    • 自動バックアップしない設定が非推奨である旨を追記
  • URL の更新
  • 冗長なプロパティ指定の除去 (ParentFont, ParentColor)
  • 使用されていない変数の削除

(see #24)

comment:41 Changed 22 months ago by attosoft

(In [320]) TForm.BorderStyle = bsNone 指定時のフォームのサイズと配置に関する VCL のバグへの対応。

  • TForm.WindowState = wsMaximized でタスクバーを覆うサイズに最大化される
    • ClientHeight に Screen.WorkAreaHeight (ディスプレイの作業領域) を設定
  • TFrom.Position = poScreenCenter で画面中央より下にずれて配置される
    • ※ タスクバー (あるいはアプリケーションのタイトルバー) の幅を考慮していないと思われる
    • 十分な画面の高さがない場合にデスクトップ領域内にフォームを収める処理 ([315]) をより適切な形に修正
      • 数値指定ではなく Screen.WorkAreaHeight を使用するように変更
      • ※ 十分なデスクトップ領域がある場合は、ずれに気づきにくいため対応しない

(see #24)

comment:42 in reply to: ↑ 4 Changed 22 months ago by attosoft

  • Description modified (diff)
  • Summary changed from Win高速化 Classic version 1.0 リリース to Win高速化 PC+ v1.93 の開発

変更が多くなってきたため Win高速化 PC+ v1.93 と Win高速化 Classic 1.0 (#26) のチケットに分割。

comment:4 への返信

方針を変更し、操作性や可読性などを改善するため以下の機能を追加および削除する。

対応済みの以下の項目を除き、原則対応を保留する。

追加する機能
  • ウィンドウリサイズ
  • 解説文の外部リソース化

comment:43 Changed 22 months ago by attosoft

(In [321]) Win高速化 PC+ v1.93 タグ
(see #24)

comment:44 Changed 22 months ago by attosoft

リリース ZIP を Windows Live SkyDrive にバックアップ。

※ Delphi 7 ではデバッグビルドとリリースビルドの設定を別々に管理することができない。リリースビルドを行う際はプロジェクトオプションを次のように変更しておく必要がある。

コンパイラ
  • コード生成
    • [最適化] ON
    • [スタックフレームの生成] OFF
  • デバッグ - すべて OFF
    • [デバッグ情報]
    • [ローカルシンボル]
    • [シンボル情報]
    • [アサートの使用]
    • ![デバッグ版 DCU を使う]
リンカ
  • マップファイル
    • [なし] を選択
  • EXE/DLL オプション
    • [TD32 デバッグ情報を含める] OFF
    • [リモートデバッグ情報を含める] OFF

comment:45 Changed 22 months ago by attosoft

  • Status changed from new to closed
  • Resolution set to 修正済み

comment:description のタスクが完了したためチケットをクローズします。

View

Add a comment

Modify Ticket

Action
as closed
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.