MDI形式で起動時にメニューを表示するには?


ひろみ  2006-10-04 05:34:57  No: 23458

MDI形式のプログラムを作成しています。

起動すると画面中央には何も表示されなくて
メニューバーの項目のみです。

今は、メニューバーを選択してリストの中から
項目を選択して画面を起動しています。(画面がさびしいかな)

それをプログラム起動後に
メニューバーの項目を画面にボタンを配置して
メニューを作成したいです。

このようなことができるのでしょうか?
よろしくお願いいたします。


ん〜  2006-10-04 07:03:06  No: 23459

>起動すると画面中央には何も表示されなくて
>メニューバーの項目のみです。

ひろみさんが、作成したアプリのコト?

>今は、メニューバーを選択してリストの中から
>項目を選択して画面を起動しています。(画面がさびしいかな)

MDIの子をメニューから選択して表示しているってコト?

。。。もう少し、分かりやすく書いていただけませんか。
そのほうが、レスが付きやすいですよ。


ひろみ  2006-10-04 10:21:27  No: 23460

すみません。説明不足で..

>起動すると画面中央には何も表示されなくて
>メニューバーの項目のみです。

そうです。私が作成したアプリです。

>今は、メニューバーを選択してリストの中から
>項目を選択して画面を起動しています。(画面がさびしいかな)

MDIの子をメニューから選択して表示していることです。

分かりますでしょうか?


こういうこと?  2006-10-04 21:25:39  No: 23461

>それをプログラム起動後に
>メニューバーの項目を画面にボタンを配置して
>メニューを作成したいです。

var
  MyButton: array of array of TButton;

procedure TMainForm.FormShow(Sender: TObject);
var
  x, y: Integer;
begin
  for x:=0 to MainMenu1.Items.Count-1 do begin
    SetLength(MyButton, x+1);
    for y:=0 to MainMenu1.Items[x].Count-1 do begin
      if MainMenu1.Items[x].Items[y].Caption = '-' then Continue;
      SetLength(MyButton[x], y+1+1);
      MyButton[x, y+1] := TButton.Create(Self);
      with MyButton[x, y+1] do begin
        Parent := MainForm;
        Width := 150;
        Height := 25;
        Top := y * (Height+4) + 90;
        Left := x * (Width+4) + 50;
        OnClick := MainMenu1.Items[x].Items[y].OnClick;
        Caption := MainMenu1.Items[x].Items[y].Caption;
        Enabled := MainMenu1.Items[x].Items[y].Enabled;
        OnMouseUp := MyButtonOnMouseUp;
      end;
    end;
  end;
  for x:=0 to MainMenu1.Items.Count-1 do begin
    MyButton[x, 0] := TButton.Create(Self);
    with MyButton[x, 0] do begin
      Parent := MainForm;
      Width := 150;
      Height := 25;
      Top := 50;
      Left := x * (Width+4) + 50;
      Caption := MainMenu1.Items.Items[x].Caption;
    end;
  end;
  MyButton[0, 1].SetFocus;
end;

procedure TMainForm.MyButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  a, b: Integer;
begin
  for a:=0 to MainMenu1.Items.Count-1 do begin
    for b:=0 to MainMenu1.Items[a].Count-1+1 do begin
      MyButton[a,b].Free;
    end;
  end;
end;


ひろみ  2006-10-04 23:59:51  No: 23462

ありがとうございます。

このようにも出来るんですね!
よく市販のアプリで初心者用にあるような??
メニューバーが分からない人のためにあるメニュー画面なんです。

メニューバーに”メニュー画面表示”を作成し
それをクリックしたらメニューが表示するように
しようかな...


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加