フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: 1 [2] 3 4 5
トピック: SynTaskDialog 改
DEKO
管理者
投稿数: 2691
Mod 10 の改良点
on: 2013/10/13 17:49 Sun

[修正点]

  • ダイアログの幅の計算にチェックボックスの幅と展開ボタンの幅を考慮するようにした (代替ダイアログの場合)
DEKO
管理者
投稿数: 2691
展開テキストが実装されていない理由
on: 2013/10/13 21:14 Sun

理由はいくつか考えられますが、一番の問題はこのボタンの挙動でしょう。

普通のボタンに見えますが、このボタンは標準のテーマでは描画できません。何故ならこのボタンのテーマは TaskDialog のもの (TDLG_EXPANDBUTTON) だからです…このテーマは XP には存在しないのです。これを BMP で保存して利用するというテもありますが、テーマが変われば浮いてしまいますし、クラッシック表示では描画がまた異なっています。

さらにこのボタン、本体はキャプション部まであります (赤い部分を押すと反応する)。つまり、Checkbox と同じようなスタイルのボタンだという事です。クラッシック表示の場合、展開ボタンはスクロールバーのパーツで描画されていますので、これに倣ってオーナードローの TCheckBox をまず最初に作る必要があるようです。

…はぁ、面倒くさい。

DEKO
管理者
投稿数: 2691
Mod 11 の改良点
on: 2013/10/14 03:28 Mon

[修正点]

  • コモンボタンの順序が正しくないバグを修正 (代替ダイアログ)
  • 展開テキスト用のボタン (TExpandButton) を作成 (代替ダイアログ)

説明:
展開テキスト用のボタンのためのユニットが増えています。これだけのためにコンポーネントを作るのは嫌だったのですが、後々の事を考えるとコンポーネントを作った方がいいかと思いまして。まだボタンを押しても何も起きません (状態は変わらない) 。

ThemeServices.DrawElement() / DrawFrameControl() で描画しているのでテーマが変わってもボタンだけが (見た目上) 浮く事はありません。

DEKO
管理者
投稿数: 2691
Mod 12 の改良点
on: 2013/10/14 05:09 Mon

[修正点]

  • 展開テキスト用のボタンコンポーネント (TExpandButton) を Delphi 2007 ~に対応 (代替ダイアログ)

説明:
Delphi 2007 までは対応させましたが、2006 またはそれ以前には対応していません。Vista に対応できない 2006 またはそれ以前はとりあえず無視する事にします…だって、これって Vista 以降のタスクダイアログの代替ダイアログ用ですからね。Vista に対応できない Delphi 用に作ってもあまり意味はないように思います。

オーナードローのやり方は Delphi のバージョンに依存します。そのバージョンの流儀でオーナードローしないと正しく描画されない事があります。テーマとかを無視した完全独自のオーナードローであれば話は別ですが…。

DEKO
管理者
投稿数: 2691
Mod 13 の改良点
on: 2013/10/14 19:00 Mon

[修正点]

  • 展開テキストを実装 (代替ダイアログ)
  • コマンドリンクとラジオボタンを同時に指定した時の並びが逆だったのを修正 (代替ダイアログ)
  • ソースコードを整理

説明:
展開テキストを実装しました。すべての組み合わせを確かめた訳ではありませんが、そこそこマトモに動作するようです。

修正箇所が多すぎてコメントだらけになったのでコメント行をバッサリ消しました。次はクラシック表示の件ですが EmulateClassicStyle の実装が若干意味不明 (クラシックだと強制的に代替ダイアログになる) なので、この機能は使えなくすると思います。

DEKO
管理者
投稿数: 2691
Mod 14 の改良点
on: 2013/10/14 21:14 Mon

[修正点]

  • コントロールの位置調整 (代替ダイアログ)

説明:
コントロールの見た目で判るようなのを除けば、代替ダイアログなのかネイティブなのか区別が付かないかもしれません。

DEKO
管理者
投稿数: 2691
Mod 15 の改良点 (とりあえず完成)
on: 2013/10/14 23:05 Mon

[修正点]

  • コントロールの位置調整 (代替ダイアログ)
  • クラシック表示での位置調整 (代替ダイアログ)
  • EmulateClassicStyle を機能しないようにした。

説明:
細かい差異はありますが、とりあえず完成です。普通に使う分には問題ないでしょう。

まだ XE でしかテストしていませんので、2007 とかではコンパイルできないかもしれません。2007 でも動作しました。

DEKO
管理者
投稿数: 2691
Mod 16 の改良点
on: 2013/10/15 03:59 Tue

[修正点]

  • Delphi 2009 またはそれ以降かつ、フラグに tdfEnableHyperLinks が指定されている時はハイパーリンクを利用可能にした (代替ダイアログ)
  • ハイパーリンクがクリックされたら ShellExecute() で URL を open するようにした。

説明:
Delphi 2009 またはそれ以降でフラグに tdfEnableHyperLinks が指定されていたら TLinkLabel (Delphi 2009 以降に付属。XP でも利用可能) を使うようにしました。多分、URL をブラウザで開く以外の事はやらないと思うので、URL をそのまま ShellExecute() で open しています。

ハイパーリンクは コンテンツ / フッターテキスト / 展開テキスト内で有効です。また、ハイパーリンクはクラシック表示でも機能しますが、アプリケーションのランタイムテーマが有効でないと機能しません。平たく言えば、アプリケーションにアプリケーションマニフェストが含まれていなければなりません。これはオリジナルのタスクダイアログにも存在する制限です。

See Also:
[Vcl.ExtCtrls.TLinkLabel (DocWiki)]
http://docwiki.embarcadero.com/Libraries/ja/Vcl.ExtCtrls.TLinkLabel

[TLinkLabel (totonica)]
http://www.watercolor-city.net/ct_delphi/delphi_tiburon/doc_vcl/vcl_linklabel.htm

DEKO
管理者
投稿数: 2691
Mod 17 の改良点
on: 2013/10/15 16:49 Tue

[修正点]

  • 問い合わせダイアログと選択リストダイアログを使えるようにした (代替ダイアログ)

説明:
オリジナルのタスクダイアログには存在しない機能ですが、一応使えるようにしてみました。問い合わせダイアログは高機能な InputQuery() / InputBox() といった所です。

DEKO
管理者
投稿数: 2691
Mod 18 の改良点
on: 2013/10/15 22:29 Tue

[修正点]

  • アイコンを指定した時のラジオボタンとコマンドリンクの位置を調整した (代替ダイアログ)
  • tdfPositionRelativeToWindow を指定した時の挙動を修正した (代替ダイアログ)

※ 続きは ↓ の Page [3] をクリック。

ページ: 1 [2] 3 4 5
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.04 sec.