• 締切済み

Delphiでヘルプメニューを右端に

Delphi XE5を使っています。 ヘルプメニューを右端につけて、クリックしたらいくつかのサブメニューが表示され、そこから選択するようにしたいのですが、なにか方法がありますか? メニューがヘルプだけなので、普通のメニューだと左端になって使いにくいです。 右クリックで表示するメニューは、たまに使うユーザーにはわかりにくいでしょうし...

みんなの回答

回答No.2

Delphi XE5では、マルチプラットフォームで動作するFireMonkeyアプリケーション(FireMonkeyデスクトップアプリケーションやFireMonkeyモバイルアプリケーションなど)と、Windowsでのみ動作するVCLアプリケーション(VCL Metropolis UIアプリケーション・VCLフォームアプリケーション)を作成できます。 メニューの「ファイル」→「新規作成」→「その他」→「Delphiプロジェクト」で確認できます。 紹介したコードはVCLフォームアプリケーションで使用できます。 メニューの「プロジェクト」→「オプション」→「アプリケーション」→「表示」を選択すると、スタイルを設定することができます。 スタイルを設定すると、紹介したコードは機能しません。

kihonkana
質問者

補足

お手数をおかけして申し訳ありません。 動作確認のため、メニューだけのアプリケーションを作ってみたのですが、メニューは左端のままです。 新規作成で、VCLフォームアプリケーションを選択しています。 各メニューを追加し、@部分を変更しています。 ------------------------------------------ unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus; type TForm1 = class(TForm) MainMenu1: TMainMenu; Help1: TMenuItem; HelpEnglish1: TMenuItem; HelpJapanese1: TMenuItem; Contactus1: TMenuItem; Supportsite1: TMenuItem; Version1: TMenuItem; private { Private 宣言 } public procedure FormCreate(Sender: TObject); { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var MainMenu: HMENU; MenuItemInfo: TMenuItemInfo; Buffer:array[0..79] of Char; begin MainMenu := MainMenu1.Handle; MenuItemInfo.cbSize:=SizeOf(MenuItemInfo); MenuItemInfo.fMask := MIIM_TYPE; MenuItemInfo.dwTypeData := Buffer; MenuItemInfo.cch := SizeOf(Buffer); GetMenuItemInfo(MainMenu, Help1.Command, False, MenuItemInfo);@ここを変更(Help1.Commandに変更、HelpEnglish1.CommandでもNG)。 MenuItemInfo.fType := MenuItemInfo.fType or MFT_RIGHTJUSTIFY; SetMenuItemInfo(MainMenu, Help1.Command, False, MenuItemInfo); end; end.

回答No.1

VCLフォームアプリケーションでVCLスタイルを使用していない場合は、次のようなコードでメニュー項目を右寄せにできます。 procedure TForm1.FormCreate(Sender: TObject); var MainMenu: HMENU; MenuItemInfo: TMenuItemInfo; Buffer:array[0..79] of Char; begin MainMenu := MainMenu1.Handle; MenuItemInfo.cbSize:=SizeOf(MenuItemInfo); MenuItemInfo.fMask := MIIM_TYPE; MenuItemInfo.dwTypeData := Buffer; MenuItemInfo.cch := SizeOf(Buffer); GetMenuItemInfo(MainMenu, MenuItemHelp.Command, False, MenuItemInfo); MenuItemInfo.fType := MenuItemInfo.fType or MFT_RIGHTJUSTIFY; SetMenuItemInfo(MainMenu, MenuItemHelp.Command, False, MenuItemInfo); end; MainMenu1はTMainMenu、MenuItemHelpは右寄せにするTMenuItemのNameです。

kihonkana
質問者

補足

回答ありがとうございます。 >VCLフォームアプリケーションでVCLスタイルを使用していない場合は、... これはどこで設定するのでしょうか? いろいろ調べてみたのですが、よくわかりません。 お手数ですがよろしくお願いします。

関連するQ&A

  • delphiのヘルプの使い方.

    delphiで分からないことがあったら、どうやって調べていますか? できれば、ネットにつなげられない場合で、お願いします. Borland Delphi 6 Personal版の標準のヘルプは、今一つ使いにくいので、本があればいいのですが. 調べ方が悪かったのでしょうか? 今回は勉強のため、フォルダの中の一覧を表示し、フォルダがあればその中のファイル名・フォルダ名を再帰させて、処理させようとしたのですが、フォルダの中の一覧を表示させるヘルプではメソッドが分かりませんでした. linuxでいう、treeコマンドのようなソフトを作りたかったのですが. 勘違いがあるかもしれませんので、ただ単にフォルダの一覧させるソフトや一覧を調べるメソッドを聞いているのではありません. ヘルプの使い方や調べる効果的な方法を教えてください. ただ、通勤の合間の時間つぶしのdelphiのプログラミングなので、ネット以外での電子データでの効果的な調べ方がいいのですが.やはり難しいでしょうか?

  • Delphiで最前列にFormを表示し、フォーカス

    他のアプリを操作中に、Delphiで作成したFormをフォーカスを奪わずに表示する方法を調べています。 C++Builderなら 記事:最前面に表示するが、フォーカスは奪わない方法 http://ogawa-sankinkoutai.seesaa.net/article/115187189.html で出来るようですが、Delphiならどのようにすればいいんでしょうか? Delphi XE5 Starterを使っています。

  • DelphiXEでコンパイルできません

    先日DelphiXEを購入しました。 XE 超初心者なので,こんなことがと言わずに助けてください。 DelphiXEを起動して, 1 「Fileメニュー」から「新規作成」「フォーム- Delphi」で,Formを開く 2 FormにTbuttonを一個乗せて, 3 button1をWクリックして,procedure TForm1.Button1Clickにshowmessage('Hello');を記述 Delphi5までは,ここでF9を押せば直ちに実行できたはずなのですが,全く反応無し 「実行メニュー」も全てグレーアウトしたまま。 ヘルプも複雑すぎて・・・とっかかりが判らない。 Delphi XE Starter Essentials eBookもDLしてみたけど・・・英語力ゼロ 旧Delphi5のプロジェクトはちゃんとコンパイルできたのですが,XE上で新規作成の場合はなにか基本的な設定が足りないようです。 どうやったら,コンパイルできるのか教えてください。 なにとぞ,なにとぞ よろしくお願いいたします。 m(_ _)m

  • Delphi ShellTreeView

    Delphi 6 Personalで開発してます。 フォームで左側にShellTreeView、右側にListBoxを並べて ShellTreeViewでクリックされたフォルダにある CSV・TXTファイルをListBox側に表示するようにしてます。 が、ShellTreeViewで何かのフォルダをクリックした後、 別のコンポーネントをクリックすると、 せっかくShellTreeViewで選択された時の フォーカス(つまりフォルダ名の青色部分)が 消えてしまいます。 Widowsのエクスプローラーなどでは、 左側のフォルダをクリックしてから右のファイルをクリックすると、 左のフォルダは灰色にはなっても、消えはしませんよね。 どうにかする方法はないでしょうか?

  • エクセルのメニューバーの表示

    エクセルのメニューバーの表示が、ファイル・表示・ヘルプだけになってしまいました。 (しかも、「表示」を展開しても、標準・改ページプレビュ・ヘッダとフッタ・ズームの4つしか展開されません。) また、ツールバーを右クリックしても「ユーザー設定」は灰色となり、そこから展開できません。 どのようにしたら、メニューバーがフルに表示されるでしょうか。

  • プルダウンメニューの表示位置について

    画面左端にあるプルダウンメニューを表示すると画面からはみ出してしまい、メニューが読めません。ちなみに、視力が低いため、ユーザー補助の機能を使って文字を大きく表示しています。この状態で、プルダウンメニューが読めるようにするにはどうしたらいいですか?(左方向にプルダウンメニューが出てくるので、右方向にでてくるようにしたいのですが)

  • ビスタでスタートメニューにある「ヘルプとサポート」が表示されない

    ウィンドウズビスタでスタートメニューにある「ヘルプとサポート」をクリックしても、「インターネットエクスプローラーでは help-/をダウンロードできません」。とでてしまい表示されないのですが、どうやれば表示されるのでしょうか?

  • 言語バーのアイコンがヘルプだけになった

    言語バーに表示されるアイコンがヘルプだけになり、戻りません。 以前はヘルプだけの状態でも、メモ帳などのテキスト入力欄にフォーカスすると その他のアイコンが全て現れるという挙動をしていたので、いつから戻らなくなったのか分かりません。 ▲のボタンを押すと表示アイコンを弄れるという説明を見ましたが、 そもそもそこにはヘルプしか選択肢が表示されていません。 右クリックで言語バーの復元をする、という手段も見つけましたが、 言語バーの復元というメニューが無効状態で、クリックに反応しません。 なお、おかしくなる前からずっと言語バーはタスクバーに格納表示しています。

  • 右クリックで「ハイパーリンクの削除」のショートカットメニューを表示させたい

    Excel2003です 教えてください ハイパーリンクの削除について 「無効にするハイパーリンク をマウスの右ボタンでクリックし、ショートカット メニューの [ハイパーリンクの削除] をクリックします。 」とExcelのヘルプにあるのですが 私のExcelでは 右クリックしても[ハイパーリンクの削除]のショートカットメニューが表示されません。 右クリックで「ハイパーリンクの削除」を表示させる方法を教えて下さい。

  • 押されたキーにてポップアップメニューを切り替える

    OS:XP SP2 アプリ:Excel 2002 ワークシート上で右クリックにてポップアップメニューが表示されますが、Ctrl+右クリック、Shirf+右クリック、Alt+右クリックにて、独自のポップアップメニューを表示させようてしています。 プロジェクトにクラスモジュールを追加し下記の様に宣言しています。 Private WithEvents App As Application Private Sub Class_Initialize() Set App = Application End Sub 右クリックイベント内で現在押されているキーを判断することはできないでしょうか? Private Sub App_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) ここで押されたキーにて表示するメニューを切り替える End Sub 独自のポップアップメニューの追加/表示はできています。 ご教授のほど宜しくお願いします。

専門家に質問してみよう