• ベストアンサー
  • 暇なときにでも

丸いボタンを作りたいが…

VBに限らず、ほとんどのAPはボタンが四角い表示になっています。それを、丸型のボタンにしたいのですが、ご存知の方がおられたら、表示する方法をご教授していただきたいのですが(ボタンそのものを、丸型にしたい…)。 ちなみに、APIを使用してウィンドウ(フォーム)を丸型(厳密には楕円)にすることが出来たのですが、ボタンは出来ませんでした。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数2280
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.3
  • haporun
  • ベストアンサー率40% (230/562)

イメージコントロールで作りましょう。 古くからのゲームなどでは、イメージコントロールを使ってボタンを作っています。 以下の方法は、円くない変な形をしたボタンを作ろうと思ったときの改造が面倒で、ファイルサイズもでかくなりますが、円いなら比較的簡単です。 透明色が使えるGIFかアイコンで、ボタンを押していないときと押しているときの絵を作ります。(別に使うユーザーのフォームの色に対応しないというなら、透明色でなく固定色でもかまいませんが) 例 -------------------------------------------------- Image2に押していないときの分、Image3に押しているときの分を貼り付けたとして、Image1をボタンにしたいとき、 Dim ButtonFlag As Boolean Private Function IsInImage(ByVal X As Single, Y As Single) As Boolean '以下の定数は楕円の大きさによって変えてください IsInImage = (X ^ 2 / 9 + Y ^ 2 / 16 <= 129600) End Function Private Sub Form_Load() Set Image1.Picture = Image2.Picture End Sub Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If (Button = vbLeftButton) And IsInImage(X, Y) Then Set Image1.Picture = Image3.Picture ButtonFlag = True End If End Sub Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Set Image1.Picture = Image2.Picture If ButtonFlag Then 'クリックイベントを記述してください End If ButtonFlag = False End Sub -------------------------------------------------- 長くてごめんなさい。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 最大化ボタンを非表示にしたい(VB.NET)

    使用言語はVB.NETです。 フォームの最大化ボタンを使いたくなかったので、 MaximizeBoxをFalseに設定しました。 これでとりあえず、最大化ボタンを押すことは 出来なくなりましたが、表示そのものは残って しまっています。 表示そのものを消すことは出来ないのでしょうか? (最小化ボタンと閉じるボタンのみの表示にしたい) ご教授くださいませ。

  • キャンセルボタンの無効

     いつもお世話になっています。  あるインストーラ(VBで作ったもの)をshell関数からキ起動させています。  インストールが完了するまでにいくつかウィンドウが出てきますが、  ユーザーには触らせたくないので、全部制御しています。  (全部SendKeysでOKボタンを送っています)。  でも1点だけできなくて困っていることがあります。  進行状態が分かり(~%と表示されている)、キャンセルボタンがついている  ウィンドウの制御です。  キャンセルボタンしかないので、SendKeysでキーを飛ばすわけに  いかず、このキャンセルボタンを無効にできないものかとネットで  調べましたが、私が見たものは×ボタンの制御しかありませんでした。  そこで質問です。  API関数で、キャンセルボタンを制御できるものはありませんか?  よろしくお願いします。

  • グラフィカルボタン

    VBの標準のボタン(四角)では、かっこ悪いため、 インターネット上でよく見られるようなグラフィカルなボタン(画像の形とか円形とか楕円刑とか)を取り入れたいと思っています。 ImageコントローラにPictureを設定して、Clickイベントを取れば、簡単にできますがこの方法では、ボタンを押した感覚がしないのとボタン表示文字列が変更できません。 ご存知の方いらっしゃいましたら、どうか宜しくお願いします。

その他の回答 (3)

  • 回答No.4
  • haporun
  • ベストアンサー率40% (230/562)

ごめんなさい。 ちょっと間違えました。 下のほうを↓に修正してください。 Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Set Image1.Picture = Image2.Picture If ButtonFlag And IsInImage(X, Y) Then 'クリックイベントを記述してください End If ButtonFlag = False End Sub

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • mfuku
  • ベストアンサー率50% (173/345)

コムラッド社から、 「ボタンデザイナー Ver.1.0」 というActiveXコントロールが出てます。 それを使えば、ボタンの外観は自由にデザインできます。 一応ご参考までに。

参考URL:
http://www.comrade.co.jp/package/bd1.htm

共感・感謝の気持ちを伝えよう!

  • 回答No.1
noname#2829
noname#2829

私自身も素人なのではっきりしたことは言えませんが、API関数を使っても実現はしないと思います。 実現方法は2つ考えられます。1つは市販のActiveXコントロールで丸いボタンを購入すること。もう1つは自力でCOMコンポーネントを構築することです。但し、後者については通常C/C++などのツールを使うのが一般的でしょう。なぜならVB自体はRADツールという特性をもつからです。 VBとは「少ない知識と技術でまあまあのものいい加減にしかも早く作ることができるツールである」と理解しましょう。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • フォームの×ボタンを無効にするには

    C#.NETでプログラミングしています。 フォームの×ボタンを無効にするために「RemoveMenu()」を使っていますが、処理の負荷が大きくなった時に一旦別のウィンドウに隠して再表示したときに×ボタンが有効になってしまいます。 最小化ボタンが必要なので、ControlBoxを無効にすることもできません。 なんとか回避する方法はないでしょうか。

  • メッセージボックスの選択ボタンのテキストを変更したい

    メッセージボックスに表示される はい、いいえ、キャンセルのボタンのテキストを 自由に変更したいのですが何か良い方法があったら教えてください。 フォームを作ってメッセージボックスと同じものを作る方法ではなく、 MsgBox関数で表示されるものを変更したいです。 考え付いた方法ですが、メッセージボックスが表示された直後に APIのFindWindowなどでハンドルを調べて SendMessageでテキストを変更しようと思うのですが、 もっと良い方法があったらご教授いただけないでしょうか。 よろしくお願い致します。

  • 教えてボタンの作り方について

    win32APIを利用してC/C++でゲームを作ってみようと思い勉強しています。そこで質問です。 ボタンを作る時CreateWindow関数でボタンコントロールは作れるのですがその場合ボタンのグラフィックスをオリジナルのものにしてボタンを作る方法ってありますか?標準コントロールなのでやはりオリジナルのものは作れないのでしょうか?だとするとどの様にオリジナルのボタンを作ればよいのでしょうか?オリジナルのコントロールを作りたいです。 もう一つ質問があります。ダイアログボックスなどでリソースファイルを使ってボタンを配置する場合とウィンドウを作ってボタンを配置する場合とでボタンのデザインが違います。OSはXPを使用しているのですがXPのデザインのボタンをウィンドウに配置したい場合の方法を教えてください。

  • Internet Explorer(ブラウザ)の閉じるボタンを無効にする方法

    あるAPからInternet Explorerを起動してウィンドウハンドルを取得し、 そのウィンドウハンドルから閉じるボタンを無効にしようとしています。 色々試してみました。 ダイアログでのテストでは、閉じるボタンを無効にできたのですが、 Internet Explorerでは、うまく動きませんでした。 Internet Explorerの閉じるボタンを無効にする事は可能なのでしょうか? ウィンドウハンドルを用いらない方法もあるのでしょうか?? 助けて下さ~い………。

  • これって可能でしょうか?(起動しているフォームのみの稼動)

    VBの超初心者です。 以下の様な事は可能なのでしょうか? フォームAからあるボタンを押してフォームBを起動する。 フォームBが立ち上がっている時は、フォームBしか使用できないようにする。 (つまり、フォームBが全画面表示でタスクバーも表示されず、他のプログラムも  使用不可になる。) 表示タイプをモーダルにして、フォームAを使用不可にする事は可能だったんですが 他の常駐しているプログラムも使用不可にしたいのです。 有識者の皆様、どうぞご教授下さいませ。 宜しくお願い致します。

  • VBのフォームにAccessのクエリは表示できますか?

    VBのフォームにAccessのクエリは表示できますか? VB2008EEを使用しています。 Access(2007)で作ったクエリをVBで表示する事って出来るのでしょうか?もし出来るのであれば、その方法を教えてください。 ご教授の程、よろしくお願いします。

  • DataGridViewでのボタン処理

    お世話になります。 VB.NET2005のWindowsフォームにおいて、 DataGridViewを使用しています。 一番左の桁にボタンを表示しています。 このボタンを押すと、その行を削除する ロジックを作成しているのですが、 苦戦しております。 ご教授いただけると幸いです。

  • ツールバーのボタンの画像

    ファイル名取得用のダイアログとしてGetOpenFileNameを 使っています。この時、画面右上のツールバーのボタンの 画像がVBの時と、Cの時で異なります。 VBでは画像の上の段のようにカラフルで立体的なボタンに なりますが、Cだと下段のように平面であまりカラフルでは ないものになります。 Cでやる時にもVBのようなボタンにしたいのですが、何か 方法をご存知の方がいたらご教授ください。

  • 複数ボタンの判別とフォーム表示

    いつもお世話になっております。 現在JSPを見よう見まねで勉強しております。 登録、修正、削除のボタンをつくり、ボタンが押されたら、 登録用、修正用、削除用それぞれのフォームをボタンの下に表示させる動きのものを作成しようとしております。 どのボタンが押されたかを判別する方法。 同一ページに新たにフォームを表示させる方法。 この2点がどのように作ればよいのかが今一わからずにいます。 どなたかご存知の方がいらっしゃいましたらご教授お願い致します。

    • ベストアンサー
    • Java
  • ユーザーフォームのコマンドボタンをマクロで操作したい

    Excel97でユーザーフォームを出しながらセルに入力できるようにしたいので、 http://www.ap.wakwak.com/~miko/Excel_Note/11-01_userform.htm#11-01-13 このサイトに書かれているように、ユーザーフォームにコマンドボタンを作成して、 ボタンのコードを  Private Sub CommandButton1_Click()   Application.GetOpenFilename  End Sub とし、「ファイルを開く」ダイアログを表示させてキャンセルするようにしたのですが、 この「コマンドボタンをクリックしてファイルを開くダイアログをキャンセルする」操作は 自動化できるのでしょうか? パソコンに慣れていない人用に作っているものですので、できるだけ使う人の操作を 少なくしたいのです。 ブックを開いた時にユーザーフォームを出すところまではできたのですが、 ユーザーフォームのコマンドボタンを自動的にクリックしてダイアログを キャンセルする方法がわかりません。 ご存知の方、どうぞよろしくご教授お願いいたします。 使用しているのは、 OS:Windows98SE ソフト:Excel97 です。