(*´д`*)アハァ… VB初心者質問スレ Part18

このエントリーをはてなブックマークに追加
>>951
ヘルプみろ
>>948
ホレ、適当だ

Type RECT
  Left As Long: Top As Long: Right As Long: Bottom As Long
End Type
Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
Declare Function OffsetRect Lib "user32" (lprc As RECT, ByVal dx As Long, ByVal dy As Long) As Long
Declare Function InflateRect Lib "user32" (lprc As RECT, ByVal dx As Long, ByVal dy As Long) As Long
Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Declare Function CreateRectRgnIndirect Lib "gdi32" (lprc As RECT) As Long
Declare Function CombineRgn Lib "gdi32" (ByVal hrgnDest As Long, ByVal hrgnSrc1 As Long, _
    ByVal hrgnSrc2 As Long, ByVal fnCombineMode As Long) As Long
Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Public Const RGN_DIFF = 4

Sub KURINUKU()
  Dim rct As RECT, hwndForm As Long, hRgn As Long, hRgnTemp As Long

  hwndForm = Me.hWnd
  GetWindowRect hwndForm, rct
  OffsetRect rct, -rct.Left, -rct.Top
  hRgn = CreateRectRgnIndirect(rct)
  InflateRect rct, (rct.Right - rct.Left) \ -4, (rct.Bottom - rct.Top) \ -4
  hRgnTemp = CreateRectRgnIndirect(rct)
  CombineRgn hRgn, hRgn, hRgnTemp, RGN_DIFF
  DeleteObject hRgnTemp
  SetWindowRgn hwndForm, hRgn, 1
End Sub
954初心者:02/12/14 01:44
誰か、初歩的過ぎて、どこ探してもないので、助けて下さい(´Д`;)
以下は、利用者のとる行動です。

コマンド1をクリック→――→―→コマンド4をクリック→・・・
コマンド2をクリック――→↑
コマンド3をクリック――→┘       

上のように、コマンド1をクリックしたか、コマンド2をクリックしたか、
コマンド3をクリックしたかで、その後のコマンド4をクリックした時の、
(コマンド4以降のイベント等を含む)
処理を場合わけしたいのですが、どのようにしたらうまくいきますか?


   
↑↑↓↓←→←→BA
自爆しました。
>>954

Dim BtnFlag As Integer

Private Sub Command1_Click()
  BtnFlag = 1
End Sub

Private Sub Command2_Click()
  BtnFlag = 2
End Sub

Private Sub Command3_Click()
  BtnFlag = 3
End Sub

Private Sub Command4_Click()
  Select Case BtnFlag
    Case 1
      '1の処理
    Case 2
      '2の処理
    Case 3
      '3の処理
  End Select
End Sub


こういう事なのかわからんが、適当に書いてみた。
ま、後は自分で調べて応用してくれ。
958_:02/12/14 03:36
>>957
こっちのほうが良くねぇべか?
コマンドボタンを配列にしてさ。

private sub Connmand1_Click(Index as integer)

    static intIndex as integer

    select case index
    case 0 : intIndex = index
    case 1 : intIndex = index
    case 3 : intIndex = index
    case 4
        select case intIndex
        case 0 '1の処理
        case 1 '2の処理
        case 2 '3の処理
        end select
    end select

end sub
同僚に全部のボタンを配列にして、
一つのハンドラで処理を切り分けてた奴がいたな。
Case文がズラズラならんでindexで切り分けるから読みづらかった、
せめてindexにConstで名前付けといてくれればいいのに。

利点はボタンのEnable=Falseなんかは共通して一つ書くだけで済むこと。
欠点はフォームのボタンをダブルクリックしても、
処理を参照するのにスクロールせにゃならん事。

CのSDK方式か、MFC方式かって感じだな。
960957:02/12/14 04:10
>>958

確かに、配列を使うのもアリだが・・・しかし、
質問の内容のレベルから考えて、
「コマンドボタンを配列に・・・???」
なんて聞き返されても困るし、この方がわかりやすいかと思ってな。

・・・それはそうと、caseに与える数字、間違ってるよ・・・(;´Д`)
相手のレベルに合わせるのもいいが普通に考えたらこれだろ。
コマンドボタン1〜3がコントロール配列、4が単独。
まあコマンドボタンとかの用途にもよるから一概にこれが最適とは言えんが。
(飛躍させるとstateパターンとか使えってことになるかも知れんし)

Private intIndex As Integer
Private Sub Command1_Click(Index as Integer)
  intIndex = Index + 1 'これ押されないでCommand2を押した場合のための+1ね
End Sub

Private Sub Command2_Click
  Sselect Case intIndex
  Case 1 '1の処理
  Case 2 '2の処理
  Case 3 '3の処理
  End Select
End Sub
普通に考えたらラジオボタン
今、>>962が良いこと言った。
UI的に間違っていると思われ。
964デフォルトの名無しさん:02/12/14 10:43
Photoshopのようにメニューからファイルオープンして、その画像を新たなウインドウに表示するときに
新しく生成されたウィンドウのサイズを右下の部分をつまんで動かしたときに
スライダ出てくるようにするにはどうすれば良いんでしょう?
スライダコントロールって使ったことないけどあるよな。
966デフォルトの名無しさん:02/12/14 11:13
Photohopのように、メニューからファイルオープンで新しいウィンドウ開いて
そこに画像を表示させたいのですが、ウィンドウの右下部分をマウスでつまんで
サイズ変更するときに小さくしていく場合、画像の大きさよりもウィンドウが小さくなると
スライダーが出ますが、そのやり方がわかりません
どうすればいいんでしょうか?
えーっ!またー!?
968964:02/12/14 11:15
あれ?すんません、ミスって2こ書いてしまった
>>187
もしかしてジャンヌスレの81?
>>968
あれ?すんません、ミスって(さっきと同じスレに)書いてしまった


死ねマルチ。
971969:02/12/14 11:18
すみません誤爆してしまいました・・・
さんざんやな。
973デフォルトの名無しさん:02/12/14 15:15
次スレは?
974最凶VB厨房:02/12/14 16:19
【老若】VB.net質問スレ【男女】
http://pc3.2ch.net/test/read.cgi/tech/1025848458/
これ追加しといた方がよくねぇか?
975↑典型例( ´∀` ):02/12/14 16:20
>>974
別言後
>>975
誘導先として書いとくのがいいと思われ。
977デフォルトの名無しさん:02/12/14 16:50
最適化を探して一週間。
VB6.0ラーニングエディションには最適化ってないの?
有るとしたらどこに???
いい加減探し疲れた。
>>977
無い
>977
プロジェクトのプロパティの[コンパイル]タグって無いの?

まあ、最適化にこだわるならVBなんか使いなさんな。
980977:02/12/14 16:56
>>979
そこを何度見ても無いのよ・・・。
プロジェクト→○のプロジェクト→コンパイル(→最適化の詳細設定)
VB6.0ラーニングエディション には無いんじゃないか?
983977:02/12/14 16:59
>>981
それも無い・・・。
>>978>>982
そういうことですか・・・。
ラーニングエディションを買う俺は馬鹿?
>>983
別に
vbp直接変更して出来たりしないかな。
vbpにOptimizationType=0なんて項目ない?
986977:02/12/14 17:16
>>985
プロパティ自体がオブジェクト名の欄しかない・・・。
すまんね。
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
>>987
後はOverflowCheckとかを1にしてMsgBox CInt(32768)とかを
コンパイルして実行してみたら有効に働くかどうか分かるね。
>>987
にしてもvbpの中の項目にまで(tm)ついてるのね
(*´д`*)アハァ… VB初心者質問スレ Part19

まだー?
991デフォルトの名無しさん:02/12/14 18:55
立てますた。

(´∀` )エヘヘ VB初心者質問スレ Part19
http://pc3.2ch.net/test/read.cgi/tech/1039859691/
(*´д`*)アハァ… じゃないのかよ(;´Д`)
993デフォルトの名無しさん:02/12/14 19:07
1000取り合戦開始?
でも人いない
>>993

やる?
996デフォルトの名無しさん:02/12/14 19:11


Delphiやれ! デルファイ! でるふぁいまんせー!
996
1000!!
----------------------
1000 !!!

(´∀` )エヘヘ VB初心者質問スレ Part19
http://pc3.2ch.net/test/read.cgi/tech/1039859691/

----------------------
↓おめ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。