喫茶XRAYトップページ

[スレッド全体
]

[8055] ネタ元 スーパーサイヤ人?返信 削除
2014/10/3 (金) 18:17:35 Mr.XRAY
> ポップアップメニュー(TPopupMenu) の Item を文字列ではなく,
> 画像にする例です.


大体まとまったので.ネタ元の紹介です.
http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201410/14100001.txt

テスト用のプロジェクトのソースがダウンロードできるようですが,
クリックしたら変な画面なのでやめました (^^;
Okiitan なんてのが付いてくるかも知れないので(笑)
どなたか勇気のある方がやってみて,大丈夫だったら挑戦してみます.

それにしても「超高校生級の初心者」ですか,
「スーパー高校生級」だけど初心者ですか?
昔,「スーパーサイヤ人」というのが登場するアニメがありましたが...
「スーパーマン」とかね....


[8056] スーパーサイヤ人返信 削除
2014/10/3 (金) 18:33:51 Mr.XRAY
> 昔,「スーパーサイヤ人」というのが登場するアニメがありましたが...

確認してみました.
[サイヤ人 - Wikipedia 超サイヤ人]
http://ja.wikipedia.org/wiki/%E3%82%B5%E3%82%A4%E3%83%A4%E4%BA%BA#.E8.B6.85.E3.82.B5.E3.82.A4.E3.83.A4.E4.BA.BA


[8057] Re:ネタ元 スーパーサイヤ人?返信 削除
2014/10/3 (金) 18:35:06 igy
▼ Mr.XRAYさん
> それにしても「超高校生級の初心者」ですか,

超高校級とは - はてなキーワード - はてなダイアリー
http://d.hatena.ne.jp/keyword/%C4%B6%B9%E2%B9%BB%B5%E9

他の人から言われるのは、わかりますが、自分で名乗るのは・・・


[8058] Re2:ネタ元 スーパーサイヤ人?返信 削除
2014/10/3 (金) 18:43:39 Mr.XRAY
▼ igyさん

> 超高校級とは - はてなキーワード - はてなダイアリー
> http://d.hatena.ne.jp/keyword/%C4%B6%B9%E2%B9%BB%B5%E9


ハハハッ.Delphi を使う人にもすごい人がいるんですね(半可通)


[8061] 勇気のある人いませんか?返信 削除
2014/10/4 (土) 18:50:25 Mr.XRAY
>大体まとまったので.ネタ元の紹介です.
>http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201410/14100001.txt


>テスト用のプロジェクトのソースがダウンロードできるようですが,
>クリックしたら変な画面なのでやめました (^^;
>Okiitan なんてのが付いてくるかも知れないので(笑)
>どなたか勇気のある方がやってみて,大丈夫だったら挑戦してみます.


勇気と度胸のある人いない?
「超高校生級」というのに興味を持ったのでレスしようと思っているんですが (^^;


[8062] Re:勇気のある人いませんか?返信 削除
2014/10/4 (土) 21:08:26 Mr.XRAY
清水の舞台から飛び降りるつもりでダウンロードしてみました.
特に問題は発生していません(^^;
Delphi 7 以前のコードのようです.
質問の文章にあった MenuChanged を使用してる部分が分かりました.

Timer1 イベントのコードを書きかえれは,チラつかなくなるようです.
動作確認は Windows 7 U64(SP1) + Delhpi XE(UP1) Pro です.


procedure TformMain.Timer1Timer(Sender: TObject);
var
  ...
  ...
  hPopupWnd : HWND;      //追加
  Flags     : Cardinal;  //追加
begin
  ...
  ...
//    mi.MenuChanged(True);  //削除.本人も激しくチラつくと書いている

    hPopupWnd := FindWindow(PChar(#32768), nil); //追加
    Flags := RDW_INVALIDATE or RDW_UPDATENOW;    //追加
    RedrawWindow(hPopupWnd, nil, 0, Flags);      //追加
  end;
end;

「超高校生級」でも難問だったようですが
問題が発生したら,いろいろ調べてみることですね.
MenuChanged は構造の変更があった場合なので,ウィンドウの更新ではなく,
全て再作成ということでしょう.

[Vcl.Menus.TMenu.MenuChanged - RAD Studio API Documentation]
http://docwiki.embarcadero.com/Libraries/XE7/ja/Vcl.Menus.TMenu.MenuChanged


こんなやつです.
TPanel 上の TPaintBox に描画している画像を TPopupMenu に表示するようです.
というか,TPanel のイメージを TMenuItem の Canvas に描画しています.


[8063] RedrawWindowの効果返信 削除
2014/10/5 (日) 13:00:12 Mr.XRAY
プロジェクトをダウンロードして,Delphi を起動して確認するのは面倒だ.
という方に,MenuChanged と RedrawWindow による違いを確認できるように,
実行ファイル (EXE) だけを UP しておきました.
興味のある方はどうぞ.
Windows 7 U64(SP1) + Delphi XE(UP1) Pro で作成しています.

http://mrxray.on.coocan.jp/Delphi/zip/PopupMenu_ImageItem_QandA.zip


[8064] FindWindow の引数を修正返信 削除
2014/10/5 (日) 20:02:49 Mr.XRAY
>     hPopupWnd := FindWindow(PChar(#32768), nil); //追加

まずい!!
引数で PChar の使用方法には要注意ですね.
一応期待通り動作はしますが...
既に UP しているファイルも以下に修正しました.
ついでに,少しコードの一部も修正・変更しています.

    hPopupWnd := FindWindow('#32768', nil); //追加


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82