1 :
デフォルトの名無しさん :
2007/07/10(火) 12:23:42
下らんネタスレまでリンク張る必要がどこにあるボケ。 そういうことはお前さんが自分で糞webページ立ち上げてそこで好きなだけやれよ。
7 :
デフォルトの名無しさん :2007/07/10(火) 13:36:15
VB2005なんすけど、OpenReadで直接URL叩いて読み込んだテキストを HtmlDocumentにする方法ってないっすか? OpenReadで読み込んでテキストにする前にHtmlDocumentにする方法でもいいっす。
8 :
デフォルトの名無しさん :2007/07/10(火) 15:52:59
>>1 まぁ乙
もすこしひねりのある一言追加がほしかったな
9 :
デフォルトの名無しさん :2007/07/10(火) 16:06:17
#Regoin で囲んだ領域のすべてを同時に閉じる便利な方法が あれば知りたく。 また、すべての関数プロシージャ、プロパティを同時に閉じたり 開いたりする方法もあれば、知りたいです。 もしご存知の方がおられましたら、すみませんが、教えてください。
>>7 HtmlDocumentはNotInheritabledだから直接は作れないみたいね。
この辺を使ってみたらどうでしょう。
WebBrowser.DocumentText
WebBrowser.DocumentStream
WebBrowser使うんだったら普通に表示してからDocumentプロパティで取得すればいいじゃない NotInheritabledだからインスタンス作れないってなにその理解
>WebBrowser使うんだったら WebBrowserに依存しないHTMLのパーサークラスってあったっけ? XmlDocmentだったらnewしてLoadでTextReaderかStringを渡せばOKだから、 Htmlでもそれと同じように出来ないかという質問だと思うのだが。
13 :
デフォルトの名無しさん :2007/07/10(火) 21:27:55
DataGridViewComboBoxColumn の使い方が分からない。 DataTableの値を、DataGridViewComboBoxColumnのDataSourceに設定すれば、 ValueMemberの値がDataPropertyNameで指定したフィールドに 入ってくれるんじゃないのか?? コンボボックスで選択する所までは、上手くいくのですが、 そこからフォーカスを移すと 「DataGridViewComboBoxCellの値が有効ではありません」と エラーメッセージが出てしまう。 そもそもDataGridViewComboBoxCellなんて何時使われているんだろか。 誰か助けてください!
14 :
デフォルトの名無しさん :2007/07/10(火) 21:35:00
使い方はそんなものだとおもうけど? 書き込み内容だけではよくわからんが 俺の記憶では DataGridViewComboBoxCellの値が有効ではありません が出た時、データソースにない値を入れようとしたらこうなったけど・・・・ 事例が違うし何とも言えないな
15 :
ももんが :2007/07/10(火) 21:37:09
V系好きな人がよく使ってる"リア友"ってどーゆー意味なの?
16 :
デフォルトの名無しさん :2007/07/10(火) 22:01:12
DataGridViewでデータテーブルをバインドさせているのですが 表示時のデータフォーマットの部分で詰まっています。 カラムAAAがあり型はStringです。 カラムBBBがあり型はStringです。 カラムAAAのデータはYYYYMMDDの形式で必ず8文字のデータがあります。 カラムBBBのデータはHHMMSSの形式で必ず6文字のデータがあります。 この両者をTextBoxColumnの列にデータをバインドさせて表示するときに AAAはYYYY/MM/DD BBBはHH:MM:SS とフォーマットして表示したいのですが、CellStyleプロパティのDataFormatに 0000/00/00や####/##/##を設定してもフォーマットしてくれませんでした。 解決策はないでしょうか?
WebBrowserでよみこんだHTMLページにイベント発生させるのってどうすればいいんでしょうか? 具体的には読み込んできたWebページの 1.テキストボックスに値を入力 2.チェックボックスをチェックする 3.送信ボタンをクリックする 4.リンクンをクリックする vb 6.0 は document.all(0).value="1111" とかdocument.all(0).click とかできたのが .netでできなくて悩んでます お助け願えませんでしょうか?
>>9 単一 Region なら Ctrl + M M ... だった希ガス。
複数Regionはマクロ必要じゃないかな
VB6との相互運用を目的とし、 tlbimp で InterOp DLLを作成(sn使用, PIA扱い)。
.NET (2005)で実装に入ると、VB6 から読み込んだ当該DLLのインタフェースを
実装できない(;ω;)
* 特定のプロパティでだけ発生する(同じDLL内の他は問題なく実装できる)
* 問題を起こすプロパティは、VB6 では Bool 型の変哲のないソース
Public Property Let A(flgFinish As Boolean) : isFinished = flgFinish : End Property
Public Property Get A As Boolean : A = isFinished : End Property
* InterOp DLL を ildasm で見ても、おかしいところはみあたらず。
* プロパティはシステム上必須で、Implements しないと相互運用できない。
でも、Implements しようと同じシグネチャでプロパティ書くと Implements できないと言われる。
何か原因に心当たりある人おります?(ここ確認せい、とかでも大変助かります...)
19 :
7 :2007/07/11(水) 01:34:43
7っす。 今はWebBrowser1_DocumentCompletedでHtmlElementを取得してから Tagでコレクションしてるっす。 TagNameコレクションだとInnerTextでタグのプロパティなんかを拾わなくてすむので 楽っすけど、読込に時間かかってます。 WebBrowserに依存しないHtmlを使えるクラスってやっぱないっすか?
自前でパーサ書く
>>18 キー操作とマクロですか、なるほど!!
ありがとうございました!!
22 :
デフォルトの名無しさん :2007/07/11(水) 11:43:46
初歩的な質問かもしれませんが,教えて下さい. スタート画面(frmStart)でボタン形式でメニューを表示し,いずれかのボタンを 選択すると,該当するフォームが表示されます.そのときにfrmStartでMe.Hide() と記述し,スタート画面を非表示にします.(frmStartはスタートアップに設定されてます) それを別フォームからスタート画面に戻るには(再表示するには)どうしたらいい でしょうか? 新たなインスタンスを作るとそのプログラムは終わらないし,frmStart.Show() はオブジェクト参照されてないし,どうしたらいいでしょうか?
frmStartの参照を子フォームに渡しておくか、 子フォームの閉じるイベントで再表示するようにする
24 :
デフォルトの名無しさん :2007/07/11(水) 15:35:25
CSVファイルのデータをDataSetに取得して、DBへ反映させたいと思っているのですが、 DataGridViewには値は正しく表示されるのですが、DBへ反映させる事が出来ません。 以下が、まとめたソースなんですが、どこらへんが駄目でしょうか? エラー等は表示されず、DBの値にまったく変化無しな状態です。 ===== Dim cn1 As New System.Data.SqlClient.SqlConnection("Data Source=Server;Initial Catalog=hogeSQL;User ID=hogeID;Password=hogePass;") Dim da1 As New System.Data.SqlClient.SqlDataAdapter("SELECT * FROM m_Table", cn1) Dim cn2 As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=text;Data Source=" & System.IO.Path.GetDirectoryName("C:\test.csv") & "\;") Dim da2 As New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM C:\test.csv", cn2) Dim ds As New DataSet da2.Fill(ds, "ds_m_Table") DataGridView1.EndEdit() Dim cmdBuilder As New System.Data.SqlClient.SqlCommandBuilder(da1) da1.Update(ds, "ds_m_Table") DataGridView1.DataSource = ds.Tables("ds_m_Table") =====
25 :
デフォルトの名無しさん :2007/07/11(水) 16:03:21
csvから読み込んだものとデータベースの列名と型はちゃんと合ってるの?
26 :
24 :2007/07/11(水) 16:35:48
>>25 同じです。
上記のCSVは、同じDetaSetから出力されています。
DBもCSVもDataGridViewに同じフィールドで表示されます。
追加状態にしとかないとだめよん
28 :
デフォルトの名無しさん :2007/07/11(水) 20:25:31
・・・・・・おいおい
VS2005 って、ほっっっっっっっっっっっんと落ちやすいな。 なんだこれ。 クリップボードにコピーしようとすると、現状が起きる。 こうなると、devenv.exeのプロセスが高負荷になって戻ってこない。 もう50回は落ちたよ。 誰か改善案など知っている方おりますか? OS:WinXpSP2 VS2005 Ver8.0.50727.762(SP.050727-7600) なお、クリップボードを操作するアプリは入れていません。
30 :
デフォルトの名無しさん :2007/07/12(木) 00:13:38
>>29 俺はSP1にする前 頻繁に落ちてたけどSP1にした今は別に問題ないな
ついでにいうとメモリ少なくって仮想メモリガリガリ使いながらだと落ちやすいみたい
同じ無印2005でマシン変えたら全然落ちなかったし
31 :
デフォルトの名無しさん :2007/07/12(木) 11:42:14
VB.NET 2005です フォルダにアクセス権がるかどうかを調べる場合どうすればいいんでしょうか? 具体的には指定されたフォルダを再起ループで回してエクスプローラ風にツリーを作るのですが チェックを行わないとSystemVolumeInfomationなどのシステム専用フォルダのアクセスでエラーが出ます。 エラーをキャッチしてスルーしてもいいのでしょうが、エラー発生のたびに遅くなるのと スマートでないため フォルダの中を再帰的に回すときにアクセス権をチェックした後で再起処理をしたいのです。 ご存知の方はお教え願えませんか?
>>29 なんで他のアプリの影響とか自分の環境を疑わないのか…
なんならWindowsにVS2005だけ入れて使ってみれば?
>>32 PCは3台変えた。OSは全てWinxpSP2です。
内1台は新規インストール状態での利用。
(ただし、Office2003SP2は入っている。)
事の頻度は違うかも知れないが、それら全てで似たような状態ですが?
と言うか、例え環境の問題であったとしても、今の時代で、
どんだけ作りが悪いんだよ!
と思わなくも無いですが。
34 :
デフォルトの名無しさん :2007/07/12(木) 14:36:28
コントロールの右クリックイベントの e.Location をクライアント座標に変換することって簡単にできますか?
35 :
デフォルトの名無しさん :2007/07/12(木) 15:22:21
>>34 Control.PointToScreen(e.location)
でいいんじゃ?
MouseEventArgs.Locationのことなら それ普通にクライアント座標だろ
37 :
デフォルトの名無しさん :2007/07/12(木) 15:51:49
>>36 たぶんそうだと思ったんでスクリーンじゃないかとエスパったおれは負け組の予感
38 :
デフォルトの名無しさん :2007/07/12(木) 17:18:22
2005のバックグラウンドワーカー使うときって やっぱフォーム閉じたりするときに IsBusy=trueでCancelAsyncメソッド使った後に IsBusy=Falseになるまでループでスレッド終了まちしてから終了すべき?
>>33 もう半年ほど毎日仕事で使ってるが、
落ちるなんてことあったのはたぶん1度あったかどうかぐらいだぞ。
ただ、参考になるかどうか分からないけど
Winアプリでコードに問題のある自作コントロールを貼り付けたフォームを
デザイナで開くと落ちる場合があることは経験した。
環境のせいでないとしたら、こういう自分のコードに問題がある可能性も
一応疑った方がいいと思うよ。
もちろんバグがあるからって落ちる開発環境ってどうなの?
なんだけどさ。
40 :
デフォルトの名無しさん :2007/07/12(木) 20:01:54
ContextMenuをShowメソッドで表示した後の、メニューのサイズを取得する方法ってないでしょうか?
OpenedのあとBounds
>>39 >環境のせいでないとしたら、こういう自分のコードに問題がある可能性も
>一応疑った方がいいと思うよ。
これはIDEとして失格では・・・
俺もSP1にする前はデバッグするたびにかなりの頻度で落ちてたよ。
セットアップ失敗してるのかと思ってインストールしなおしても変わらなかった。
SP1後は一回も落ちなくなったけど。
失格もなにもある物使うしかないだろ。 VS擁護する気はないがどんなソフトもバグぐらいある。 そんなことより、たまたまバグに遭遇しただけで「ソフトの作りが悪い」とか 全体を批判する性格のが悪い。 人間にも同じような事言ってるの?
44 :
デフォルトの名無しさん :2007/07/13(金) 08:46:34
>>43 まぁ確かにそうだけどこれだけ頻繁に落ちればデバッグ不足だ絽
>>43 >人間にも同じような事言ってるの?
例えば「しょっちゅうサボる派遣は、技術力があっても使い物にならない」、くらいは
言うんじゃね?普通。
折れの環境では「CheckedListBox」に対して、 コードを書いていると落ちたりする。 コピったり、ツールバーのボタンからコメントアウトしたり、 インテリセンスをだしたり。
社会保険庁の解体については、基本がそもそも間違ってる。 そもそも、年金をまかなうのに、保険料として徴収しようとするから、特別に省庁をおくかという 話に摩り替わる。 つまり税金として徴収してしまえば、 1. 不払いなどという問題もそもそもあり得ない。 2. 「特別会計というインチキ財布の肥やし」 にされる心配が全然ない。 つまり、2年で2億などという法外な天下り役人の泥棒が封じられる。これ大きい! 3. 徴収機関 が、税務署になるから、徴収コストは基本的にゼロ。 4. しかも、税務署なら、銀行と比較しても同レベルに信頼性が高い。 (社会保険庁がなぜ当たり前の経理も窓口も成り立たないのか全く不明、 郵便局で肩替わりしても全く問題ない程度の仕事のはず) 5. 支給のための仕事だけならば、住民票のある地方自治体を通じて行えば これもコストはほとんどゼロ。いったん登録すれば自動的に振り込まれる。 6. こうすれば、余分な厚生施設を勝手に作られたり、無用なものに勝手に 流用されて目減りすることもありえないし、天下り先などにもなりえない これだけのメリットは計り知れないほどのものだ、なのになぜ税方式にしないか? それは、 基本的に 「社会保険庁という役所を残す、形を変えてでも」 ということにあり、 その意味は、「結託している公務員利益を形だけ変えてでも優先したい」 というもの、、つまり自民党政権側の意図は要するに、、 裏では、天下り先を確保できるように官僚役人と結託しており、 国家利益を限りなく泥棒して国民の権利と利益をむさぼり取ろうぜ というのが実態。
>>45 それ例え方まちがってね?
たまたま今回自分だけに起こった不都合な部分だけを取り上げて
そいつを全否定するってことを言いたいんだろ。
>>48 水掛け論だよね。
「操作中に強制終了する奴は使い方が悪い使用者が問題。」
「操作中に強制終了するのはソフトをつくった人がわるい。」
両方とも立派な暴言だけど、立場を違えれば理解は出来る。
少なくとも開発者なら一つ目の発言は致命的だと思うけど。
いつまで経っても安定しないのはMSのお家芸だからな。 だからっつって切り捨てるわけにもいかず、騙し騙し使うしかなかったり。
VSは比較的まとも
>>49 どうでもいいけど使用者が悪いとか誰もいってないでしょ。
ただ特殊な状況でしか発生しないと思われる問題を一般的に起こりうる問題と勘違いして
騒ぐのは馬鹿みたいだよ、って話じゃないの?
>>50 だから被害妄想強すぎるんだよw
俺なんかむしろVSのIDEはあれだけ複雑なアプリケーションの割には不具合少ないな、とか思っちゃうけど。
もちろんこれはプログラマ目線の話であって、一般ユーザーがプログラム一般について
このように認識すべき、なんて言うつもりはない。
>>52 VSのSP1以前については特殊な状況と言えるのかい?
MSは特殊な状況下での使用法をSP1で改善してくれたことになるのか?
だから被害妄想強すぎるんだよ
一度言われたら理解しろよw
特殊な状況 =
>>33 の状況
いや俺のところでも
>>33 と同じ状況だぞ、って奴がいたら挙手してね
55 :
デフォルトの名無しさん :2007/07/13(金) 19:00:34
再現性があるかどうかだろ
もういいんじゃないか?
なんか >52 みたいに、わけのわからん方向に行ってるし…
>>53 お前は黙ってろw
57 :
56 :2007/07/13(金) 22:55:18
アンカーミスごめ。 誤 なんか >52 みたいに、わけのわからん方向に行ってるし… 正 なんか >53 みたいに、わけのわからん方向に行ってるし…
この程度のことで短気な人
みんなOfficeと同じような感覚で使ってるんだから仕方がないよ
>>33 うちの環境じゃ落ちないよなあ。めちゃ安定。
DellだとかHPの業務用に売られているマシンでしか使ってないから
他の環境のことはわかんないや。
Visual Basic 4の頃に、環境がたまに落ちていたのが、マウス付属の
ユーティリティドライバを外したら治った経験はあります。
なににせよ、プログラミングが安心して出来ないのは辛いでしょうね。
その3台に共通の部分を抽出できたら原因の特定も出来るのでは
ないかと思いますよ。
61 :
デフォルトの名無しさん :2007/07/14(土) 10:19:49
みなさん教えて下さい、これまで使えてきてた部分が突然例外メッセージが出て止まる ようになったのですが、 そこは単に初期化のところで、 #Region " 初期化 " Public Sub New() ' この呼び出しは、Windows フォーム デザイナで必要です。 Me.InitializeComponent() <----------------------[*1] ' InitializeComponent() 呼び出しの後で初期化を追加します。 InitializeSettings() End Sub #End Region ここの [*1] において、突然、次の例外メッセージが出てしまうようになりました。 「指定されたアセンブリ名またはコードベースは無効です。 (HRESULT からの例外: 0x80131047)」 [*1]は、単にPartial記述されたFormのコントロール配置の部分なのですが、 こういう基本的な部分が自分のクラス内からこのようなメッセージ内容で 呼び出せなくなるようなことはあるものでしょうか、すみませんがよろしければ ご指導お願いしたく。 ここはこれまで普通につかえてきていた部分で、全く意外なところなのですが、 これまでのWindows2000の環境から、別のPCに移りまして、そこですぐにWindowsXp のオンライン更新が掛かったようでしたが、その2日後ぐらいで初めて出るように なりました。自分自身のクラス内の Me.InitializeComponent() が呼び出せない といったようなことはあるものなのでしょうか?よろしくです。
62 :
61 :2007/07/14(土) 10:23:51
この例外ですが、PCを再起動した後で直ることもあれば、直らないこともありました。 電源を完全に落としてからやると直ることが多いようでした。 こうしたことはあり得るものでしょうか・・・???
>>61 Form1.Designer.vbのInitializeComponent()の属性をコメントにしてみると
InitializeComponentのどこで落ちてるかはっきりする。
この属性があるとこの中のどこで落ちても
InitializeComponent()の呼び出しに失敗したように見える。
'<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
64 :
デフォルトの名無しさん :2007/07/14(土) 15:34:24
>>63 ありがとうございます!!助かります!!
すぐに調べてみます!!
65 :
デフォルトの名無しさん :2007/07/14(土) 23:38:09
VB.NETでEXCELとかいじくれるようにOpenOfficeとかいじれないのかな?
66 :
65 :2007/07/15(日) 00:56:47
自己解決しました。
67 :
デフォルトの名無しさん :2007/07/15(日) 01:03:58
>>66 してねええええええええええええええええええええええええええ!!!!!!
勝手に解決すな!
68 :
66 :2007/07/15(日) 01:39:21
イベントを監視するイベントってない? 具体的にはBindingNavigaterでDataTableに行を追加した直後に発生する イベントを知りたいんだけど。 currentitemchangedもcurrentchangedもaddingも行を追加する直前みたい。
69 :
デフォルトの名無しさん :2007/07/15(日) 01:49:06
>>68 そこで継承ですよ。
継承してイベント発生直前に自前のイベントを投げると。
70 :
デフォルトの名無しさん :2007/07/15(日) 02:05:41
むしろデータテーブルのイベントハンドラをフックすればそれでいいんじゃね? 順序にもよるが データテーブルで発生したイベントの後でナビゲータ側でイベント発生してるはずだし
71 :
69 :2007/07/15(日) 02:08:24
>>70 お前とはまったく気が合わない><;
フックする前にもうちょっと自前でなんとかできないか考えるのが俺流!
72 :
70 :2007/07/15(日) 02:12:50
フックつうか言い方が悪かったか イベントハンドラに関数追加するだけだと思うが・・・・ 継承とかのが大げさだと思うけど
73 :
68 :2007/07/15(日) 02:21:28
ホントは66じゃない私のために喧嘩はやめて! ><;
意味のないコテうぜぇwwwwwwww
75 :
69 :2007/07/15(日) 02:28:31
>>72 あ、そうなんだ。
フックなんていうから、Windows メッセージを拾うのかと思ってた。
この会話を
>>68 が理解できればいいのだが・・・。
76 :
デフォルトの名無しさん :2007/07/15(日) 02:42:45
>>75 どうなんだろうね
つうかDataGridViewとかで表示してるならDataGridViewのRowsAddedイベントがあったような気がするんだけどなぁ・・・・
77 :
68 :2007/07/15(日) 03:24:15
具体的にやりたいのはForm上にDataTableにバインドされたコンボボックスがあり、 BindingNavigatorの新規追加ボタンを押すとSelectedIndexが-1に初期化されます。 これを直前のインデックスを保持させるか、変数に取っておいたものを再設定したいです。 DataGridViewのRowsAddedも試してみましたがタイミングは追加された行の制御を渡す前に 発生しているようで、しっかり初期化されちゃった。 >< 例えば>72さんの方法だと、TableNewRowイベントハンドラに自作関数を追加するという ことですか?
78 :
デフォルトの名無しさん :2007/07/15(日) 03:28:15
>>77 それだったら新規追加ボタンのクリックイベントでSelectedIndexいじればいいんじゃないのかと・・・・?
>>72 イベント名は忘れたけど まぁそういうことかな
まぁ簡単にできるんであればそんなことする必要もないんだけど
79 :
68 :2007/07/15(日) 03:40:10
>>78 新規追加ボタンに書いても、それがダメなんです。 ><
consoleにも書き出して確認したんだけど、新規追加ボタンのクリックイベント時点では
Me.ComboBox.SelectedIndexがまだ前の値なんで、イベント終了すると初期化されちゃう。
なんで?新規追加したときはcurrentがインスタンスじゃないから?
それで、制御もらってから発生するイベントがないかなとおもったんです。
くそ
81 :
68 :2007/07/15(日) 17:08:31
だめだー、ComboBoxのMouseClickイベントでも受付ないよー Form_LoadだとSelectedIndex設定できるのになんでだじょ? だれかヘルプミー (´;ω;)
82 :
68 :2007/07/15(日) 17:18:54
ごめんなさい、MouseClickイベントだと受け付けました。
Function 共通処理(変数宣言) Try メソッド特有処理(メソッドによって異なる処理) Catch ex As Exception 共通処理2(ロールバック) Finally 共通処理3(戻り値の設定やログ書き出し) End Try End Function このようなメソッドがいくつもある状態なのですが、 共通処理の部分をまとめて部品化させたいと思っています。 あたらしく、どんな処理をさせればいいかの文字列を受け取って、 TryCatchを組み、文字列によって、Try内の処理をSwitchで分けるようにしてみたのですが・・・ もっとスマートに組む方法はないでしょうか?
>>84 オーバーロードでしょうか?
メソッドが計20種類あり、それぞれ引数がString型2〜4つになっており
その中には同じ引数のものも存在するので、自動的な分岐ができないんです。
>>83 決まり文句 「例外処理を分岐に使うな」
でもその前にExecute("計算")はアホ設計の典型
>でもその前にExecute("計算")はアホ設計の典型 唐突ないいがかり、あるいは思い込みによる罵倒。
Try前に変数宣言(どのメソッドでも行う) Try内でメイン処理 Catchではメイン処理でエラーが発生した際のデータ復元(どのメソッドでも行う) Finallyで処理内容を書き出し(どのメソッドでも行う) このような処理をしているのですが、これも例外処理で分岐させていることになるのですか? だとしたらどのように記述するのがベターなんでしょうか? あとExecute("計算")がダサイのは自分でも把握しています(;´Д`) より良い方法があればご教授お願い致します。 同じようなTryCatchを毎回それぞれのメソッドに記述しており 「Finally区で処理をひとつ増やしたい」などの時に、メソッド全てを書き直す必要があり大変なので メソッドごとに違うメイン処理以外を部品化させたいというのが要望です。 制約として、引数が同じでオーバーロードによる自動分岐ができませんorz
89 :
86 :2007/07/15(日) 18:51:44
すまん例外の使い方の意図を勘違いしてた
>>84 の言ってるようにポリモルフィズムを使えば?
すべての「特有処理」を表すインターフェイスを定義して、
それぞれの特有処理クラスはそれを実装する
90 :
83 :2007/07/15(日) 19:35:22
>>84 >>89 ありがとうございます。少し前進しました。
もう少し質問をさせてください(長文すみません)
↓インターフェース
Public Interface hoge
Function 特有処理()
End Interface
↓特有処理を行うクラス(特有処理の数だけ作成)
Implements hoge
Public Sub 特有処理() Implements hoge.特有処理
特有処理を行う
End Sub
↓メインクラス内の処理
Function(ByVal huge As hoge)
共通処理
Try
huge.特有処理()
Catch ex As Exception
共通処理
Finally
共通処理
End Try
End Function
特有処理の種類によって引数が同じだったり違ったりする為、インターフェースを実装できないものがあります
Nothingあたりで無理矢理に引数の数を同じにしてでも実装するべきでしょうか・・・・?
それと、それぞれの特有処理クラスが処理を行っている最中にエラーが発生した場合、
そのエラーをメインクラスがCatchできるようにするにはどうすればよいのでしょうか?
>>88 なんとなく多態ポリモーフィズムよりデリゲートを引数に渡して動作を
切り替えるやり方の方が向いてる雰囲気だね.
>>90 割り込んで悪いけどインターフェイスを使うって話はヨタだと俺は思うよ。
この場合は、
Function Hoge()
Initialize()
Try
DoSomething()
Catch ex As Exception
Rollback()
Finally
Cleanup()
End Try
End Function
のHoge()、DoSomething()(これはMustOverrideにする)、Rollback()、Cleanup()をもつ
MustInheritなクラスを作った方がいい。
> それと、それぞれの特有処理クラスが処理を行っている最中にエラーが発生した場合、
> そのエラーをメインクラスがCatchできるようにするにはどうすればよいのでしょうか?
特有処理クラスの中でCatchしなければおk
>>92 それなら特有処理インターフェイスのメンバにRollback()とCleanup()を定義したほうがいいと思うよ
共通処理をばらばらにやってたら結局同じ
94 :
デフォルトの名無しさん :2007/07/15(日) 20:25:44
Sub aaa() Dim a(10) As Integer Dim i As Integer a(0) = 32 a(1) = 14 a(2) = 56 a(3) = 15 a(4) = 7 a(5) = 18 a(6) = 102 a(7) = 88 a(8) = 11 a(9) = 57 a(10) = 58 '------------------- 'この間で '------------------- For i = 0 To 10 Debug.Print a(i) Next End Sub 超初心者質問ですみません。 上のようにa(10)にランダムの数字が格納されていて これを昇順(若い順)に格納しなおしてから 表示するようなプログラムを作りたいの ですがどのようなやり方があるでしょうか。。
95 :
デフォルトの名無しさん :2007/07/15(日) 20:35:18
List(of Integer) 自分でソートの順序も最悪決定できるし
96 :
デフォルトの名無しさん :2007/07/15(日) 20:40:30
>>93 おいおい継承すら理解してない人間がポリモーフィスムがどうこう言ってたのかよ
98 :
デフォルトの名無しさん :2007/07/15(日) 20:50:41
つうか、例外を発生した時の基本的な動作判ってないようなやつがPG組むなよ 思いっきりスタックトレースとかメモリ情報集めてパフォーマンス落ちるじゃないか パフォーマンスが問題ないとしても 使われざる所に使ってるのは最悪だな 見分けをつけなきゃいけないじゃないか エラーが起きるか起きないかで判定するならBoolの関数でも作れよカス
99 :
88 :2007/07/15(日) 21:13:41
>>91 デリゲートを始めて使ってみたのですが、
引数の数が固定されるのでインターフェースと同じように無駄引数を準備する必要が、orz
何か使い方が間違っているのでしょうか?
Delegate Sub MyDlg(ByVal x1 As String, ByVal x2 As String)
Dim hoge As New 特有処理(3).特有処理
Dim Dlg As MyDlg
Dlg = AddressOf hoge
Dlg.Invoke("test","test")
>>92 確認も含めて質問させてください。
共通処理の部分(部品化したい部分)をスーパー抽象クラス(?)にして、
特有処理の部分をオーバーライドで変化させる形ですよね?
間違っていたら恥ずかしいのですが、オーバーライドの存在を忘れていました。
確かにこうすれば、引数が同じものと違うものが混ざっていても、確実に処理を分けられますね。
ありがとうございました。
>>93 メソッドの返り値をエクセプション型にして返そうとしてたのですが、
Catchを組まないだけでメインの方に飛ぶんですね。
勉強になりました。ありがとうございます。
最初のコードでよかった件
>>99 ああDoSomething()がとる引数は可変なんだね。
その場合は、
Public Sub Hoge(ByVal myDelegate As [Delegate], ByVal ParamArray params As Object())
Try
myDelegate.DynamicInvoke(params)
Catch ex As Exception
............
みたいにすればいいんじゃない?(ご免、実際こういう処理はやったことがないので
あんまり自信がない)
後半の継承の話についてはおっしゃるとおり。
処理によって必要な引数が変わるならやっぱり継承をつかった多態は向いてないかもね。
102 :
88 :2007/07/15(日) 22:22:06
>>101 そのような方法もあるんですね。
ソースを参考にさせていただき、DynamicInvokeの方も勉強したいと思います。
一応現段階では↓のような形になって、部品化も成功したと思います。
(もし何かおかしなコードがあれば、ご指摘をお願いします)
↓共通処理クラス
Public MustInherit Class hoge
Try
Me.Load()
Catch ex As Exception
Finally
End Try
Public MustOverride Function Load()
Public Function 特有処理() End Function ※引数の種類だけ特有処理を記述
Public Function 特有処理(ByVal str As String) End Function
Public Function 特有処理(ByVal str As String, ByVal i As integer) End Function
↓特有処理クラス
Public Class 特有処理(1)
Inherits hoge
Public Overrides Function Load()
特有処理( "TEST" )
End Function
Public Shadows Function 特有処理(ByVal Tag As String)
特有の処理を行う
End Function
End Class
103 :
デフォルトの名無しさん :2007/07/15(日) 23:40:07
>>102 ごめんそのコードじゃ何をしたいのか誰にも理解できないと思うわ。
普通に考えれば、"特有処理"なんてメソッドをベースクラスに定義する
必要な何もないんだけど。
その"特有処理()"に書く処理を、各子クラスのオーバーライドしたLoad()
の中に直接書けば済む話だと思うけど。
だからインターフェイスという選択肢はこの場合は普通ありえないって。
>>92 のコードでいう
Initialize()
Rollback()
Cleanup()
これらのメソッドは共有したいのだから。
別ににそれは特有処理クラスの中に定義する必要ないでしょ
外の枠組みを共通化したいんだから外でやればいいこと
>>92 のDoSomethingの中で任意のタイミングでInitializeとか
呼びたいっていうなら別だけど
何がいいたいのかよく分からないが、 まあ、OOPのこんな基本もわかってないなら無理しなさんな。 これはプログラマによって意見が分かれるような問題じゃないと思うよ。 (まともな)プログラマなら100人中100人がこういう場合にインターフェイスを 使おうなんてナンセンスだ、と言うだろう。 ようするにただ君がインターフェイスの意義や継承がよくわかってないだけ。
109 :
88 :2007/07/16(月) 16:14:21
なんか荒してすみません。結局こんなコードになりました↓ Public Interface hoge Sub Syori() End Interface Public MustInherit Class huge Implements hoge フィールド宣言 ←特有処理で使われる引数の種類分だけフィールドを作成 Sub Syori() Implements hoge.Syori Try Me.MainSyori() ←ここのTry句以外に、共通に使用するコードを記述 Catch ex As Exception End Try Public MustOverride Function MainSyori() End Class Public Class 特有処理(1) ←特有処理の種類だけクラスを生成 Inherits huge Public Sub Set引数(ByVal Test As String) ←その特有処理に必要な引数のみを受け取りSETする フィールドに値をセット End Function Public Overrides Function MainSyori() 特有処理(1)を行う End Function End Class
110 :
88 :2007/07/16(月) 16:34:51
長すぎを食らったので連投で失礼します。毎回長文ですみません。 フィールド宣言を派生クラスの方にしようか、抽象クラスにしようか迷ったんですが、 結局、派生クラスの数が多く記述するのが大変だったので、 使わないフィールドができることになりますが、抽象クラスに記述しました…、やっぱり派生クラスのほうが良いでしょうか? それともうひとつ気になるのが、抽象クラスのSyoriメソッド内の共通に使いたいコード内で、 「実際に派生クラスを使うメインクラス内のフィールド」を使いたいのですが、 派生クラスとメインクラスを継承関係にすることはできないので、 毎回Syoriメソッドにポインタ型で渡しています。 すごく違和感を感じるのですが、何かより良い方法はないでしょうか? それと最後にもうひとつだけ・・・ 抽象クラス内では例外処理を利用した共通のコードが記述されているので、 例外処理を省くことができないのですが、この場合だとメインクラスや実際のプログラムなどで エラーを受け取れないので、Catch内にThrow New Exception(ex.Message, ex)を記述してみたのですが、 これを書くと、エラーが起こったときにちゃんとメインの方にもエラーが飛んでくる代わりに、 Finally句でプログラムがダウンしてしまいます。何かよい方法があればアドバイスをお願いします。
111 :
デフォルトの名無しさん :2007/07/16(月) 16:36:03
>>109 な・・・なんかなぁ・・・・・
まぁ動いてるならいいんじゃなかろうか・・・・
>>109-110 やっぱり無理に継承使うべき場面じゃないよ。
例外処理のパターンが共通してるからこれを共用したい、と思うのは無理もないけど
そのために無理に継承つかって、その結果処理につかう引数をフィールド渡しにするんじゃ
本末転倒でしょ。
愚直に同じ構造をコピペすべし。
どうしてもパターンを共用するのなら、
>>101 のようにデリゲート使うほうが
まだしもマシ。
ついでに、人にコード見てもらおうっていうんだから
もうちょっと見やすいコード書こうよ。
日本語のメソッド名とか意味のつかめない捨て名のメソッド名じゃ
タチの悪い釣り扱いされても文句言えないよ。
俺の考え方がおかしいのかな? 「最もマシなコードを選択しろ」って言われたら ・インターフェイスを使ったやつ 欠点:引数の違いを補うためにParamArrayか、最大値をとって無理に引数をあわせる必要がある ・デリゲートを使ったやつ 欠点:インターフェイスと変わらなくね?結局引数の違いがネックでParamArrayに頼る感じ ・継承を使ったやつ
114 :
デフォルトの名無しさん :2007/07/16(月) 19:43:34
イベントなら引数にSenderというオブジェクトとeというイベント継承クラスを入れると 引数の違いなんて事にはならなくね? 設計に問題がある気ガス。
>>114 何が言いたいのか分からんが
おまいの言ってることってまんま
>>109 と一緒でないかい?
今既に引数の違いは関係がなくなって
どうやってeクラスからメインのフィールド受け取ろう?って話じゃないかな
ザ・ワールド
117 :
デフォルトの名無しさん :2007/07/18(水) 01:57:18
VB.NET2003で、フォームに設置したSplitterを操作しようとしているのですが、 Locationに値を与えても位置が変わりません。 Me.Splitter1.Location = New System.Drawing.Point(0, 300) MessageBox.Show(Me.Splitter1.Location.Y.ToString) '初期位置のY座標が表示される 一度表示したSplitterのLocationをコード上から変更することはできないのでしょうか?
118 :
デフォルトの名無しさん :2007/07/18(水) 02:13:56
普通Locationは変えずに(Dockされてるし)Sizeをかえるもんじゃないのか? Widthとかさ
どうせDockとかAnchorが設定されてるんでしょ
秀作として簡単なゲームを作っています 透過GIFを使って背景は透過出来ましたがPictureboxどおしが重なると四角い枠が見えてしまいます Pictureboxの重ね合わせはどのようにしたらよいのでしょう?
>>117 普通スプリッタはパネル>スプリッタ>パネルって貼るでしょ?
最初のパネルの幅や高さ(要はスプリッタが付く方向)を変えてみ?
122 :
デフォルトの名無しさん :2007/07/18(水) 11:34:54
123 :
デフォルトの名無しさん :2007/07/18(水) 11:45:43
教えてくださいm(__)m auからのメールで(アド以降が)@ezuibe.nemaharikumaharetaa@ezってなってて返信押してメールしようとクリックするとマハリクマハリタの文字だけ消えます!何故?Σ(゚Д゚;≡;゚д゚)
>>123 教えてくださいm(__)m
>(アド以降が)@ezuibe.nemaharikumaharetaa@ezってなってて
なんで“@”が2つ?
更に不思議なのは、何故このスレで訊く?Σ(゚Д゚;≡;゚д゚)
125 :
デフォルトの名無しさん :2007/07/18(水) 12:06:43
訂正 @ezweb.nemaharikumaharetaa@ez マジ解る人居るかなぁ? 2chならきっと居るよね ヽ( ̄∇ ̄)ノ
>>120 自分で言うか?<秀作
そんなもん臭作だw
127 :
デフォルトの名無しさん :2007/07/18(水) 12:48:55
>>126 お前もにおうぞ
風呂入ったか?
遺作より
129 :
デフォルトの名無しさん :2007/07/18(水) 13:11:06
>>128 お前解らないだろ?
ギャハハーw
(・∀・)/ヾ〜〜╋┓
130 :
デフォルトの名無しさん :2007/07/18(水) 14:15:10
age
132 :
デフォルトの名無しさん :2007/07/18(水) 15:49:59
>>129 お前解らないだろ?
ギャハハーw
(・∀・)/ヾ〜〜╋┓
133 :
デフォルトの名無しさん :2007/07/18(水) 15:51:27
>>131 お前も解らないだろ?
ギャハハーw
(・∀・)/ヾ〜〜╋┓
134 :
デフォルトの名無しさん :2007/07/18(水) 16:28:19
教授様このスレも解決お願い致します!
どうやら小学生がいるようだな
136 :
120 :2007/07/18(水) 18:50:42
あたぁ習作でしたw
>>122 ボーダーってPictureboxのプロパティのBorderStyleですか?
境界はnoneにしてますが
pictureboxじゃなくDrawImageメソッドを使う方がいいのかな?
しかし何で命令をいちいちdimで宣言する必要があるんだろ?
面倒なだけで何のメリットがあるのか、ちっともわからん
HSPしか使ったことのない工房の愚痴です、すいません
137 :
デフォルトの名無しさん :2007/07/18(水) 18:59:42
vb.net2005 なんですが マウスカーソルの位置座標を小数単位で取得する方法が無いでしょうか よろしくお願いします
描画に関しては小数点座標が使えるので
マウス座標も取得する方法が無いかと思い質問しました
>>138 マジです
>>139 回答ありがとうです
141 :
117 :2007/07/18(水) 19:52:56
>>121 ご指摘の通りPanelのサイズを変化させたらそれに伴ってSplitterの位置を変化させることができました。
解決を導く回答をいただきありがとうございました。
>>140 マウスは画面でしか使わないのでピクセル単位のみ。
143 :
デフォルトの名無しさん :2007/07/18(水) 20:31:43
>>123 も本当です釣りではありません
絵文字が消えるみたいな現象です
お分りになる方教えてくださいm(__)m
>>143 windowsをアップデートすると直るよ
146 :
デフォルトの名無しさん :2007/07/18(水) 20:54:39
>>144-145 様ありがとうございます!m(__)m
受信の端末は携帯なんです
何故、英字コードが消えたりするのでしょう?
147 :
デフォルトの名無しさん :2007/07/18(水) 21:01:15
それこそエンコードじゃねぇの?
>>146 outlook Expressのバグ
正規のoutlookか他のメーラーを使えば良いよ
150 :
146 :2007/07/18(水) 21:58:28
自己解決しました。 ここの人間はクソの役にも立ちませんでした(´・∀・`)
151 :
デフォルトの名無しさん :2007/07/18(水) 23:16:24
すみませんVB2005を使っていてどうしてもつまってしまったので教えて下さい プログラム初心者です 子フォームでラジオボタンでインターフェースの切り替えの操作をしていて、 親フォームである計算の途中でラジオボタンの操作を自動で行わせるプログラムを作成したいのですが 子フォームの該当箇所メソッドをPublicにした後親フォームで呼び出したところ 「パラメータ'e'に対する引数が設定されていません」的なエラーを言われました。 どうしてやればいいんですか?
152 :
デフォルトの名無しさん :2007/07/18(水) 23:16:59
>>150 テラワロスwwwwww
クソの役にもたちませんですたゝ( ゚∀゚)メ(゚∀゚ )ノ
てか、自己解決してないってば(・∀・)ニヤニヤ
153 :
デフォルトの名無しさん :2007/07/18(水) 23:20:47
>>151 エラー内容そのまんまだけど、パラメータ'e'に対する引数を設定すればいいよ。
ソースも書かずにどうすればいいかって意味わからないけど、多分こう。
Call RadioButton1_Click(RadioButton1, New EventArgs())
>>153 >>123 ?
>(アド以降が)@ezuibe.nemaharikumaharetaa@ez
それきっとauからのメールじゃないよ。変だモンヾ(*´∀`*)ノ キャッキャ
155 :
151 :2007/07/18(水) 23:37:25
156 :
デフォルトの名無しさん :2007/07/18(水) 23:42:25
157 :
デフォルトの名無しさん :2007/07/19(木) 00:11:20
此処役にたちま千円(゚ε゚)
158 :
154 :2007/07/19(木) 00:11:32
>>156 おぉ、訂正してたの気づかなかったわ。ごめん。
>@ezweb.nemaharikumaharetaa@ez
これきっとauからのメールじゃないよ。@が2個あるとか最後が@ezとかおかしいモン。
これはPCから送られてきた偽装メールだから、返信もおかしくなって当たり前。
159 :
デフォルトの名無しさん :2007/07/19(木) 00:18:22
>>158 様
クリックして返信画面になると(アド)@ezweb.ne.jp.
表示になるんです!!
マハリクマハリタは消えてしまうから不思議なんです
マジ何故消えてしまうか知りたいんです
160 :
154 :2007/07/19(木) 00:26:15
>>159 何故って言われてもそうゆもんだから(゚ε゚)
161 :
デフォルトの名無しさん :2007/07/19(木) 00:38:14
わかるけど お前の態度がきにいらない だれかAAはっといて ヽ(´ー`)ノ ワッショイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワッショイ
162 :
デフォルトの名無しさん :2007/07/19(木) 00:39:36
専門バカなら分かるよ さそれじゃタダのバカと同じじゃん( ´∀`)σ)Д`)
163 :
デフォルトの名無しさん :2007/07/19(木) 00:42:01
つうか、そういうものだと割り切ることも大切だ
164 :
デフォルトの名無しさん :2007/07/19(木) 00:45:13
またバカかw( ̄ー ̄+)
165 :
デフォルトの名無しさん :2007/07/19(木) 00:47:31
粘着うざい
166 :
デフォルトの名無しさん :2007/07/19(木) 00:53:30
じゃ教えてミソ(-"-)y-゚゚゚
167 :
デフォルトの名無しさん :2007/07/19(木) 00:56:43
wっうぇwwっうぇうぇwww 厨臭いAAだwww
つーかスレ違いじゃね? いいの?いいの?
169 :
デフォルトの名無しさん :2007/07/19(木) 01:01:33
じゃ教えてミソ(-"-)y-゚゚゚ じゃ教えてミソ(-"-)y-゚゚゚ じゃ教えてミソ(-"-)y-゚゚゚ じゃ教えてミソ(-"-)y-゚゚゚ じゃ教えてミソ(-"-)y-゚゚゚ じゃ教えてミソ(-"-)y-゚゚゚ じゃ教えてミソ(-"-)y-゚゚゚ じゃ教えてミソ(-"-)y-゚゚゚ じゃ教えてミソ(-"-)y-゚゚゚
なんか盛り上がってるな
171 :
デフォルトの名無しさん :2007/07/19(木) 01:10:23
年寄りは寝ただろうから 教授は居ないポィ┐(´─`)┌
おめーらわからないんだろ〜〜〜〜〜 (・∀・)/ヾ〜〜╋┓ (・∀・)/ヾ〜〜╋┓ (・∀・)/ヾ〜〜╋┓
173 :
デフォルトの名無しさん :2007/07/19(木) 01:35:30
答えが出ないから宿題にするよ(゚ε゚)
174 :
デフォルトの名無しさん :2007/07/19(木) 06:30:43
おはよう(・∀・)ノage
Fromが(アド)@ezweb.nemaharikumaharetaa@ez Reply-Toが(アド)@ezweb.ne.jp になっていれば、表示アドは(アド)@ezweb.nemaharikumaharetaa@ez でも、返信を押せば(アド)@ezweb.ne.jpが出るよ。
知的障害者の鼬害質問にも反応したくなるほど暇なら 「VB.NET (Compact Framework 1.1) による フォーム派生クラスのデザイン時コントロールの作り方」に 詳しいWebページや本の紹介をして下さいマセヨ。
177 :
デフォルトの名無しさん :2007/07/19(木) 13:29:59
>>175 ワーイ!ありがとうございます o(*^▽^*)o
問題は何故テクマクマヤコンの文字が消えるかなんですょ?
>>176 知的障害だって言われるなら答えられるよね?知的障害の話だなんて
話をすり替えて逃げないで答えてね!!
解らないくせに(゚ε゚)
178 :
デフォルトの名無しさん :2007/07/19(木) 13:32:31
知的障害のお前の言うことは日本語としておかしいから答える必要もないプー(゚ε゚) サッサトシネヨテイノウ
179 :
デフォルトの名無しさん :2007/07/19(木) 13:40:53
>>177 訂正
テクマクマヤコン×
マハリクマハリタ〇
180 :
デフォルトの名無しさん :2007/07/19(木) 13:44:32
>>178 答えられない藻前も知的障害と代わり茄子じゃんギャハハ(・∀・)/ヾ〜〜╋┓ ┣¨┣¨┣¨┣¨┣¨ ┃┃¨╋┓┃┃¨╋┓
┃┃¨╋┓┃┃¨╋┓
┃┃¨╋┓┃┃¨╋┓
Fromが(アド)@ezweb.nemaharikumaharetaa@ez Reply-Toが(アド)@ezweb.ne.jp こうなっている場合、返信ボタンを押すと (アド)@ezweb.nemaharikumaharetaa@ezから maharikumaharetaが取り払われて(アド)@ezweb.ne.jpがセットされるのではなく、 単純にReply-Toに設定されている(アド)@ezweb.ne.jpがMailToに格納される。 別に文字が消えたわけではない。 該当メールのヘッダをココに貼ってみろ。はっきりするから。
表現があやふやだったな。 maharikumaharetaが取り払われて(アド)@ezweb.ne.jpがセットされるのではなく、 単純にReply-Toに設定されている(アド)@ezweb.ne.jpがMailToに格納される。 ↓ maharikumaharetaが取り払われて(アド)@ezweb.ne.jpがMailToに格納されるのではなく、 単純にReply-Toに設定されている(アド)@ezweb.ne.jpがMailToに格納される。
185 :
デフォルトの名無しさん :2007/07/19(木) 14:34:35
>>184 神降臨 ゚☆,。・:*:・゚★o(´▽`*)/
ありがとうございますm(__)m
単純にReply-Toに設定されている(アド)@ezweb.ne.jpがMailToに格納される。
とありますが
maharikumaharetaはReply-Toに設定されてされていない事になるんですか?
端末は携帯です。どの様な操作をすれば出来ますか?
私自身アドにmaharikumaharetaa@で試みましたがmaharikumaharetaは消えませんでした
携帯から直接Reply-toを指定してメールするのは無理。 パソコンからだと、一般的なメーラはReply-toの設定ができるはず。 "(利用しているメーラ名) Reply-to"なんかで検索するといい。 それでReply-toの設定が出来たら、自分の携帯宛にメールをしてみるとよい。 auはReply-toの設定が有効だから、再現できると思うぞ。
187 :
デフォルトの名無しさん :2007/07/19(木) 15:04:29
>>186 詳しくありがとうございますm(__)m
私の携帯はDoCoMoなのですがau同様に出来ますでしょうか?
気違いの相手をするやつも気違い
189 :
デフォルトの名無しさん :2007/07/19(木) 15:19:09
>>186 様感謝致しますm(__)m
>>188 デフォルトの名無しさん→気違いのお陰で勉強になったでしょ?
有り難く思いなさい(ノ`Д´)ノ ■━⊂(・∀・)彡ガッ
190 :
デフォルトの名無しさん :2007/07/19(木) 15:47:50
>>188 藻前も人から尊敬される様な知識と人格を持ってね!
メーラーのReply設定で尊敬する知識か。 世の中、尊敬する人ばかりで大変だなw
192 :
デフォルトの名無しさん :2007/07/19(木) 16:08:10
>>191 知識と※人格
 ̄ ̄
ここ重要ね!ヽ(・∀・)ノ
よくこんな質問に答える気になったな。
194 :
デフォルトの名無しさん :2007/07/19(木) 16:13:37
>>193 お前も初めから知識があったか?今の私同然のはずだょ(^.^)b
教えて頂いた積み重ねが今のお前なだけ(゚ε゚)
195 :
デフォルトの名無しさん :2007/07/19(木) 16:20:10
教えてくださった皆様ありがとうございましたm(__)m
196 :
デフォルトの名無しさん :2007/07/19(木) 16:41:46
197 :
デフォルトの名無しさん :2007/07/19(木) 16:50:56
>>196 良いスレがあったんだね!そこ行くよ ☆^(o≧▽゚)o
私専属の先生に任命してあげるからシッカリ教えてね!
m9(・∀・)ビシッ!!
198 :
151 :2007/07/19(木) 22:03:14
>>154 やってみたところ出来ました!!
本当にありがとうございます!!
俺の中で154さんは神様です
ただ子フォームのラジオボタンが、見た目何も変化していないのが気になります。
いまのフォームではラジオボタン1と2がありまして最初は1になるように設定してあります。
先程のやり方でデバッグすると、
本来ならラジオボタン2にクリックされた試行をしているはずなのですが
(実際その試行は行われているんですが)
子フォームのラジオボタンの表示は変化していません。
対応させるにはどうしたらいいのでしょうか。
よろしくお願いします。
>>198 あなたのやってることも
>>154 の回答もうんこ。
Click or CheckedChanged のイベントハンドラ実行したって
もとのラジオボタンにはなんの影響もありませんことよ。
radioButton2.Checked = trueしたらよかっぺ
200 :
デフォルトの名無しさん :2007/07/19(木) 22:23:14
よかっぺww お前、結構前からレスしてるよな。 間抜けな回答してた香具師として覚えてるww
(´・ω・`)ママーリいきましょ
VB2005って体験版みたいの どっかから無料でダウンロードできる?
204 :
デフォルトの名無しさん :2007/07/20(金) 10:02:38
Microsoftいってこい 開発ツールのところにあるだろ それぐらい見てからしゃべれカス だから馬鹿みたいなくだらない質問するんだろうが!!!!!!
205 :
デフォルトの名無しさん :2007/07/20(金) 10:08:22
そんなぁ、、、、 アスペルガーのあなたに 言われたくありませんよ(藁
206 :
デフォルトの名無しさん :2007/07/20(金) 10:28:27
207 :
デフォルトの名無しさん :2007/07/20(金) 20:18:42
express editionダウンロードしようとおもったら microsof なんとかIDとやらを取得しろってでた
>>207 入門書の付属CDに入ってることも多いよ
209 :
デフォルトの名無しさん :2007/07/20(金) 20:36:09
プログラムの仕方で悩んでいます。 コントロールに値が入力(選択)されているかのチェックに 例外を使ったんだけど、こういう場合は使わない方が良いのかなー。 例: If TextBox1.Text.Equals("") Then TextBox1.Select() Throw New Exception("TextBox1が入力されていません。") End If
210 :
デフォルトの名無しさん :2007/07/20(金) 21:06:43
起動するのに数分間ってなんだよ!
211 :
デフォルトの名無しさん :2007/07/20(金) 22:03:04
ビルド選んだら 「ユーザーはこのアプリの更新をどこで確認するのですか?」 とか余計なこと聞いてきやがった いいからさっさとコンパイルしろや
そうやって自分が馬鹿なのを人や道具のせいにするから君は進歩がないんだよ
>>209 それ例外じゃないからメッセージボックスがいいと思うよ。
214 :
デフォルトの名無しさん :2007/07/21(土) 04:52:00
これって6.0みたいに RAD内で実行、テストするのが できなくなったの? なんかデスクトップの「a」ってフォルダ作って そこの中に発行して、setup.exe実行して ようやく動作を確認する感じ。 6.0だったらRAD内で動作確認できたよね?
>>214 オンメモリでの実行は出来なくなったが、セットアッププログラムまでは作らなくてもいいぞ。
ファイルは作るがIDEから実行できる。
・Buttonクラス継承して、自作メソッド「Test」を追加した、MyButtonクラスを作成 ・デザイナでボタンを作って、フォームロードの時に「Me.Button1 = New MyButton」を実行 ・Button1.AddHandle...で、ButtonのClickイベント「MyEvent」を登録 ・MyEventではsenderとeを受け取り、処理内容に sender.Test() を記述 こんな感じでボタンイベントに自作の処理を追加したかったんだけど、ボタンが動かない・・・ ボタンがいっぱいあってどれも同じような処理してるんで、 処理内容が違う部分だけクラスにしてAddHandleをループでまわしてコードへらそうと思ったんですけど・・ そもそもこんな処理をするのはおかしいですか?
217 :
デフォルトの名無しさん :2007/07/21(土) 07:01:26
>>215 そのIDEから実行、のやり方をおしえてくれる?
どこのメニューなのかわからん
ストリングのスプリットについて質問です。 Const cString As String = "文字列1" & VbCrLf & "文字列2" というものがあって、このうち文字列1と文字列2を別々に使いたいので、 Dim sArray() As String sArray = cString.Split(VbCrLf.toCharArray) としてみたのですが、結果が sArray(0) = "文字列1" sArray(1) = "" sArray(2) = "文字列2" となってしまいます。 できればsArray(1)に"文字列2"が入ってほしいのですが、 何が原因なのでしょうか?
マニュアル読んでから使えよ。 いや、メソッドの引数に意味くらい調べてから使えよ。
>>217 普通に実行すりゃできるのにわざわざ発行してるなんてありえん。
発行のがよっぽどわかりにくいはずだろ。
221 :
デフォルトの名無しさん :2007/07/21(土) 09:32:50
ばかはおまえだ 6なら実行というメニューがあったが 2005にはない
www
ひょっとして本気でデバッグ開始がわからんのか。 VB6つかっててプログラミングは素人じゃないはずなのに。 ツールバーのデバッグ開始ボタンよりも発行を先にやるとは器用なやつだw
CDでダビングしないと再生できない。 前のはもっと感嘆だったのに。 どういうことだよ ↓ 普通に再生すりゃできるのにわざわざダビングしてるって意味わからんw ダビングの方がよっぽどわかりにくいだろ ↓ ばかはお前だ、再生ボタンなんてどこにもないだろ。 ↓ いや、右三角ボタン…、普通みなまで言わんでも意味わかるだろ…
225 :
デフォルトの名無しさん :2007/07/21(土) 09:50:02
ヘルプ読んだらわかったわ 実行をデバッグって読んでるのはどういうことよ 責任者呼んでくれる
∩___∩ | | ノ\ ヽ | / ●゛ ● | | | ∪ ( _●_) ミ j 彡、 |∪| | J / ∩ノ ⊃ ヽ ( \ / _ノ | | .\ “ /__| | \ /___ /
もう夏厨の湧く季節か… ちと早くね?
環境:vb.net2005 express タスクトレイにNotifyIconでアイコンを表示させたいのですが、 Windows2000でアイコンがモノクロ表示になってしまいます。 最近買ったVistaのほうではカラーで正常に表示されます。 Windows2000上で発行したEXEとVista上で発行したEXEのどちらを 使用しても、結果は同じです。(Windows2000だけモノクロアイコン) ※もちろん他のアプリのアイコンは正常にカラーで表示されます。 どなたかよろしくお願いします。
32Bitアイコン使ってる、ってオチでしょどうせ。 XPより前のOSは32Bitのアイコンには対応してないと思ったけど
>>229 2000は16色
XP以降は32bit
16色っていつの時代の話よそれw 24bitは普通に使えるよ。
>>230-232 ありがとうございました。
ただ@iconというフリーソフトで見る限り、24ビットのようです。
うーん、なんでしょう。
8bit(256色)にして試してみましたが、同じくモノクロ表示です。
ほかに原因等は考えられないでしょうか・・・
>>232 >いつの時代の話よそれw
Windows 2000 の時代。
因みに、エクスプローラの問題。
>>233 どーしても気に入らない場合、"TrayNotifyWnd" の HWND から
スレッド探して、そいつにフック。
いやWin2kのOS自身のオブジェクトのアイコン(たとえばマイコンピュータとか) が16色で描かれてると思ってる人初めて見たよw
マイコンピュータとか表示してるのは OS じゃなくてシェルである Explorer だけどな
>>235 NotifyIconのはなしでしょ。
普通のアイコンはそりゃ24bitだけども。
ああすまん調べてみると確かにタスクトレイのアイコンはWin2k以前は16色という 制限があるみたいだね。 全然知らなかったよ。。
>>238 何の話をしてるのか解ってなかったんかい!w
ワロタ
俺用メモ "文字列"の文字列中で " を使うには "" ずっと \" だと思っていて時間15分食った。
242 :
デフォルトの名無しさん :2007/07/22(日) 04:48:41
ボタンをおしたら乱数を発生させる、 ってのを作りたいんだが、どうすればいいかな パスワード生成ソフト。 8桁で、 半角のアルファベットと、 半角の数字が混在したもので、 数字は2つ以上必須。 アルファベットは 2つ以上の半角大文字と 2つ以上の半角小文字が 必ず入ったもの。
243 :
デフォルトの名無しさん :2007/07/22(日) 06:39:20
エラー 1 'ElseIf' の前には、対応する 'If' または 'ElseIf' を指定しなければなりません。 ってでるんだが、指定の方法がわからん 指定なんてできるのか?
244 :
デフォルトの名無しさん :2007/07/22(日) 08:07:51
わかったわ 必ず改行しないとだめなんだわ 改行で識別してるってどんなアホ言語だよ?
>>244 Python使いの俺にケンカ売ってんのか
>>242 条件に当てはまらなければやり直しでいいんじゃね?
下手な小細工するよりはね
>>246 うん。それでいこうとおもうんだ。
で、いま、Rnd()関数で1−62の数字を生成させて、
1だったら1
2だったら2
、、、、、、
9だったら9
10だったら0
11だったらa
12だったらb
、、、、、、、
○○だったらz
XXだったらA
△△だったらB
、、、、、、、、
□□だったらZ
ってやろうとおもって、
最初if ,,,then a=1
else if then ,,,,
end if
ってコード書いて、改行入れないと認識されないってのが
わかんなっくて、それで3時間悩んで、いまようやっと
改行入れればいいんだ、ってわかって、それで次は
ifでなくてcaseにしたほうが賢いよね、って思って、
それをいますぐコーディングするか、あるいは
図書館いって紅の豚見るか、本屋いって立ち読みするか、
WoWやるかUOやるか、グーグルで検索してみつけた
大学生のプロブラマーさんにメールだすか、、、、
ってところで悩んでる
>>242 要は以下の機能を作れば実現可能じゃないか
(1) Nの中からランダムな一文字を吐くメソッドGetN
(2) Uの中からランダムな一文字を吐くメソッドGetU
(3) Lの中からランダムな一文字を吐くメソッドGetL
(4) Cの中からランダムな一文字を吐くメソッドGetC
(5) 上の各メソッドそれぞれについて2つずつ値を取得し、それらの文字を組み合わせて
8文字の文字列を吐くメソッド
(6) 引数にとった文字列中の文字をランダムに並び替えた文字列を吐くメソッド
ここで、
N: 半角数字の文字の集合
U: 半角数字と半角英字の大文字の集合
L: 半角数字と半角英字の小文字の集合
C: 半角英数字の文字の集合
まさかその段階で悩んでるとは思わなかった。 VBなら、そうだな、wchrだったか、chrでも同じだったか とにかくその辺の関数でどうにでもなる。 文字種別だけifとかで分けて、もしくは足す数値を変えて chrやらで文字にすればいい。
TextBox を単純なログ垂れ流し領域として使いたいのですが、Text プロパティに 文字を追加しただけでは勝手にTOP位置までスクロールしてしまいます。 その直後に最下行へスクロールさせても表示がガタついて上手くありません。 TextBoxの表示位置を変えずに、文字列だけ追記する方法はありませんでしょうか。 通常であれば AppendText を使うのですが、これが実装されていない環境( Compact) なので・・・・・・・ よろしくお願いいたします。
コントロール配置を右寄せかつ高さを自分で決めれるかつAutoSizeするにはどうプロパティ設定したらいいでしょうか? お願いします
日本語でお書き下さい。 またはエスパーを召還してください。
>>252 難しかったですか?
簡単に言うと
「AppendText を使わずに、AppendTextと同じ機能を作る方法は?」
です。
>>253 いやエスパー召還が必要と思われるのは
>>251 の方。
>>250 は難しそうだね。
Compactって思いのほか制約が多いんだね。
SuspendLayoutもWndProcも使えないんじゃどうやって良いかわからない。
ただ、ログを表示するだけならスクロールバーとラベルを組み合わせて
コントロールを自作すれば済むことのような気もする。
ListView の詳細表示とかどうかな?
プログラムの実行を途中で停止したいのですが・・・ end だとアプリそのものがとまってしまいます exit sub にすると呼び出されている関数の場合 もとの式に戻って実行を続けます その以降の処理だけとめて、 入力待ち状態にしたいのですが こういう場合はどうすればよいのでしょうか?
258 :
デフォルトの名無しさん :2007/07/23(月) 09:29:47
止めるだけっていうなら thred.sleep これでよくね?
259 :
デフォルトの名無しさん :2007/07/23(月) 09:31:08
Thread.Sleep だたorz
260 :
デフォルトの名無しさん :2007/07/23(月) 09:48:53
>>257 プログラムを実行中止状態にすれば、入力待ち状態にはならない。
VBはイベントドリブンだから、普通に書けば、入力待ち状態だろ。
>258 Thread.Sleep だと、指定時間後に制御が戻ってしまいました スンマセン >260 まさしくそのとおりなんです その普通の入力待ち状態に持っていきたいのですが Sub a call b() call c() end sub sub b() exit sub end sub 上の例でa() を実行した場合にb()の中で Exit Subを行うと 呼び出した側のa()に制御が戻るだけですので c()が実行されます そうではなくて、b()内でメソッドを実行するだけで a()の以降の処理も停止する、上の例で行けばc()の処理を 発生させないメソッドはないものかと思案中です・・・。
262 :
デフォルトの名無しさん :2007/07/23(月) 10:17:44
どんな復帰のし方するか知らんが フラグもってイベントでフラグチェックしてe.Cancel使えばどうなのさ?
263 :
デフォルトの名無しさん :2007/07/23(月) 10:52:03
>>261 フラグはちょっと気持ちが悪い(笑)
Subじゃ無くてFunctionを使って、Returnで値を返して、
条件分岐....
その中断の条件が例外として扱ってよい事象なら 例外にしてSub Aのレベルでキャッチする。 ただ通常の分岐なら使うべきではない。
>>261 何か策を弄そう、という発想がこの場合間違い。
そんなことが可能だとして、そんなプログラマの予期を裏切るような
コードが「よいコード」だと思う?
フラグでも何でも使って愚直にやってください。
皆様ありがとうございます dim blnExit as booLean = false Sub a call b() if blnExit = True then Exit Sub call c() end sub sub b() if ---- ---- else blnExit = True end if end sub てなかんじでフラグたてて毎回チェックさせてみます アドバイスありがとうございました
267 :
デフォルトの名無しさん :2007/07/23(月) 12:55:00
そんなこといなくちゃいけないんなら素直にメッセージ出してEnableいじればいいんちゃうんかと もしくはダイアログ出すとか
そのフラグは止めろ、まじで。 戻り値とかには出来んの?
理由は?
sub b の中で最後にcall c()するようにして、 sub bの中で条件によりexit sub するようにしちゃいかんの?
解決してるんだしもういいんではないかと。
272 :
デフォルトの名無しさん :2007/07/24(火) 14:44:35
MessageBox について MessageBoxで、String型の引数1つだけ指定するShow()を実行したとき、 OKボタンはちゃんと現れてくれたのですが、戻り値を受ける形で記述しないと、 OKボタンを押さない内に、表示と同時に先に進んでしまう、といったことは あり得るでしょうか? というか、実はそういう現象になったのですが、以前からMessageBoxって こうでしたっけ?少なくともVB6以前ではこういう事象は経験したことがなく ちょっと驚いております・・・。それともこれは記述に依存する仕様なの でしょうか・・・?
273 :
デフォルトの名無しさん :2007/07/24(火) 15:36:20
>>272 そもそもMessageBox.Show関数に引数1つだけのオーバーロードなんかないと思うが?
274 :
273 :2007/07/24(火) 15:38:22
ごめん、今の間違ってた あるあるw つうか、 MessageBox.Show("hagehage") これで次へ進むにはOK押さないとすすまないんだが? うちのフレームワークの場合 ちなみに2.0 SP1
275 :
デフォルトの名無しさん :2007/07/24(火) 15:54:52
>>274 、ですよね、そうであるはずなのですが、どういうわけか
「ボタン押下を待たずに」、先に行ってしまい、MessageBoxだけは残ったまま
という状態となり、後からボタンを押すとMessageBoxは消えてくれるという
変な状態だったのでした。
これって何だったのか・・・。しょうがないので、とりあえずボタンなどの
引数入れて書き直したところ、ちゃんと待つようになりましたが・・・、
こんなことっておかしいですよね?ちなみにこっちも同じFrameworkは同じ
バージョンでした。
276 :
デフォルトの名無しさん :2007/07/24(火) 16:55:25
DataGridViewにデータをバイドさせて使うとき あらかじめデザイナでカラムを追加し、バインドするカラムの名前をDataPropertyNameを設定していてやる DataGridView.DataSource=dt で、バインドさせるとまず正常にバインドされて表示 このあと同じカラム構造の別のデータテーブルをデータソースに入れるときに Directcast(DataGridView.DataSource,DataTable).dispose DataGridView.DataSource = Nothing としたらこの時点でもともと追加していたカラムがColumnコレクションから消えちゃってる・・・ そのあと DataGridView.DataSource=新しいdt としたら当然DataGridViewcolumnオブジェクトがないので空のDataGridViewにバインドさせたのと同じ状態に・・・・ この動作は仕様ですか?( ゚Д゚)? テーブルバインドさせる時みんなどうやってんの?
277 :
デフォルトの名無しさん :2007/07/24(火) 16:59:10
「画面のプロパティ」のデザインタブのフォントサイズを取得する方法って ありますでしょうか?
278 :
デフォルトの名無しさん :2007/07/24(火) 17:03:49
初心者の質問ですみませんが、どなたかお教えください。 WindowsXP + VisualStudio + VB2005 でWindowsアプリを作ってます。 ここで、タスクトレイにアプリを常駐させて、ショートカットキーで 起動したいと思ってます。例えば、UWSCや日本語FEPのように、 他のアプリがアクティブな状態でもショートカットキーで処理を起動 するのが目的ですが、その方法がわからないで困っています。 FormにNotifyIconコンポーネントを追加して、ContextMenuStripを 関連づける方法で、タスクトレイ上でアイコンを右クリックして、 メニューを表示し、その上でショートカットキーで動作させることは できました。 しかし、メニューをポップアップしていない状態でショートカットキー を入力しても、処理が起動されません。 ヒントでもいいので、よろしくお願いします。
279 :
278 :2007/07/24(火) 18:14:39
RegisterHotKeyを使って、なんとか自己解決できそうです。 お騒がせしました。
280 :
デフォルトの名無しさん :2007/07/24(火) 20:13:50
教えてください! VB2005EXPRESSである機能をもつフォームを作りました。そのフォームをスタートアップフォームにしたときはちゃんと動くのですが、別のフォームをスタートアップにしてそのフォームを呼び出したときはちゃんと動きません。こんなことってあるのでしょうか? (詳細続く)
281 :
デフォルトの名無しさん :2007/07/24(火) 20:46:53
(上からの続き)うまくいかない機能とはDATAGRIDVIEWの部分です。 この中にあるマスタのコード入力用列と名称表示用列を作りました。セルの値が変化したときにDATASETの中身をFINDBYで検索し名称列に値をを自動セットする仕組みです。 この名称取得が該当フォームを別のフォームより呼び出した場合のみ動きません。 何か分かる事があれば教えてください。よろしくお願いします。
283 :
デフォルトの名無しさん :2007/07/24(火) 21:56:07
>282 レスありがとうございます! 仰ているのは例えば変数Aをフォーム1(スタートアップ)、2(DATAGRIDのある方)で共有していてフォーム1から呼び出した場合はフォーム1が変数Aの値を書き込んでいるのでその影響を受けるとかいうことですかね? 頑張って調査します。
284 :
部長 :2007/07/25(水) 09:43:20
アパッチのアクセスログで、 *.co.jpからのアクセスだけ残して、 他は全部捨てる、ってプログラムを VBで書こうと思ったんだけど、どんなもんかな?
285 :
部長 :2007/07/25(水) 09:44:30
アパッチのアクセスログがこんな感じになってて、 afeda.ocn.ne.jp awefre.unko.co.jp fedwa.tinpo.ac.jp co.jpの行だけ残して 他はみたくないんだよ。できる?
For i As Integer = 0 To Me.TextBox1.Lines.Length - 1 If Me.TextBox1.Lines(i) Like "*.co.jp" Then MessageBox.Show(Me.TextBox1.Lines(i)) End If Next i
287 :
デフォルトの名無しさん :2007/07/25(水) 10:03:10
VB.NET2005ではじめえEXCELをCOM参照して操作したが・・・ これ試しにOffice97しかはいってないWin2000に入れたらうごかねぇのw こんなエラーが・・・・ 保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。 アプリケーション動作中の予期せぬ例外が発生した為、処理を中断しました。 俺涙目orz
COM参照ってなんだっけ? APIみたいなもんか? ところでゲイツってCOMとか.NETとか インターネットで使われる用語をすぐに ぱくりたがるよね?
Javaのpackageのようなものはありますでしょうか? ソースをパッケージでまとめたいのですが
VSインストーラでどうぞw
namespaceのことじゃね?
>>291 おぉ!
たぶんそれです。調べてみます。
>>287 バージョン依存のインターフェイスメソッドとか使ってるんじゃね?
COM参照した場合ってバージョン固定になったりしないの?
レイトバインディング
そもそも本当にエクセルを操作していることが原因かどうか怪しいもんだけどねw 俺はまず9割方別の理由だと思う
297 :
デフォルトの名無しさん :2007/07/25(水) 12:38:34
どうも今調べてみたら2007のOffice.Coreを参照してたくさいorz
298 :
デフォルトの名無しさん :2007/07/25(水) 16:42:14
プロシージャ内の変数の宣言するときって、今まで上の方にまとめて書いてたんですが 買った本のサンプルだと使う度にその場所で宣言してるようです。 みなさんどっちですか?
スコープによって変える
上にまとめるやつきもい
上にまとめる意味が分からない
まあ感覚だからね。 うまく例を挙げられないけど、小出しに使う直前に宣言するより まとめて宣言した方が分かりやすい場合も稀にはあるし。
private sub hoge dim i as long . 200行の下で使ってるやつすらもここで宣言 . dim hogehoge as hoge ----延々と200行とか i = 1 hogehoge = new hoge end sub こんな感じじゃね?
ただのCの名残だろ 負の遺産
カウンタ変数をプロシージャの先頭で宣言する意味はほとんどないわな。 使うたびに一々初期化するぐらいなら、ステートメント内で宣言したほうがすっきり。
特に途中で ExitSub とかする場合混乱のもとだな 後で見た時とか、何をどこで使ってるのかもうわけわかめ 経験すれば必要な時に必要なものを宣言するようになると思うんだけど
初期値のないカウンタ変数をどう使うんだ
エスパー的には 宣言した時点で数値なら0に初期化されてるだろ? ってことじゃないか?
それはただの規定値だよもんね
312 :
デフォルトの名無しさん :2007/07/25(水) 23:13:23
>>311 いや、俺もそう思うんだがw
つうか だよもんね とかお前かわいいな( ゚Д゚)
ステートメント内ってなんぞ?
読んで字のごとくじゃないか?
VB.NET2003のRichTextBoxの行番号について質問でうす。 通常の機能じゃ無理で PARAFORMAT2をEM_SETPARAFORMATで使って SendMessageでなげる というのを過去スレで見ました。 試してみたのですが、 数字を右寄せにする方法がわからないのですが ご存知の方がいらっしゃいましたらご教示お願いします。 しかも何故か空白で改行をすると急に番号が振られなくなります。 また、もっと簡単に左側にラベルを配置して 行番号をふるのも試したのですが フォントを合わせても行間が違うのでズレが生じてしまいます。 これも結局、EM_SETPARAFORMATを使ってRichTextBoxの行間を 狭めるしかないのでしょうか? 行番号もRIchTextBoxを使えば行間の違いはなくなるのですが 行番号を表示するだけの為にRichTextBoxを使うのはなんか気持ち悪いので。 よろしくお願いします
残念ながらローカル変数に既定値などというものはない あ、ごめん規定値だったか…
よく覚えてないがC#の話じゃない? VB.NETはVB6の仕様を一部継承してるからプリミティブ型の値型は 明示的に初期化されない場合既定値になる筈
おお!
321 :
308 :2007/07/26(木) 00:47:07
dim i as Integer For i = 0 to 9 Next i For i = 0 to 99 Next i だと初期化いらなくね?
For がまず真っ先にやることを言ってみろ。
323 :
308 :2007/07/26(木) 01:17:16
>>322 まず i に0が代入されて・・・
って初期化は勝手にされるけど
>>306 が言った
>使うたびに一々初期化するぐらいなら、ステートメント内で宣言したほうがすっきり。
という言い方から
dim i As Integer
i = 0 ' ※ 一々初期化する } この2行をまとめて
For i = 0 to 9 ' } For i as Integer = 0 to 9 のほうがすっきり
Next i
っていう書き方してるのかと勝手に想像して
それなら※部分の行いらなくねって言ったわけ。
変数を初期化しなかった場合の既定値(2005) 数値型[0] Char[0] Boolean[False] String[Nothing]※ Date[0001年1月1日0:00:00] Object[Nothing]※ ※参照型 これって.NETも一緒じゃないの? つうか、なにこの浅い議論。
つーかC#だと初期化しないとコンパイルエラーだし
>>323 カウンタ変数はForステートメントの変数の呼び名で
ForEachやDoLoopで使うループカウンタはカウンタ変数じゃないだろ?ってこと?
.NETでは初期化なんてしないし。 初期化を強制してるのはコンパイラだし。
VB2005のMySettingで全ユーザ共通で使用しているApplicationDataの値をPGから変更したいんですがいい方法はありませんか? ApplcationDataじゃなければ各ユーザーごとに違った値になってしまうので嫌なんですが・・・
My爺さんはそういう使用法は想定してないと思う。 っていうかMySettingの存在意義が理解できん俺には。 My爺さんなんか使わずに普通にシリアル化使っても手間は変わらないと思うんだけど。。
330 :
デフォルトの名無しさん :2007/07/26(木) 13:56:03
全くの初心者で一通り調べたのですが、わからなかったのでご相談しに参りました。 現在.netでDBはMysql、そしてodbcを用いてデータグリッドにテーブルの情報を表示させたいのですが、 formにデータグリッドを貼り付けて、その後が全くわかりません。 教えてくださいorz
1.まずODBCデータソースを作成します。 ↓
332 :
330 :2007/07/26(木) 14:18:51
その後はなんでしょう?
2.フォームに貼り付けたデータグリッドは削除したほうがいいです(あとで自動で作られる) ↓
334 :
330 :2007/07/26(木) 14:24:02
了解です、削除しました!
で、バージョンを聞こうか? ここから分岐するw
3.IDEのサーバーエクスプローラで新しい接続を追加(ODBCから選択)し、新しいデータ接続を追加します。(VB2005 2003は同じかどうか忘れた)
337 :
330 :2007/07/26(木) 14:37:22
.netは2003、mysqlは5.0、でございます!
4.おもむろに布団を敷きます。 ↓
あぁ、2003だったのかw もうめんどくさいから 3.ツールボックスのデータからOdbcDataAdapterを選んで対象のフォームに貼り付けるとウィザードが出るので選択しつつ進めていきます
340 :
330 :2007/07/26(木) 14:47:16
いまのところ順調です!!
5.靴下以外を脱ぎます↓
VB 2005でLabelコントロールのテキスト描画をフックする方法を 教えて下さい。
>>342 OnPaintででも、どこでも好きにしてください
>>340 4.データアダプタの作成が終わったら、そのデータアダプタを右クリックしてデータセットの生成クリッコクリッコします。
VB.net でメタクラスってどうやって使うの? Delphiだとこんな感じでかけたんだけど・・・ TAAAClass = class of TAAA;
めた暮らすなんてない しいて言えばリフレクション方面? Typeとか
教えて下さい。 あるパネル内にアクセスキー付きラベル 例(&1) があり、パネル外のテキストボックスにあります。 このままですとALT+1キーを押下した場合、フォーカスがテキストボックスに移動しません。 どうすればよろしいでしょうか?
348 :
デフォルトの名無しさん :2007/07/27(金) 11:04:35
データベースからIDや氏名住所などを取得して表示するまではできたんですが 次へボタンを押すと次のデータを表示させていくやりかたを教えてください
すみません、助けて下さい。。。 Visual Basic 2005 Express Editionで timerを使って、設定時間(例えば 11.5秒や30.7秒)毎にカウントを1ずつ増やすプログラムを作っているのですが、 プログラムの表示時間をストップウォッチで計ってみると、プログラム中では19.8秒なのにストップウォッチでは21.67秒だったりとズレが出ています。。。 プログラムは、 timerのintervalを100 変数『i』に0.1を100ms毎に足して、『i』が設定時間と同じになったらカウント『k』に+1を行なうようにしています。 このズレは直せないのでしょうか・・・ そもそもこのやり方が間違っているのでしょうか?
>>347 >あるパネル内にアクセスキー付きラベル 例(&1) があり、パネル外のテキストボックスにあります。
日本語でよろしく(´・ω・`)
>>348 取得ってのはDataTableにデータを格納したのか?
>>349 ツールボックスにあるTimerの精度なんてそんもんだ。
別のTimerつかいなされ
>>349 Tickイベントで処理を行っていると仮定して、
プログラム1行1行を処理する時間もかかるわけで、
秒数(特にmsec単位)を性格に求めるのは難しいのでは?
352 :
デフォルトの名無しさん :2007/07/27(金) 11:24:22
あるパネル内にアクセスキー付きラベル 例(&1) があり、パネルの外にテキストボックスにあります。 このままですとALT+1キーを押下した場合、フォーカスがテキストボックスに移動しません。 どうすればよろしいでしょうか? これでどう?
>>350 他にもtimerあるんですね。。。ちょっと探してみます
>>351 正直0.1sec毎に表示処理とかイロイロやったら遅くなるよなぁ・・・
とは思ったのですがやっぱり影響ありますよね
>>353 途中に経過表示などの割り込みを入れる場合や、
インターバルが長い場合はクロックの時刻と組み合わせる。
StartTime = DateTime.Now // で保存しておいて
一定時間ごとのタイマーイベントで 経過時間 = DateTime.Now - StartTimeを計算。
予定の時間以上経過したかどうか確認。
355 :
348 :2007/07/27(金) 11:48:57
>>350 そうです
初期画面はID1のデータの氏名住所などが表示されるようにつくりました
>>354 なるほど・・・
その方法で作ってみます。
遅くなりましたが皆さんありがとうございます
知恵をお借りできて本当に助かります m(_ _)m
>>355 横れすだが
現在表示させているデータテーブルのインデックスわかってるんなら次へボタン押したときに+1したデータテーブルのインデックスの情報表示させればいいんじゃないかな?
こんな単純な方法じゃ駄目?
358 :
348 :2007/07/27(金) 12:18:09
そういうやり方で行こうと思ってます for文使えばいけますかね? 初心者ですいません
359 :
デフォルトの名無しさん :2007/07/27(金) 12:22:58
ボタンクリックイベントで IF 表示位置 < DataTable.Rows.Count - 1 THEN 表示位置 += 1 ID = DataTable.Rows(表示位置)(ID).Value 名前 = DataTable.Rows(表示位置)(名前).Value 住所 = DataTable.Rows(表示位置)(住所).Value END IF でいいんじゃ?
360 :
348 :2007/07/27(金) 13:12:07
>>359 表示位置ってのはTextBox1.Textとかのことですよね
エラーで実行できませんでした
361 :
デフォルトの名無しさん :2007/07/27(金) 13:49:15
すみません、わかる方おられましたら、助言をお願いします。 ちょっと長くなってしまいますが、前提から。 今現在、自分のドキュメント作業をExcelをベースに行っており、 また、ドキュメント作成の効率化を進めようとしています。 そのために、Excel VBAで各種マクロを組み、ショートカットキー にマクロを登録して各種ユーティリティを起動する方法をとって ます。 この際、個々に作成されるExcelワークブックに個別に処理を記入 していては、無駄なので、一つのワークブックにマクロ記述を集約 させ、つねにそのマクロ用ワークブックを開いておくことで、別の ワークブックでもマクロ用ワークブックに記載されたマクロを利用 可能としています。 もともとは、Excelのアプリケーションレベルでマクロを作成して、 ワークブックでの操作をしたかったのですが、Excelにはこの機能 がないために断念したためにこういう構成になりました。 しかし、最近ではマクロが大きくなって動作が重いなど厳しい状態 になっているのと、VBAでは開発効率が悪すぎるので、ここをなんと かしたいと思ってます。そこで、Visual Studio Tools for Office を導入したのですが、行き詰まってしまっています。そもそも、こう いうことが出来るのでしょうが。 つまり、やりたいこととしては、 @ Excelのショートカットキーとしてユーティリティが動作する A 擬似的でもアプリケーションレベルの機能として動く B 上記のVisualStudioで開発する ということです。 助言お願いいたします。
362 :
デフォルトの名無しさん :2007/07/27(金) 13:50:09
>>348 表示位置を管理する変数のことですよ。
Dim iSelectRow As Integer = 0 ' 表示位置
Dim tblData As DataTable ' 住所録
tblDataの中にID、名前、住所が入っているとして
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
IF iSelectRow < tblData.Rows.Count - 1 THEN
' 次の行を選択
iSelectRow += 1
' IDの取得
TextBox1.Text = tblData.Rows(iSelectRow)(0).Value
' 名前の取得
TextBox2.Text = tblData.Rows(iSelectRow)(1).Value
' 住所の取得
TextBox3.Text = tblData.Rows(iSelectRow)(2).Value
END IF
End Sub
363 :
348 :2007/07/27(金) 14:30:20
>>362 .Valueを消したら次のデータは表示されるようになりました
その次のデータは表示されません
>>363 もう、Accessにリンクテーブル作成して直接開いて、検索や追加編集をやってもらえよ。
それが一番まともになるぞ。
>>348 だめだ・・・すべてを聞こうとすんなよ
ちったぁ勉強してからじゃないと話にならん
366 :
デフォルトの名無しさん :2007/07/27(金) 15:34:30
>>348 ああ、思いつきで書いたからね。
正しくは、tblData.Rows(iSelectRow)(0).ToStringだね。
>>366 tblData.Rows(iSelectRow)(0).Value.ToStringだ
初心者なんだからむしろItemも書いておいてやれよwwww
>>352 >テキストボックスにあります
ここが悩ましいんだよ!w
アホみたいな質問かもしれませんが、画像を表示するのに Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim g As Graphics = Me.PictureBox1.CreateGraphics() Dim bg As Image = My.Resources.back g.DrawImage(bg, New Point(0, 0)) End Sub だと表示されないのに、これを Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim g As Graphics = Me.PictureBox1.CreateGraphics() Dim bg As Image = My.Resources.back g.DrawImage(bg, New Point(0, 0)) End Sub のようにボタンを押したら実行するとちゃんと表示されるんですが何故? フォームのロードもボタンクリックも同じようにコードが実行されるんじゃないんですか?
まあ自分でいってるようにそれは君自身がアホだから。 なんで質問する前にちったあ自分で勉強しようとは思わないんだ?
VB初心者なのですが、学校の課題でプログラムを組むのですが、
自分じゃよくわからないので誰か作って下さいますか?
環境はVB2005です
ttp://pict.or.tp/ [13293.doc}課題3.doc
[13292.doc]課題4.doc
>>372 ちなみに、学校って何の?もしかして中学校とかじゃないよね??
登校日の7月31日までです
>>377 これ、小数とか負の数だったらどうするの?
課題3って製品名入力する意味あるのか?
380 :
372 :2007/07/29(日) 18:01:20
>>380 じゃ、細かいことは気にしないで作ってみました。
>>372 と同じロダ [13311.zip] 課題4ね。
クラスなんか使ったら代作がバレないな心配w
とりあえず、課題を見たら
>>372 が最初からやる気ゼロだということがわかったw
386 :
372 :2007/07/29(日) 19:35:22
>>381 サンクスです
でもクラス使ってるとバレるな、まだ習ってないし
389 :
372 :2007/07/29(日) 20:10:50
>>387 関数はやったけど、クラスは初心者向きじゃないのね教科書にも載ってない
>>388 工業の情報系です
>自分じゃよくわからないので誰か作って下さいますか? おまぃら・・・PGかSEかしらんがこんなの手伝うなよ・・・・ 意味がないだろ お前らが手伝ってるってことは 将来の無能SEやPGを育ててることとそう変わらないんだぞ
ていうか何で情報系に行ったの?
>>392 そうだよねw
つうか、他の人のソースどんなかな?とかって見ててリアルにコーヒー吹いたwwwww
俺のコーヒーかえせwwwwww
>>394 おま・・・計算結果の書式フォーマットいじってるところのコメント見ろ
追伸 Kadai4\Kadai4\frmClac.vb の40行目だ
ちょwww
これを素で書いてたんだとしたら・・・・
>>392 はものすごい欲求不満
>>372 が気づかないでそのまま提出したら面白かったのに・・・
>>399 なぁに
どうせ読んでないから気づきゃしないさ
というのを期待したい
Wordファイルの素性に言及しない おまいらの優しさに泣いた
>>401 他の板じゃあるまいし
そんなものに興味はない
>>403 説明するより、コード書いてた方が楽だから
>>403 少なくとも371は俺だが、俺は学生クンは一切シカトしてたから一貫はしてるよ。
他人にまでそれを強制するつもりはないが。
C#スレみたいに本スレとふらっとスレみたいに分けるべきなのかもね でも、そしたらほとんど初心者スレに逝け、で終りかもなのね
この場合、スルーすればよいだけなのにレスした
>>405 の性格の悪さが問題なんだろうw
気持ちはわかるが書いてはダメだ。
>俺は学生クンは一切シカトしてたから シカトしてない件について
409 :
デフォルトの名無しさん :2007/07/30(月) 09:56:30
>>389 自分で情報系入ったわけだから、宿題丸投げとか、ありか?
宿題の言語が多過ぎでそのうちの一部がやりきれないとかならわかるけどね・・・
410 :
デフォルトの名無しさん :2007/07/30(月) 10:04:04
同じ画面でモードを切り替えたいんですがどうしたらいいんでしょうか?
411 :
デフォルトの名無しさん :2007/07/30(月) 10:41:15
412 :
デフォルトの名無しさん :2007/07/30(月) 10:58:30
あるパネル内にアクセスキー付きラベル 例(&1) があり、パネルの外にテキストボックスがあります。 ALT+1キーを押下した場合、フォーカスがテキストボックスに移動しません。 アクセスキーを使用してフォーカスをテキストボックスに移動させるにはどうすればよろしいでしょうか?
413 :
410 :2007/07/30(月) 11:00:43
414 :
デフォルトの名無しさん :2007/07/30(月) 11:23:35
>>410 意味がわかりません。
なんのモードなのか?
>>412 アクセスキーは同じコンテナ内じゃないと無理だと思う。
同じパネル内に入れない理由は何?
どうしても両コントロールをパネルの内外に置かなければならない理由があるなら、
FormのKeyPressイベントとかで擬似的にアクセスキー押下の挙動を作るしかないんじゃないかな。
416 :
410 :2007/07/30(月) 11:58:57
質問させてください。 TabControlにて見出しの背景色を変更したいのですが、調べたところ DrawModeをOwnerDrawFixedにして自分で描画する方法が見つかりました。 そこでDrawModeをOwnerDrawFixedにしてみたらTabControlのVisualStyleが 無効になってしまいました。 VisualStyleを有効にしたまま見出しの背景色を変更する方法ってありませんでしょうか。
>>416 お前頭腐ってねえか?
照会、新規、修正モードとか言われても、こっちにはわかるわけないだろ?w
347=372?
420 :
デフォルトの名無しさん :2007/07/30(月) 12:46:36
>>415 thx
パネルは装飾用に使っていたんだけど、やっぱり無理か。
LabelのPaintイベントでやるしかないな。
421 :
デフォルトの名無しさん :2007/07/30(月) 12:47:54
>>410 手っ取り早い方法としてTabControl使えば?
>>420 装飾に使っているだけなら、デザイナいじってパネルの上にラベルを乗せる(パネルのアイテムには含めない)ってのはどうよ?
423 :
デフォルトの名無しさん :2007/07/30(月) 13:51:55
>>422 ちなみにユーザーコントロールにしても同じだよね?
>>423 何が同じ?
いちいち言葉抜かんでくれ。口で会話してるんじゃないんだから。
>>417 VisualStyleも含めて自分で描画する
426 :
417 :2007/07/30(月) 14:36:37
>>425 どこにどういうふうに記述すればよいのでしょう…。
tabcontrolにはPaintイベントがありません。
DrawItemイベントはDrawModeがOwnerDrawFixedの時にしか起こらないようです。
427 :
410 :2007/07/30(月) 16:00:04
>>421 ラジオボタンで切り替えたいんです
ラジオボタンをチェックするとIDや氏名欄は空白にしたいんです
>>427 だからお前頭腐ってるだろ?
>ラジオボタンで切り替えたいんです
>>410 の時点でそんなことは一言も言っていない
>>416 といい、
>>427 といい、こっちはそっちがどういうモノを作っているのか、
どんなコントロールを使用しているのか、どういう仕様にしたいのか、何一つ知らないんだぜ?
いきなり何モードにしたいだの、何を空白にしたいだの言われても解かるわけねーだろ。
まず、質問の仕方から勉強して来い。
ツールバーからデバッグ→開始を選ぶと、「Debugger userグループのメンバーである事を確認してください」と 出て、ソフトのデバッグが出来ません。 使っているOSはWindowsVistaHomePremium、 adoministrator権限を持ったユーザーアカウントを使っています。 他のPCとは接続していません。
430 :
デフォルトの名無しさん :2007/07/30(月) 16:25:51
431 :
デフォルトの名無しさん :2007/07/30(月) 17:23:04
入力項目貼り付けてラジオボタンのChangeイベントで項目のVisible切り替えればええがな
>>410 とりあえず
条件別に表示が必要な項目をあげてみろよ
もう放っておこうよw
434 :
434 ◆nf55XyzMAg :2007/07/30(月) 19:04:09
ちょっと聞いてくださいよみなさん。 スレとあんま関係ないんだけど。 VB.Netで特殊なメモ帳を今作っています。 DBを用いたメモ帳なんですけど、 開いた時にアカウントの選択ダイアログが出て、選択したアカウントのメモグループをツリービューに表示するのです。 メモグループをクリックするとそれに関連付けられた、メモの一覧が出てきます。 一覧のメモをクリックするとメモした文字列とファイルを別ウィンドウに表示するものを先輩と作っています。 本題は実際にはこのソフトのメモグループはミドル、メモ本体はディティールというのですが、先輩はミドルを親、ディティールを子と呼んでいます。 ではツリービューの+マークの付いている行やその下のすこし横にずれている行をなんというのでしょうか? 先輩は親、子と呼んでいますが、ミドルに属していないディティールもあるのでそれを親の無い子って呼んでるんです。 いくら「ミドルですよ。」「ディティールですよ。」っていっても罵倒雑言の嵐。 本でツリービューの+マークの付いている行やその下のすこし横にずれている行を親、子って説明しているんです。 先輩が間違っているのか本が間違っているのか教えてください。お願いします。
435 :
デフォルトの名無しさん :2007/07/30(月) 19:10:10
おい、貴様ら。
もうそろそろ、
>>370 に手を差し伸べてはいかがですか?
彼にとっては突き放されることこそが最大の援助だろう。真面目な話。 というかこの程度の問題を自分で解決できないなら(以下略
>>436 =
>>370 ?
わからないから違うかも知れないけど、
Loadで書いたプログラムでは「一度描画されているが消えている」んだと思う。
Clickで描画したものも他のウインドウを手前に持ってくるとその部分消えるし。
439 :
370 :2007/07/30(月) 21:24:05
>>438 いや436は私じゃないです
>Clickで描画したものも他のウインドウを手前に持ってくるとその部分消えるし。
本当だ、消えますね?
HSP厨から卒業しようと思ってVB Expressの勉強始めたんですが全然勝手が違いますねえ
何で命令使うのにいちいちdimで宣言するのかすら分からない
何の利点があるんだろ?
>>437 入門書見ながら頑張ってみます
>>439 たぶんその宣言でメモリ領域を予約するためだ
つうか、普通の言語はどれもそういう宣言があるんだよ
宣言強制しとけば間違った使い方もなくなるし
VB6みたく2005でも変数宣言の強制はオプションではずせるんじゃなかったっけか・・?
俺は絶対いやだけど
回答がついた途端に
>>370 が出てきたのにワロタ
ずっと見てたなら質問しなおせばいいのに。
442 :
436 :2007/07/30(月) 21:46:55
>>439 ヒント:CreateGraphicsメソッドは描画、画像表示はImage.FromFileメソッド
>>440 変数は分かるんですけど、
Dim g As Graphics = Me.PictureBox1.CreateGraphics()
g.DrawImage(bg, New Point(0, 0))
何故DrawImageを使うのにgという変数?を宣言するのかがわからんです
>>370 の件、timerイベントで試してみたけど表示されなかった
イベントによって同じコードでも動き方が違うのか?
>>441 いやそんなふいんきじゃなかったんで・・・・・・
>>442 描画と表示は別なんですか
ありがとう、がんばって調べてみます
しかしじゃあ何でボタンの時だけ表示されるんだろう?
全部表示されないなら分かるが
370の人
本当真面目に勉強したほうがいいよ。
GDI+(というかWindowsの描画の考え方)は別に難しくない。
っていうか、どぼんとか@itとか、今時初歩的な内容ならタダで親切な解説が
いくらでも読めるのになんでいきなり「掲示板で質問」とか短絡するんだろう。
>>442 おいおいいい加減なこと吹き込むなよお馬鹿さん。
なにがヒントだw
446 :
436 :2007/07/30(月) 22:07:15
>>445 ん?
ピクチャボックスに画像表示でしょ?
PictureBox1.Image = Image.FromFile()
プロジェクトリソースの場合は
PictureBox1.Image = My.Resource.リソース名
CreateGraphicsはPaintイベント使わないと消えるんじゃないの?
CreateGraphics自体あんまり使わないから詳しいことは知らないけど。
馬鹿アホ呼ばわりされてもいいけど、きちんとどこを指してるのか
指摘してくれないと困る。
>>455 何で同じコードなのに?という疑問が先にたって書き込んでしまいました
すいません
紹介していただいたサイト見て勉強します
>>446 ピクチャーボックスのImage プロパティにImageを設定するやり方は
あくまで(コスト度外視で)簡易的に画像を表示する方法であって王道ではない。
もしこれが言いがかりだと思ってるなら君も初歩から勉強が足りなすぎるよ。
449 :
436 :2007/07/30(月) 22:14:28
>>448 何を勝ち誇ってるのか知らないけど
どういう方法を選択するのかを決めるのはプログラマでしょ?
>>370 ぐらいの初心者にそういうアドバイスは
あなたの単なる自己満足でしょ。
あなた回答もしないのに性格極悪だね。
>>449 地獄への道は善意で舗装されている、という言い古された言葉をしらないのか君は。
451 :
370 :2007/07/30(月) 22:24:03
自分のせいで雰囲気悪くなってすいません
452 :
436 :2007/07/30(月) 22:24:30
>>450 だから、そういう抽象的な自己満足ならレスしないでよ。
>>442 をどう解釈するかは
>>370 なんだって。
>>448 の主張こそ
>>370 を縛る「善意の舗装」だってどうして気づかないわけ?
某スレにも回答しないのに回答者にダメ出しばっかりしてる人がいるみたいだけど
あなたじゃないの?
>>448 ちょいまて。
PictureBox.Image を使うのが王道でないならそもそも PictureBox を使う意味なんか一切ない。
ということを踏まえての発言だよな?
454 :
436 :2007/07/30(月) 22:29:28
455 :
438 :2007/07/30(月) 22:30:51
456 :
370 :2007/07/30(月) 22:36:35
議論の沈静化になるか分かりませんが、
>>370 は画像の重ね合わせのサンプルを
参考にしたもので、本ではその後別の画像を透過色を指定して描画しています
試しにまず一枚描画したとこformのロードイベントでは表示されなかったので質問した次第です
>>456 いつもこんな感じだから別にあなたのせいじゃないよw
>>453 なんでそういう風に短絡するかね。
たとえ話で言えば、スナップショットを撮るときにコストを度外視していつもポラロイドを
使う奴がいたらそいつは馬鹿だが、だからといってポラロイドの価値がゼロってわけじゃない。
たとえばスプラシュスクリーンとかバージョン情報のダイアログにPictureBoxを
使うのが悪い選択とは俺も思わない。
ただ、王道をスキップしてコスト高の手抜き手法のみ教えるのは馬鹿だといってるだけね。
459 :
デフォルトの名無しさん :2007/07/30(月) 22:56:58
>>458 君の論理の飛躍のほうが世間的には受け入れられないと思うが・・・
とりあえず 458 が日本語に不自由な人だというのは分かった。 からもういいや。
で、結局王道のやり方ってなに? Private bg As Image = My.Resources.back Private Sub PictureBox1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint e.Graphics.DrawImage(bg, New Point(0, 0)) End Sub でいいの?
462 :
436 :2007/07/30(月) 23:23:33
たぶんExcelスレで初心者を煽り倒してる人でしょう。 全部文章で1行も回答しないところも一緒。 こっちでも玄人のフリできると思ったのかな。
>>462 下らん。
そういうのを「逆ギレ」という。
もし反論があるのなら俺の言った内容に関して反論してくれ。
PictureBoxのImageプロパティを使う方法は画像の描画方法としては邪道の部類。
これ間違ってる?
エクセルスレなんて行ったこともないが、仮に俺がそのエクセルスレの人物と
同一人物だったら何だというのだw
>>463 >これ間違ってる?
もっと自信もちなよ。
>エクセルスレなんて行ったこともないが、仮に俺がそのエクセルスレの人物と
>同一人物だったら何だというのだw
時にこういう開き直りも大事だと思うよ。
ごめん、勉強があるから。
>>463 は王道なコードをびしっと書いて終わりにすればいいのに。
>463 王道コードプリーズ
王道!が流行しそうじゃないかw
370がなんだかいじらしく思えたきたw おそらく超初心者だな 最初は疑問だらけだろうがガンガレ
>>463 俺にもその「王道」とやらのコードを教えてくれないか。
後学のためにぜひともお願いしたい。
王道を見せてくれると聞いたので 嘔吐しそうですがやってきました!!!!
473 :
デフォルトの名無しさん :2007/07/31(火) 09:45:12
ゴッチが死んだのに、なんで全日の話題に走る? ストロングスタイルのコードを見せろよ。
imageプロパティがコスト度外視ってのが理解できない。 どういうこと?
プログラムでいうコストって表現は何を示すのだ? 処理の早さ?
476 :
デフォルトの名無しさん :2007/07/31(火) 09:51:07
実行時間コスト? リソースコスト? 金額コストw 手間(作成こすと?)?
>>463 >これ間違ってる?
「それを邪道とするのが一般的だ」という主張であれば、間違ってますね。
そもそもそんな瑣末なコストを気にしなければならないシチュエーションで
VB.NET なんか使う奴は莫迦です。
まあ馬鹿な連中っていうのはこうやって自分自身の居場所を自分で破壊するんだな。 こういうくだらないレスが連続すれば、回答者側に回るポテンシャルの持ち主ほど 必然的にここに来なくなる可能性が高いことぐらい理解できないほど馬鹿なのかね。 それとも、昔話のサソリみたいに、自分も沈むと分かっていても自分が乗ってる 蛙を刺さずにはいられない類の精神の病み方をしているのか。 たぶん両方だろうね。
>479 その高いポテンシャルのコードを見せてくれ
483 :
デフォルトの名無しさん :2007/07/31(火) 14:08:42
ヤフオクの注目を一括して設定したいのですが、ちょっとご意見を聞かせてください 1.出品一覧を取得しGridに表示 2.SHDocVw.InternetExplorerを使ってソースを読み取りStringReaderに展開(innerHTML) 3.1行づつ読み込み、設定 という流れで処理していますが、3で無理やり感がしています。 特に3での処理が長くいので、連続してやっていくとエラーが良く出るのです。 スマートでエラーが出にくい書き方ってありますか?
あるテキストの最後が改行コードかどうかを調べるにはどんなかんじのプログラムを書くの?
とりあえず改行コードは何を使うのか聞こうか
古いVBを引きずっていいよ派:
If Right(hoge, 2) = vbNewLine Then
VB.NET なんだからさ派:
If hoge.EndsWith(Environment.NewLine) Then
まあその前に
>>486 か。
まだやってるのか 双方とも厨まるだし
王道!王道!王道!
NewLineとCrLfの違いは?
みたまま全然違うじゃん
vbNewLine と vbCrLf は等価。 vbCrLf と vbCr & vbLf も等価。 Environment.NewLine と vbNewLine は Windows では等価。
ちょっと王道でラーメン食ってくる
じゃ俺、尿道に割り箸突っ込んでくる
ToolStripのボタンの、ドロップダウンのボタン、 ToolStripSplitButtonやToolStripDropDownButtonに、 選択中を示す「Chekedプロパティ」みたいなのってないんでしょうか? ToolBarから移行しようと思ったんですが、にんともかんとも…。 ってか、この2つ、見た目(分かれてる)以外に何が違うの?
VB.Net2003でWinアプリを開発してます。 ListViewを使用してアイコン表示してるのですが、場合により そのアイコンに記号を重ね合わせて表示したいのです。 たとえていうなら、Explorerでショートカットファイルはオリジナルファイルの アイコンと、ショートカットを示す小さな矢印アイコンが合成される、あのイメージです。 あらかじめ使用するだけのアイコンをすべて用意しておいて、ImageListに埋め込んでおけば いいのかもしれませんが、そういうわけにもいかないので・・・。 具体的にやりたい方法は、 FormLoad時にListViewの各種ImageListを設定 それらのImageListにはImage.FormFileで動的に取得 条件により小さな記号を重ね合わせて表示 てな感じです。 .Net1.1のListViewではオーナードローは無いみたいですし、2.0にはまだ移行できない現状ですし・・・。 何か良いアイディアがあれば教えてください。
498 :
496 :2007/08/01(水) 10:59:57
普通のToolStripButtonの横に、 イメージをクリアしたToolStripDropDownButtonを配置することで、 希望していたものが作成できそうです。 どうもお騒がせしました。
499 :
デフォルトの名無しさん :2007/08/01(水) 11:52:40
>>497 ListView.ImageListを切り替えて使うのはどう?
If ある条件 Then
TreeView1.ImageList = ImageList1
Else
TreeView1.ImageList = ImageList2
End If
500 :
497 :2007/08/01(水) 12:09:25
>>499 レスありがとうございます。
やりたいのは、動的に生成したImageListと、ListViewItemの状態により
記号の付加です。
付加したい記号は固定なのでImageListにしてしまおうと考えています。
つまり、動的に生成したImageListでListViewItemを表示し、そのListViewItemの
状態が1なら○
状態が2なら△
状態が3なら×
状態が0なら記号なし
みたいに状態をあらわす記号を付加してListViewItemに表示したいのです。
言いたいことが伝わりますでしょうか?
501 :
デフォルトの名無しさん :2007/08/01(水) 13:08:22
>>500 記号を付加したアイコンをその都度作成するしか方法はないんじゃない?
502 :
497 :2007/08/02(木) 14:01:16
>>500 レスありがとうございます。
やはりそうなりますよね・・・。
ListViewのアイコンにレイヤみたいなのが使用できればよかったんですけど。
ありがとうございました。
やや漠然とした質問で申し訳ないんだけど、 ComboBoxのOnDrawItemの中で、DrawItemEventArgsのGraphicsプロパティではなく、 あえてComboBox.CreateGraphicsでGraphics取得して描画した場合何か想定される 問題ってあるかな? そもそもそんなことする必要ないだろ、って突っ込みがきそうですが、 説明すると長くなるので省略しますがとにかくその必要はあるのです。 こういうのは結局Win32に明るくないとよくわからない。
ダブルバッファにしたときはまる。 やらないだろうけど。
リストビューで列ヘッダーのサイズ変更を禁止にするにはどうすればよろしいでしょう?
>>504 よかったら詳しく。
それと、それは(Win9xの場合も含めて)通常は問題ない、という意味にとっていい?
507 :
デフォルトの名無しさん :2007/08/03(金) 12:16:54
うわぁぁぁああ! ビルドしたら突然IDEが落ちる!!! DebugでもReleaseでもIDEが落ちる!!!! さっきまで普通にビルドできていたのに! そういや全てのフォームのリソースがどうのこうのってビルドエラーが1回でたな・・・ どうやったらビルドできるようになるんだ!?!?
空のプロジェクトでも落ちるん?
>>507 前にもどこかに書いたけど、WinFormのGUI部品を継承したクラスで妙なことやってると
そういった現象が発生する場合はあるみたいだ。
510 :
デフォルトの名無しさん :2007/08/03(金) 13:42:09
VS2003です. フォームを閉じるとき,その操作が(戻るボタンなどの)ボタンによるもの なのか,それともフォームの閉じるボタンによるものなのかを判定するには どうしたらよいでしょうか? ボタンが一つ(btnBackとする)なら,Closingイベントで, If sender Is btnBack Then〜 とできるのですが,ボタンが複数ある場合はどうしたらいいでしょう?
511 :
510 :2007/08/03(金) 13:58:34
すみません,下2行は無視して下さい. senderはどちらにしても該当フォームになるんでしたね.
VB.NET2005で最終完成でこれいじょうバージョンアップのときに購入させられることありませんよね?
514 :
510 :2007/08/03(金) 15:23:51
>>512 ありがとうございました.けっこう面倒なんですね…
>>513 何言ってんだ。
OSも開発環境も、買わせる為にバージョンアップを繰り返してるってのに。
516 :
507 :2007/08/03(金) 16:49:28
原因はなんなんだろうなぁ・・・
ビルドしたかったプロジェクトを含むソリューションには複数のプロジェクトがあったんだけど
とりあえず今ビルドしたかったプロジェクトだけを含むソリューションを1つだけ作成して
ビルドしたら正常にビルドできて普通に動作してるよorz
これ以外のプロジェクトもそれぞれ単体でビルドすればイケるんだけど、
まとめてあるソリューションを開いてビルドすると落ちる・・・
>>509 kwsk
>>516 だからさ、もしプロジェクトで自作の継承コントロールとか複合コントロールを
使ってるならそいつが臭いかもよ、って話よ。
ただ、俺の経験した現象は、その自作のコントロールを使ってるフォームを
デザイナで開くとIDEが落ちる落ちる、というものだったけど。
もちろん落ちるのはその自作コントロールのコードに問題があるからであって、
意味なくやたらと落ちるわけじゃないけどね。
>>517 さんくす。
確かに自作コントロールを使用しているプロジェクトはあるんだけど、
そのプロジェクト単体のソリューションではちゃんとビルドできるんだ。
で、結局、新規に空のソリューションを作成してから今までの各プロジェクトを
追加したら普通にビルドできるんでやんのw
>>517 みたいにデザイナで開くとIDEが落ちる、というのとはちょっと現象が
異なっているんよ。
原因はわかっていないけど、とりあえず今は正常にビルドとかできてるし
なんとかこのまま乗り切れたらいいのになぁ。
原因が解明できてないのでまた同じ現象に陥ることもあるかもしれないけど。
余計なお世話だろうけど、寝た子は起こして原因は究明しといた方が 後々安心だよ。 とりあえず別のPCにIDEインストールして「落ちる」リソルーションを読ませて 確認することで、原因が環境にあるのかプロジェクトにあるのかの切り分けはできるでしょう。
520 :
デフォルトの名無しさん :2007/08/03(金) 22:16:55
WebBrowser上のマウスの座標を取得する方法を教えてください。
Control.MousePosition で充分だろ
exeのアイコンを取得したいんですけど、 Icon.ExtractAssociatedIconでは複数のアイコンが含まれたexeから 2番目以降のアイコンを取得することは出来ますか?
523 :
デフォルトの名無しさん :2007/08/03(金) 22:29:54
>>521 WebBrowser上のマウスの座標を取得する方法を教えてください。
>>522 無理 頑張ってWin32API
Webを探せば余裕で見つかりそうだが
>>524 dクス
あちゃーWin32か…
ちょっと頑張ってみます
教えてください。 ControlPaint.DrawCaptionButtonで、閉じるボタンなどの描画ができますが、 ビジュアルスタイルを適用していないボタンしか描画できません。 ビジュアルスタイルが適用された閉じるボタンを描画する方法はありますでしょうか? よろしくお願いします。 環境はVB2005 Expressです。
VisualStyleRenderer and VisualStyleElement
おおー2.0からそんなクラスが追加されてたのか知らなかった
529 :
デフォルトの名無しさん :2007/08/06(月) 00:51:43
JAVAみたいにArrayListで、 A = list(cnt++) B = list(cnt++) ・ ・ ・ みたいな感じで取得できませんか?
自分でラップしてそういうクラス作るだけじゃないか。
コンボボックスのボタンで開くようなポップアップウインドウのようなものを 作りたいのですがうまくいきません。 縁無しウインドウをモーダルで開くとそれっぽく見えるのですがタスクが移動して しまいコンボボックスのそれとは違うようです。 良い方法がありましたら教えて下さい。
532 :
526 :2007/08/06(月) 10:23:16
533 :
デフォルトの名無しさん :2007/08/06(月) 16:15:06
皆さん教えてください、よろしくお願いします。 MessageBox のように戻り値を持つFormを作成するにはどのようにすればよいでしょうか。 何かそれように使える特定のクラスがあるでしょうか。
フォームにプロパティをつけて、そのフォームをShowDialogで開く。 閉じられたときに、そのプロパティを取得する。 みたいな感じでいいんじゃない? まんまダイアログでいいなら、追加→新しい項目→ダイアログ でダイアログ追加してそれをカスタムするとか。
535 :
デフォルトの名無しさん :2007/08/06(月) 17:37:46
つうか DialogResult
oh! DialogResultって普通にフォームのプロパティやったんやな…
537 :
533 :2007/08/06(月) 18:08:26
>>534-536 DialogResult というプロパティがあってそれを変更しておけばいいのですか、
なるほど、わかりました!!
ありがとうございました。
モーダルなダイアログなら、フツーはShowDialogの返り値を取得するんだけどね。 いつものことだけど、このスレにもc#のスレにも結構テキトーなこという奴がいるんで 話半分に聞いた方がいいよ。 モーダレスなフォームで閉じられた時に何らかの値を「返す」ようにしたいのなら 例えばValueEnteredのようなイベントを自作して、ValueEnteredEventArgsのプロパティとして 返り値が取得できるようにした方がわかりやすいと思う。
と本日一番てきとーな答えが返ってきました。
と、暇人が申しております。
541 :
デフォルトの名無しさん :2007/08/07(火) 08:58:11
つうか、親画面が生成したモードレス画面のClosingイベントか何かにイベント関数設定すればよかんべ。 VB6とちがって、 AddHandlerつう便利な呪文があるんだから。 イベント関数は別にそのイベント発生フォームにある必要がない。
>>538 モーダレスなフォームが閉じられた場合、どこがその返り値を受け取るのさ?
モーダレスの場合は、閉じられる側のフォームが値を押し付けるしかできないだろ。
ってか533は「MessageBox のように戻り値を持つFormを作成するには」って書いてるのに、なんでモーダレスの話になるのさ?
543 :
デフォルトの名無しさん :2007/08/07(火) 10:03:02
>>542 >>538 じゃないが、つくりにもよるが、
>>541 に書いたとおりだよ。
モードレスフォームから受け取りたいと思ってる画面が、Closeingイベントか何かにイベント関数登録しとけばいいだけ。
その、受け取りたい側は別に1つである必要はない。
モードレス側がイベントをブロードキャストするだけ、おらっちしぬけどいいべか?って。
んあー、、っと、AddHandlerで、モーダレス側のClosingの時に、親の方のメソッド走らせるってことか。 んなことできるのか!
545 :
デフォルトの名無しさん :2007/08/07(火) 10:16:02
そこが楽しいところですよ。 コントロールダブルクリックしてイベント書いてるだけじゃVB6と変わらない。 Delegateの仕組みというか其のあたりを理解すれば、また違う世界が・・・。
546 :
544 :2007/08/07(火) 10:20:39
>>545 (*´Д`*)試したよ。出来たよ。
戻り値欲しいときは全部モーダルで開いてたんだが、これで世界が変わりそうだぜ!
AddHandlerもよく使うのにこういうことに頭回らなかったなー。
547 :
デフォルトの名無しさん :2007/08/07(火) 10:26:27
AddHandlerって、イベントの呼び出しスタックに関数を登録するイメージだから。 イベント発生時に、そのスタックのDelegateを順次呼び出し。 まあ、注意点は順序でしょうか?基本は登録順だから(確か変えられたけど) 通信系とか、その他でも、この使い方知れば、関連フォーム、クラスにブロードキャスト可能。 フォームだけじゃないことも大事なところ。
>>538 >>542 ×モーダレス
○モードレス
>>544 そりゃ、
・ 一つのイベントハンドラを複数のコントロールで共用したいとき
・ 動的に生成されるコントロールのイベントを捉まえたいとき
なんかのために、イベントハンドラを動的に設定するためのもんなんだから
出来なきゃ困る。
>>548 よくある勘違いだが、それは「モードレス」っていう表記の方が間違ってるんだよ。
モーダル ⇔ モーダレスという表記が正しい。
550 :
デフォルトの名無しさん :2007/08/07(火) 12:34:47
かたかな表記はどっちにしても間違いってのが、ゼミの教授のお言葉。
>>549 いや、modeの語尾変化でmodalとmodelessだからモーダルとモードレスだろw
そりゃmodeの音が「モード」だという思い込みを前提としているからそういう判断になる
こまかいなぁ
くだんね
modeの発音記号は[moud]で一番近い日本語表記はモードですぅ〜>< ってかくだらんことで意地張ってレス消費させるなw
>>552 はi mode も アイモーダとか発音してるんだぜ(´ー`)
↓下らん流れを変える、質問よろ。
まぁ表記がどっちだろうと構わないが、一般的なのはどっちなのか グーグル先生に聞いてみた。あとはご自由に。 モーダレス 1,470 件 モードレス 29,500 件
560 :
デフォルトの名無しさん :2007/08/07(火) 13:52:39
初心者です、2点わからないことがあるので教えてください。 1点目が、データグリッド内に指定した行数だけデータを表示させる方法。 2点目が、ページング機能のプログラムの書き方。 この二つの方法をご教授ください。
>>560 環境も書いてくれ。
VS2005とか。
562 :
デフォルトの名無しさん :2007/08/07(火) 14:04:31
すいません 書き忘れです。 .net2003でmysql、odbc使ってます。
563 :
531 :2007/08/07(火) 16:47:33
すまんが、>531にもなにかヒントちょうだい
>>563 答えが返ってこないのは、質問が漠然としているからでもあると思うよ。
君は読み手のESP能力を無意識に期待してるんだよ。
なぜ読み手の立場にたった文章が書けない?
例えばこのスレの標準的な読み手ならこう思うんじゃないか?
-------------------------------------------------------------
結局こやつは何がしたいのだ?
パネルやラベルを任意の位置に表示すれば済むように感じるのだが、
それではダメなのだろうか?
ダメだとしたら何故?
というか、なぜこやつは読み手にエスパーであることを要求して平気なのだ?
-------------------------------------------------------------
つか、「タスクが移動してしまい」の意味が解らん…
>>563 ShowInTaskbarをFalseにする。
567 :
デフォルトの名無しさん :2007/08/07(火) 22:01:42
Form を画面の中央に配置する場合、最も普通に行う方法はどのようなものでしょう? VB6の時代には、Screenのサイズから割り出してTopとLeftを指定しました。 そうではなく、何か簡単な一発メソッドか何かで指定可能でしょうか。 また、画面が複数ある場合にも対応可能でしょうか。 なにとぞよろしくお願いします。
StartPosition
569 :
567 :2007/08/07(火) 22:16:59
>>568 おお、助かります。やはりなんでも用意されているのですね!!
ありがとうございました!!
>>563 率直に言わせてもらう。
意味がわからん。
>>563 パネルとかを動的に生成して、任意の位置に最全面で表示させればええんじゃない?
試してないけど。
572 :
デフォルトの名無しさん :2007/08/08(水) 12:02:16
>>560 SQL文で必要な行数を持ってこいとすれば解決するのでは?
そうすればグリッドはただ表示するだけなんだし。
573 :
デフォルトの名無しさん :2007/08/08(水) 13:34:45
すみません、ボタン・コントロールの ForeColor に教えてください。 このプロパティを標準以外に変更しようとしてBlueなどを代入してみたのですが 変更できませんでした。これは単純には変更できないとしますと、 何か別のプロパティを先に変更しておく必要があるでしょうか。 その場合何を変更しておけばよいでしょう?よろしくお願いします。
574 :
573 :2007/08/08(水) 13:36:02
>>573 すみません間違えました。訂正します。
>ForeColor に教えてください -> ForeColor について教えてください
.ForeColor = Color.Blueで効くはずだけど? VisualStyleが腐ってるんじゃね?
>>573 FlatStyleプロパティがSystemになってるとForeColorの設定いじっても変わらない。
すみません、質問させて下さい。 DataGridViewにて、CellPaintingイベントで、セルの中身を自分で描画しようと思ったのですが、 Dim rect As New Rectangle(e.ClipBounds.X, e.CellBounds.Y, e.CellBounds.Width / 2, e.CellBounds.Height) e.Paint(rect, DataGridViewPaintParts.Background + DataGridViewPaintParts.Border) e.Handled = True イベント内に以上のように書いた場合、セルの左半分だけ背景とボーダーが描画されると思ったのですが、 実際実行してみたところ、セル全体に背景とボーダーが描画されてしまいました。 rectを(1,1,1,1)なんて指定してみたところで、関係なくセルの全体が描画されているようでした。 これってrectで範囲指定ができないバグなんでしょうか? それとも自分の書き方が間違ってるんですかね?
578 :
デフォルトの名無しさん :2007/08/08(水) 16:18:26
>>576 FlatStyle プロパティを System にしていました。><
むかし VB6 のときは、GraphicStyle だとかにすると色関係が
帰られたかと思いましたが、VB.NETではどうやっても無理ということ
なのでしょうか?
>>575 VisualStyle はググッたのですが、もしかすると WinXpの
ということでしょうか。
579 :
デフォルトの名無しさん :2007/08/08(水) 16:22:11
>>578 FlatStyle プロパティを System にしていましたのは、
Flat ですと見た目のインパクトが弱いためで、
その形が使いからでした・・・
581 :
デフォルトの名無しさん :2007/08/08(水) 16:59:37
>>580 なるほどー。
ただやってみたのですが、BackColor が
System のときと同じように、立体的なテキスタイルになる
とうれしいのですが、可能でしょうか?
自分の環境だとStandardとSystemの外観がまったく一緒なんだが、違うのかな…?
>>582 そうなのでした、これはもしかしたら、WinXPの設定なのですかね・・・。
質問者はOSとIDEの環境くらい書いておくれ。
585 :
デフォルトの名無しさん :2007/08/08(水) 20:03:51
>>584 すみません、OS は WindowsXp で、IDE は VS2005Pro でした。
そういえば、Xp は
>>575 さんの VisualStyle がありました、
これで変更してるから表示が変わるのですね。
Delegate ステートメント
ttp://msdn2.microsoft.com/ja-jp/library/twsk0311 (VS.80).aspx
Delegateについて勉強中なのですが教えてください。VB2005EEです。
上記の使用例で書かれているコードについてなのですが
Delegateがどのように役立っているかが全くわかりません。
Protected Sub Test()
AddNumbers(5, 3)
SubtractNumbers(9, 3)
End Sub
と書いたほうが良い様に思うのですが。
@ITのデリゲート入門でも読めば? あんまりいい記事じゃないけど、デリゲートの存在意義は馬鹿じゃなきゃ理解できるはず
お前はいまとどめをさしてしまった…
イベントとか コレクションのSortとか
590 :
586 :2007/08/09(木) 01:09:19
Windowsアプリで質問です。 ユーザーコントロールを作成し中にLabelとPictureBoxを配置しました。 このユーザーコントロールを貼り付けたフォームで、このユーザーコントロールのMouseHoverイベントを 使用したいのですがLabelとPictureBox以外の領域でしかMouseHoverイベントが発生しません。 このユーザーコントロール中(LabelとPictureBoxとそれ以外の領域全て)でMouseHoverイベントを 発生させるにはどのようにすれば良いでしょうか。
Private Sub UserControl1_MouseHover() Private Sub Label1_MouseHover() Private Sub PictureBox1_MouseHover() でいいんじゃね?(未確認)
>>591 しばらく前にほとんど同じ質問があったなあ。
過去ログ見れば参考になるサンプルコードが見つかるはず。(確か俺が書いた)
まあ要は、自分の内部コントロールのイベントを拾って、
あたかも自分のイベントのように偽装(っていってもOnXXXX呼ぶだけ)すればいいだけだよ
>>592 解答ありがとうございます。
その記述をフォーム側に書くと言うことはLabelとPictureBoxをパブリックなプロパティにするということですね。
この場合、ユーザーコントロール内のマウスの位置によって3種類のMouseHoverイベントが起こるのが
ちょっとまずいです。
ユーザーコントロール内でマウスを動かしているだけで何度もイベントが発生するからです。
イメージとしてはユーザーコントロールと同じ大きさの透明のコントロールを最前面に配置して
その透明のコントロールのMouseHoverイベントを使用したい感じです。
>>593 ありがとうございます。
過去ログを探してみます。
よろしければ検索のためのキーワードみたいなものを教えてもらえないでしょうか。
>>593 内部のイベントを全て自作のイベント(MouseHoverExみたいな)にまとめて外部に公開するってことですかね。
そうするとやっぱりそのコントロール内でそれぞれのコントロールにマウスを合わせる度に同じイベントが発生
してしまいます。
Clickイベントなどはこの方法で実装しています。
>>595 一個前のスレの363以降だね。
っていうか、593のヒントから自分でゼロから考えた方が楽しいぞ
>>594 じゃあさ、MouseHoverイベントを使って
何をやりたいのかも書いておいたほうが回答もらいやすいぞ。
君がこれだ!って思う方法が可能とは限らないんだから。
>>598 やりたいことはメニュー型のランチャーのサブメニュー項目のようなコントロールです。
使ってない人にはさっぱりかもしれませんがメニュー型ランチャーのOrchisでいう
サブメニューのような感じです。
画像とテキストを含んだユーザーコントロールにMouseHoverすると新しいFormを
Showすると言うような動きがしたいです。
>>597 了解です。
しばらくちゃんと自分で考えてみます。
vb2003でGraphicsオブジェクトを使用して画像を合成しています。 単純に合成はできるのですが、乗算で合成したいなぁ、と思って Graphics.MultiplyTransformなるメソッドを使用してみたのですが 乗算になっているようには見えません。 Photoshopでレイヤーを乗算にして描画される、あのイメージだったんですが このメソッドで良かったのでしょうか? g.DrawImage(imgA, rect) Dim transformMatrix AS New System.Drawing.Drawing2D.Matrix transformMatrix.Translate(1.0F, 1.0F) g.MultiplyTransform(transformMatrix, System.Drawing.Drawing2D.MatrixOrder.Append) g.DrawImage(imgB, rect) こんな感じでやってます。
ドキュメント読めばわかるが、MultiplyTransformはワールド変換のためのメソッド。
つまり座標変換。
System.Drawing.Graphicsというかその基になってるGDI+には色合成処理は用意されてない。
アルファブレンドはできるけど。
ので頑張って自前で実装するしかない。探せば見つかるかもしれないけど。
ttp://blog.livedoor.jp/junki560/archives/23254191.html DelphiのコードだけどGDI+の乗算カラーフィルタのサンプルを見つけた。
参考になるかもしれない。
// そういえばPaint.NETは今どうなってんだろ。
そりは変換行列の「積」なんでは?w レタッチソフトの「乗算」の処理内容を具体的に知らないので抽象的なアドバイスになって 申し訳ないけど、たぶんカラー行列を使うんじゃないかな?(DrawImageのオーバーロードを見るべし)
IME制御の質問です アルファベットしか入力し得ないテキストフィールドなので、そのフィールドでの 入力時はIMEの変換モードを英数に固定しようとして hWnd = TextBox1.Handle hIMC = ImmGetContext(hWnd) If hIMC <> 0 Then ImmSetConversionStatus(hIMC, IME_CMODE_ALPHANUMERIC, IME_SMODE_NONE) ImmReleaseContext(hWnd, hIMC) End If のようなことをFormのActivate時に実行してみたのですが、指定したフィールドだけでなく、 全ての項目にこの設定が適用されてしまいます。 その項目だけに効果を与えるにはどうすればよいのでしょうか?
>>603 MSDNライブラリのTextBoxのメンバ一覧を穴があくまでじっくり読む
>>604 お返事ありがとうございます。
ただ、もし ImeMode の事を言われているのであれば、それが使えない環境なので・・・・・・。
そうでないのであれば、ちょっと判りませんでした。
.NET Compact
608 :
デフォルトの名無しさん :2007/08/11(土) 11:37:08
すみません、教えてください。 Labelコントロールにおいて、現れている文字列を、マウスの操作でクリップボードに コピーすることは普通はできないと思いますが、もしかしてそういうことができるように するためのプロパティとかは存在しないでしょうか? どうしても不可能な場合はボタンかまたはコンテキストメニューでもつけて クリップボードにコピーするなどは考えられるのですが、テキストボックスと同様に 手軽に使えて、しかも文字列が変更されてしまわないものが望みです。 ちょうど、プロパティ・ダイアログの中のURLなどがそのようにできるものでした。 同様の機能を実現するのには特別なコントロールを自作する必要があるでしょうか? すみませんがよろしくお願いします。
TextBoxでReadOnlyにしたらいいんでないの? あとはボーダーとか消してラベルっぽくすれば。
610 :
デフォルトの名無しさん :2007/08/11(土) 12:26:22
>>609 おお、TextBox に ReadOnly というプロパティがあったのですね!
わかりました、ありがとうございます!
いろいろ新しくなっているのですね!助かりました。
おい大昔からなかったかい?
612 :
デフォルトの名無しさん :2007/08/11(土) 12:43:08
板違いかもしれません。ですが質問します。 C#.NETとVB.NETの違いって何ですか? 調べてみると、(触り程度) C#.NETにメモリーを切る概念が無くなったと。 だったら、方言とコンパイルの速度だけの違いになりますか?
ハァ?
メモリー切る機能ってなんだよ
俺のおじいちゃんがメモリ確保することを「切る」と言っていたが 21世紀にその言葉を聞けるとは思わなんだ
万能動詞、切る 何が何でも切るって言うんだぜ?
617 :
デフォルトの名無しさん :2007/08/12(日) 10:06:08
コンソールアプリケーションの質問です ReadLineなどで、画面から読み込む文字列を [******]のようにマスクして、読み込む方法はあるのでしょうか? すみませんが、よろしくお願いします
>>612 VB.NETはリフレクションを使用するコードが勝手に生成されて凄く遅くなることがある
回避はできるからそれさえ注意すれば一緒
619 :
デフォルトの名無しさん :2007/08/13(月) 09:08:53
言語の違いなど飾りです。 PGさんにはそれがわからんとです。
つまらん
Graphicsクラスで1ピクセルの点をPenを使って書く時って Graphics.DrawLine(Pens.Black, New PointF(10, 10), New PointF(10.1, 10.1)) のようにPointF使うしかないの?
もう少しものの聞き方を勉強しなおした方がいいよ。
623 :
621 :2007/08/13(月) 15:33:05
DrawLineはPointFを引数にするものもあるけど、Singleを引数にしているものもあるだろ? あとなんで1ピクセルが0.1だと思ってるんだ?
625 :
621 :2007/08/13(月) 17:38:46
>>624 Graphics.DrawLine(Pens.Black, 10, 10, 10, 10)
だと何も描かれないですし、
Graphics.DrawLine(Pens.Black, 10, 10, 11, 11)
や
Graphics.DrawLine(Pens.Black, 10, 10, 11, 10)
だと2ピクセル分描かれます。
10.1を指定するときれいに1ピクセル分描かれるのですが。
何かとんでもないトコを見落としているのかなぁ。
もうちょっと調べてみます。
ピクセルの操作はBitmap.SetPixel/GetPixelで。 短いラインがどのなんドットなるかなんて、 ディスプレイディバイスの種類が違ったり、 スケールとか座標系いじったりしたら意味ないだろ。
>10.1を指定するときれいに1ピクセル分描かれるのですが。 あほすぎて話にならん。 そんなのディスプレイの都合上、1ピクセル分の直線が引かれているように見えるだけだろ。 プログラム上では0.1ピクセルの直線を引いてる。 結果さえよければどうでもいいのか? 説明が面倒なので、答えを書く。 お前が書きたい1ピクセルの点というのは、数学的に言えば「一辺1ピクセルの面」だ。 面を書くのはDrawLineではない。 e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
>>626 .netじゃ座標や幅の基本単位がピクセルだから関係ないんじゃね?
twipならディスプレイの設定で変化してくるが。
629 :
621 :2007/08/13(月) 18:17:21
>>627 もちろんFillRectangleやSetPixelを使うことは知っています。
1ピクセルの点をPenを使って書く時に10.1のように
書くしかないのですかという質問なのですが。
.NET2.0用に作成したアプリケーションは、3.0しかインストールしていないWindowsでは 動作しないのでしょうか?
ポカーン
>>629 1x1のビットマップを作成してDrawImageという手もあるけど
それならまだ10.1の方がスマートな気がする
>>630 3.0は、2.0に一切手を入れずに新機能を追加しただけのもの
MSを信じるなら全く問題ないはず
>>629 だからよ、お前はDrawLineの仕様がわかってないって言われてるの。
DrawLineはあくまで座標ペアで指定された2つの点を結ぶ直線を描画するんだ。
「点」ってのは直線じゃないだろう?
Graphics.DrawLine(Pens.Black, New PointF(10, 10), New PointF(10.1, 10.1))
お前のこれは、「見かけ上」1ピクセルの点に見えるだけで、プログラム上じゃ(10, 10)to(10.1, 10.1)の直線なワケ。
お前が厳密に1ピクセルの点を書きたいわけじゃなく、ただ見かけだけそうなってりゃいいや、っていうならそれでいいよ。
ただ、そんなのに甘んじるようなお前は果てしなくセンスが無いってだけだ。
Penで点を描くのは確かにおかしいかも
635 :
621 :2007/08/13(月) 21:25:54
>>633 すみません。怒らせちゃって。
確かにおかしいんですよ。
僕も通常点を描くだけならFillRectangleで済ますんですが
ただ描画するのは違うクラスでこのクラスはもう変更きかなくて
Penと座標しか指定できないので
困ってたんです。
で、やっとこさ10.1というのを発見してあなたの言う見かけだけ
はできたのですが、他に何かないかなと思った次第でして。
あなたと私はたぶん似ているんだと思います。
私もDrawLineの仕様を言いたいですが、
Penと座標しか指定できない場合、10.1と指定するのことに
甘んじたくなくて質問したんです。
あなたも同じ状況なら他になにかないか探すと思います。
そもそもPenと座標しか指定できないのになんで他の方法を探してたの?
637 :
621 :2007/08/13(月) 21:32:58
>>632 ありがとうございます。
少し気が楽になりました。
638 :
621 :2007/08/13(月) 21:36:12
>>636 他の方法というのは
例えば独自のPenを作成するとか
Penのプロパティにそういうのが指定できるとか
もしあったらと思いまして。
ですのでPenを使って何かないのかなと質問しました。
フォームクラス以外のクラスからフォーム上のコントロールを操作したいとき、 My.Forms.Form1.TextBox1.text = "2ch2ch" とか使う?それとも引数で渡す? 俺はMSがせっかく用意してくれてるんだからMy使うんだけど、みんなはどっち?
640 :
デフォルトの名無しさん :2007/08/14(火) 04:42:20
TreeView や ListView 上の ListViewItem というのは、 Selected 状態と Active 状態とで異なるでしょうか? Explorer上の TreeView や ListView では、点線でかこまれただけの状態の Item と、実際に選択されて薄いパープル色あるいはグレーのバックカラーになって現れている 場合の2種類がありますが、それらに対応するものなのでしょうか。
はて、Active 状態ってのは一体どのプロパティがどの値になってるのを指すんだ?
642 :
640 :2007/08/14(火) 05:21:30
>>641 そうですね、よくわからないんですが、OnItemAvtivated() の Protected メソッドが
動くときのイベントが発生したとき、という意味のつもりでした。
Explorer では「単なる点線囲み状態」 と 「BackColorが色付く状態」 の両方があったので
そういう違いがある2つの状態というものがあって、それが Selected とは別の何かなのかなと
思ったのでした。
そういうもの自体存在しないのでしょうか。
OnItemActivate の二つ先に Activation プロパティがある。その解説読んでみ。 > 「単なる点線囲み状態」「BackColorが色付く状態」 ListViewItem にそれぞれ対応するプロパティがある。 TreeView は単一選択なんでこの辺は無関係。
>>639 ほんとは引数で渡した方がいい
テキストボックスも直接公開するんじゃなくてForm1にString型のプロパティを定義した方がいい
でもどうせ使い捨てなら別にどうでもいい
645 :
640 :2007/08/14(火) 14:15:33
>>643 ご指導どうもです、この 「点線囲み状態」 は ListViewItem の Focused プロパティに
関係ありそうですね。さらにあちこち見て調べてみます。
ありがとうございました!
646 :
デフォルトの名無しさん :2007/08/14(火) 15:07:48
>>627 プププ何コイツ
久々に笑わせられたぜww
>数学的に言えば「一辺1ピクセルの面」だ。
何が数学的だよ1ピクセルはプログラム上は点に決まってんじゃん。www
>e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
ちゃんと4ピクセルの面を指定しるじゃん。wwwうぇwww
FillRectangleってのは領域の内側を塗るんだよ。おバカさん
内側ってのは右辺と下辺から1ピクセル分引いた値。w
で結果1ピクセル分だけ塗られているだけだぽwww
直線上にない異なる3点以上を指定しないと面にならないことくらい
消防でも知ってるっつうの。
>一辺1ピクセルの面 プププププww
一番小さい面は3ピクセルの三角形だよwwwwww
ってかムキになってる638はその前に氏ねよwww。
こいつらくだんね。
( ゚д゚)ポカーン
>>646 >FillRectangleってのは領域の内側を塗るんだよ。おバカさん
>内側ってのは右辺と下辺から1ピクセル分引いた値。w
FillRectangleには下辺の指定とかないんだけど、勝手に定義を変更しているあなたはなんなの?
>e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
これは座標(10,10)から始まる幅1高さ1の面ってことだろ?
ってか文章からして釣りだよなw
>>635 >僕も通常点を描くだけならFillRectangleで済ますんですが
>ただ描画するのは違うクラスでこのクラスはもう変更きかなくて
>Penと座標しか指定できないので
>困ってたんです。
こういう背景も書かずに、いきなり
>>621 みたいな聞き方するから、Bitmap.SetPixel/GetPixelやFillRectangleなんて話がでてきたんではないの?
『定義の使用上、通常1ピクセルの直線は描画できないDrawLineで、
1ピクセルの点を描画する方法はありませんか』
とか聞けばいいのに。
650 :
デフォルトの名無しさん :2007/08/14(火) 17:13:09
>>648 >これは座標(10,10)から始まる幅1高さ1の面ってことだろ?
これ読んだら吹いたwww
お前633で「点」ってのは直線じゃないだろう?
って言ってたじゃん。
点は直線じゃないが面になるのかよwww
お前まさか座標のことピクセルとピクセルの間だと思ってないかww
GetPixelでカラー取得できなくなるっちゅうのwwww
Rectangle( 10, 10, 1, 1)ってのは
(10,10)(10,11)(11,10)(11,11)の4点を表すんだよwww
DrawRwctangleやってみろよwwうぇぇぇぇwwww
>1ピクセルの面なんてねぇぇぇよwwうふ
>>650 俺は627で「1ピクセルってのは点じゃなくて幅1高さ1の面だ」って言ってるんだが…。
だからこそ1ピクセルの「いわゆる」点を書くのは、面を塗りつぶす
e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
だと言うているんだが…?
目に見える「点」なんて存在しないだろ?
お前の言いたい事がてんでわからん。
652 :
651 :2007/08/14(火) 18:16:58
>>650 e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
ちなみにこれは座標(10,10)だけが塗りつぶされます。
あおる前に試してから書き込め、糞が。
どうでもいい
655 :
デフォルトの名無しさん :2007/08/15(水) 11:52:54
VB.NETからエクセルに出力する時の質問です。 データベースの内容をエクセルに出力したいのですが(行は100行×列は10列くらい)、 この場合、VB.NETからエクセルのセルに直接書き込んだ方が早いですか? それとも、エクセルのマクロを呼び出して、マクロ側でデータベースの内容を セルに書き込んでいった方が早いですか?
後者
657 :
デフォルトの名無しさん :2007/08/15(水) 15:17:28
教えてください。 DataGridViewにて、指定したセルの左上の座標を取得する方法はありますでしょうか? ありましたらその方法を教えてください。 宜しくお願いします。
DataGridViewのメンバに目を凝らすんだ
659 :
657 :2007/08/15(水) 15:52:18
>>658 AccessibilityObjectプロパティを利用して解決できました。
660 :
デフォルトの名無しさん :2007/08/15(水) 20:51:23
Windowsフォームで別スレッドからコントロールを操作するには?
(
http://www.atmarkit.co.jp/fdotnet/dotnettips/312ctrlinvoke/ctrlinvoke.html )
引数がない場合、サンプルのように次の書き方でOK。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Focus()
End Sub
↓
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim t As New Thread(New ThreadStart(AddressOf worker))
t.Start()
End Sub
Delegate Function FocusDelegate() As Boolean
Sub worker()
' textBox2.Focus()の実行
Invoke(New FocusDelegate(AddressOf TextBox2.Focus))
End Sub
次のように引数も渡したい場合、どのように書きなおせばよいのでしょうか?
Dim dtNow As DateTime = DateTime.Now
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text += dtNow.ToString() & vbcrlf
End Sub
↓
?
661 :
デフォルトの名無しさん :2007/08/16(木) 09:59:26
文字列のフォーマットについて教えてください。 "abcdefgh" という文字列を "abcd-ef-gh" という風に変換したい場合、 VB6の時は Format("abcdefgh","@@@@-@@-@@") で出来ました。 これをVB2005で表現するには、 VB6.Format("abcdefgh","@@@@-@@-@@") といった風にしかできないのでしょうか? VB6.Formatを使わずに簡単に上記操作が出来る方法があれば教えてください。
SubstringでぶったぎってConcatで繋げればいいよ
ToStringメソッドを調べると良いと。
TreeViewについて教えてください。 あるノードが、あるノードより上にあるか下にあるか 調べたいのですが簡単にわかる方法はありますでしょうか? If hogeNode.index > hoge2Node.index Then End If ですと階層が同じでないと比較できないので困っています。 よろしくお願いします。
上?
>>665 ツリーを全展開したときに、より左上にあるものが上といった感じです。
TreeNode.Parentを辿って数えれば?
右上にあっても上?
上位という意味だろ より親
右上も上です。
プロパティの質問です。 会社の先輩にクラスのフィールドは必ずプロパティで介せよ!って言われたのですが、 以下のコードのようにmfield1とmfield2の違いがよくわかりません。 mfield1はプロパティ内で入出力操作みたいなことはできるのですが、下のコードのように 特に何もしないプロパティなんて意味あるのでしょうか?こういうプロパティがクラスに沢山あるのですが、正直面倒です。 先輩に聞いたら元請にそう指示されたと言ってましたが・・・ Public Class Class1 Private mfield1 As String Public mfield2 As String Public Property Field1() As String Get Return mfield1 End Get Set(ByVal value As String) mfield1 = value End Set End Property End Class 確かに以前Javaの引継ぎの仕事で貰ったソースも、getter、setterが無数に書かれてましたが、return とクラスの変数の割り当て以外何もしていませんでした。 いまいち利点がわかりません。
>>671 そのうち昔は無駄なことをしていたなぁ
ということになるからそれまでは我慢
C#3.0をまて
>>671 読み書きの処理をインターセプトして値のチェックや変換ができるというのも利点だが、
そういう処理の必要でない単純なプロパティを含む場合の利点としては
フィールドと違いInterfaceにしたり継承でoverrideできること。
特にリモート呼び出しなどではInterfaceであることは重要になる。
その為プロパティが花盛りなのは事実だが大半が単純な構造のプロパティであることから、
プロパティによるコードの増大を何とかしようとする動きはある。
1.IDEのサポート機能で強引にsetter/getterを大量生産する。
2.基本的な構造のプロパティを簡単な構文で書けるようにする。
3.パブリックなフィールドは自動的にプロパティにする。
1は現状のJavaやらC#で盛ん。
2と3は言語の拡張で対応。次版のVBやC#はこの方向。
3はあまりみないが、VB6のActiveXクラスのパブルックフィールドがこのやり方だった。
>660 解決しました。 660の質問は却下します。
>>664 nodeにlevelってプロパティがあった様な。
質問させてください。 ドラッグアンドドロップのコードを記述してるのですが、 ドラッグ元のオブジェクト名を取得するにはどうすればいいのでしょうか? VB2005EEを使っています
オブジェクト名って何さ 型名? それともひょっとして変数の名前のこと?
>>678 picturebox1とかlabel1みたいなクラス?の名前のことです
1付きはForm1以外はクラス名じゃなくて変数名だと思うぞ で、そんなもんは仮の名前なのでとれるわけもないが 結局その名前を使って何がしたいの?
おまえ却下てw
682 :
677 :2007/08/16(木) 22:24:00
ドラッグ元の画像をドラッグ先の画像にドラッグアンドドロップしたときに ドラッグ元の画像を非表示にしたかったのですが、ドラッグ元の情報を どうやって取得したらいいのか分からなかったので質問しました。
DoDragDrop の返り値見てドラッグ元側が処理すればいい ドラッグ元とかドラッグ先とかの状況が分からないから一般論だが
684 :
671 :2007/08/17(金) 00:09:30
>>674 ありがとう。とりあえずプロパティにしておくのは間違いではないのですね。
ググルと既にJava界ではgetter setterでいろいろ賛否両論が行われてました(@ITの掲示板はついて行けませんでしたが…)
しかし、オブジェクト指向のソースとか何の為?って思う箇所が多々あって辛い。
周りに詳しい人もいないんで、何を頼りにすべきか…。デザインパターンとかとりあえず目を通した方が良いのかな。
685 :
デフォルトの名無しさん :2007/08/17(金) 10:49:21
質問です。 DataGridViewで、”スクロールバーが現在表示されているかどうか”を取得できるプロパティみたいなものはあるのでしょうか? それともDataGridViewの高さ(幅)と、表示されている行(列)の高さ(幅)の合計を比較するしかないでしょうか?
DataGridViewを継承したコントロールですと、 HorizontalScrollBar.Visible で判定できるみたいですね。 それでいってみます。
Textbox(Multiline)のIMEModeの挙動がおかしいです。 No Control に設定(デフォのまま)してあるのに、実行時に 普通に入力できていたのに突然、カナ入力になったり、 オフ固定になったりします。 フォーカスが、他のアプリなどへ移動して、再度該当の TextBoxに来た時に症状がおきやすい様ですが、明確な 発生状況の原因は突き止められていません。 ネットで検索した所、似たような症例が見受けられたが、 クリティカルな回避方法が分かりません。 何か良い方法はありませんでしょうか?
以下のソースで文字をPictureBox1に描画してるのですが、 この文字を、BMP保存したい場合どうすればいいのでしょうか? Dim g As Graphics = PictureBox1.CreateGraphics() ' PictureBox1のGraphicsオブジェクトを取得 Dim fnt As New Font("MS 明朝", 20, FontStyle.Bold) ' フォントオブジェクトの作成 g.DrawString("文字をを描画", fnt, Brushes.Blue, 50, 20) ' 文字を描画 'リソースを開放する fnt.Dispose() g.Dispose()
普段から直接描くんじゃなくてBitmapに描くようにすればいいよ
Graphics.FromImage(Bitmap)で取得したオブジェクトに対して描画してBitmap.Save 保存しない場合でもPictureBoxに直接書くよりBitmapに描画してDrawImageの方がいいと思うよ
>698,690 うまくいきました、ありがとうございます
692 :
デフォルトの名無しさん :2007/08/17(金) 22:58:20
すみません、教えてください。 TreeView において、+ 印をクリックしたときにも、MouseUp イベントが発生する のですが、、 それを、Node 本体をクリックしたときと区別する方法はあるものでしょうか? IsSelected プロパティを見てみたのですが、無関係のようで、どうしたらいいもの かと思いまして。すみませんがよろしくお願いします。
NodeMouseClick とかじゃ駄目か .NET 1.1 以前なら駄目か、じゃあ HitTest だな
694 :
デフォルトの名無しさん :2007/08/17(金) 23:26:06
>>693 どうもです。
2.0でしたが、NodeMouseClick でもやはり + 印の方でも反応していました。
HitTest でしたか。調べてみます、ありがとうございました!
>>692 TreeViewMouseDownで
マウスダウンポイント = New Point(e.X, e.Y)
選択ノード = ツリービュー.GetNodeAt(マウスダウンポイント)
範囲 = 選択ノード.Bounds()
If 範囲.Contains(マウスダウンポイント) Then
ボディを選択した
Else
+を選択した
End If
696 :
デフォルトの名無しさん :2007/08/18(土) 12:15:27
>>695 おお!!そうやってやるのですか!!!
すばらしい、どうもありがとうございました!!
助かりました!!!
697 :
デフォルトの名無しさん :2007/08/18(土) 15:07:21
VS2005のIDEですが、ソースコード・エディタ上でマウスであちこちクリックしたり、 検索で移動したり、「シンボルの検索結果」での選択で移動したり、とこれらの操作で キャレットの位置が変わっていったとき、その位置を復元して逆たどるためのツールボタン があったと思うのですが、 PCが壊れて、別のPCに変えて同じボタンと思われるものを使ってみたのですが、 同じその機能が働いてくれません。 この機能のボタンはありますよね。なんという名前のボタンかがわかりません。 (試してみたのは、「前の検索結果1の場所へ移動」「前の検索結果2の場所へ移動」 「前の場所へ移動」などですが、これらでは復元しませんでした。ツールボタンの欄で 右クリック->「ユーザー設定」->「編集」を選択->その中のボタンから選択してみました。)
そういうのって人に聞くより自分で実際やってみる方が早くないか? それともIDEのメニューやツールバーのカスタマイズ方法を知らないの?
699 :
デフォルトの名無しさん :2007/08/18(土) 15:56:40
>>697 ですから、それをやってみたと書いていますが・・・。それでもできなかったもので。
↓
(試してみたのは、「前の検索結果1の場所へ移動」「前の検索結果2の場所へ移動」
「前の場所へ移動」などですが、これらでは復元しませんでした。ツールボタンの欄で
右クリック->「ユーザー設定」->「編集」を選択->その中のボタンから選択してみました。)
進む、戻る、かなんかのボタンだよね 俺も見つかられんのだわw
たしかすごい意外なとこにあった記憶はあるんだが…
702 :
デフォルトの名無しさん :2007/08/18(土) 17:46:36
分類:表示 の 一番下のほうにある 戻る か?
703 :
697 :2007/08/18(土) 20:36:38
>>702 あー、それでした!!どうもありがとうございました!
質問なんですが、フォントスタイルに太字と斜体の両方を 設定した場合に、太字(もしくは斜体)のみを標準状態に 戻す場合のコードってどう書けばいいのでしょうか?
705 :
704 :2007/08/20(月) 01:12:05
自己解決しました、お騒がせしました。
どれだけ下らなく稚拙な質問でも、同じ疑問を持ってるやつがいるかもしれないから、 自己解決した場合でも、解決法は書くべき。 現在のスタイル-太字 TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Xor FontStyle.Bold) ちなみに 現在のスタイル+太字 TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Or FontStyle.Bold)
地獄への道は善意で舗装されている、という言葉の意味を706は噛み締めるべきだね。 そういう「善意」は、結局のところ、基礎の理解や自分の頭で考えることをスキップする 「コピペ馬鹿」を生み出すだけだと思うが。
>>707 善意から莫迦が産まれるとでも思ってんのか?
莫迦は元々莫迦なんだよ。
まあ少なくとも馬鹿を矯正するスレじゃないからね
質問答えたらだめじゃんw
コントロールを名前で選択するにはどうすればいいのでしょうか。 例えばForm1上にButton1があったとすると、 Dim btn As Button = hoge("Button1") みたいなことがしたいのです。 ググると、Form上のコントロールのコレクションをFor eachで回して、名前が一致するかどうかで 探すというのは見つけたのですが、名称からダイレクトに選択したいです。
またコントロールを名前で選択したいです厨か
>>711 >Form上のコントロールのコレクションをFor eachで回して、名前が一致するかどうかで
>探す
という関数を作成すれば
>名称からダイレクトに選択
できますよ。
>>711 Form.Controls(string)
やめとけやめとけやめとけやめとけ
712じゃないけど(いや712は別に何も言ってないがw)
>>711 みたいな「要求」は、ほとんどの場合勘違いの産物だと思うぞ。
ありていに言えば頓珍漢なんだよたぶん。
ちゃんと理解してて目的があって使うならいいんだけど
>>711 はそれ以外に方法がないと思い込んでるだけだろうな
718 :
デフォルトの名無しさん :2007/08/20(月) 23:06:46
ListView上をMouseでClickしたとき、何かのListViewItemをHitすると MouseUpイベントが連続して2回立つ、ということはありうるでしょうか? そういう現象が出て悩んでいました。 下に何もないところをClickしたときはMouseUpは正常に一回しか立たない のですが、下にItemがあるところをMouseでClickすると、2回連続してMouseUpが 立つのでした。 そのためか、そのListViewItemは、選択された印のBackColorが付かず、 Selected状態になっているのかどうかわからないのでした。 MouseDownイベントを挟まずにMouseUpが2回連続するというのは変だと 思うのですが、どこを通ってきてそうなっているのかわからないのでした。 こういう現象になった方いらっしゃったら何かご指導ください。よろしくお願いします。
>>718 ありうるかどうかはdebug.printしてみればわかる。
DirextXを使用しているものから色を取得して判定したいのですが Win32APIのGetPixel等では不可能のようでしたが、何か良い方法は ないでしょうか。
721 :
711 :2007/08/21(火) 09:20:41
>>714 さんの方法でできました。ありがとうございました。
やりたいことは、
722 :
デフォルトの名無しさん :2007/08/21(火) 09:59:05
>>719 そうなのです、それをやってみた結果、それがわかったのでした。
MouseUpというのはMouseDownが起きて初めて起こるはずなので、Upだけ
2回連続するというのは、理屈でいけばおかしいと思われました。
しかし、確かにDownを挟まずに、2回通っているのでした。
これは、どこかでDownに準じる何かが起きているが、それがおもてに
現れずにいるというようなことなのか、それとも、どこかまだ不明なところを
経由して再びMouseUpが実現してしまうという構造なのか・・・??
それで、そういったことは起こりうるのか、それが疑問になったのでした。
で、現実にItemが選択状態のBackColorにならない、ということは、その
2回連続しているMouseUpがおきてしまうことと関係があるのだろう、
と推測されたわけでしたが、どなたかアドバイスがありましたらお願いしますです。
>>720 DirextXを使用している「もの」って具体的に何
>>722 再現しなかったのでした。
そのListViewItemについて詳しく教えてほしいと思ったのでした。
>>723 スルーされるの覚悟ですが、フルスクリーンで動作するゲームです。
DirectXについて詳しくないのですが、普通にSpy++でハンドル調べて
Findwindow等で取得したハンドルを使ってGetPixelしたのですが
駄目でした。
普通にGraphics.CopyFromScreenでできない?
有り難う御座います。帰ってから試してみます。
727 :
デフォルトの名無しさん :2007/08/21(火) 11:31:28
行列クラスを作ろうとしています。今、 Dim ary(,) As Integer = {{1, 0}, {0, 1}} Dim matrix As New Matrix(ary) のようにやっていますが、 Dim matrix As New Matrix({{1, 0}, {0, 1}}) とやることはできないでしょうか。 また、a22 = matrix(2, 2) で a22に1が入るなどとやりたいのですが、 そういうことは可能でしょうか。 Array は Inherits できないようなので、無理なんですかね?
>>724 FPSゲームのチートソフトでも作る気かw
>>727 >Dim matrix As New Matrix({{1, 0}, {0, 1}})
コンストラクタの引数に配列をとる
>a22 = matrix(2, 2)
既定のプロパティ
730 :
729 :2007/08/21(火) 12:00:46
すまん上の方はもうやってたな Dim matrix As Matrix = New Matrix(New Integer(,) {{1, 0}, {0, 1}}) にするだけ
731 :
724 :2007/08/21(火) 13:23:15
>>728 チートだなんてとんでも無い。ちょっとしたマクロ程度です。
>>725 も試してみたんですが、上手く使えずWin32APIで
GetWindowDC(0)としてデスクトップ全体のDCからGetPixelしたん
ですが、DirectX(フルスクリーン)だと上手く行かないみたいですね。
今会社なので試せてませんが…。
ググってみると、どうも出来ないという話ばかりありました。
もう何て言うか、他のソフトで窓化してから組んだ方が手っ取り早い
気がしてきました。UWSCのPeekColorなんかだと出来るんですが
どうやって実現しているんだろう…。
DirectXとフルスクリーンには、何にも因果関係はないと思うが。 DirectXで描画しているDCを取得しないと駄目なんでないの?
WebBrowserコントロール内のドキュメントの反転範囲の取得は可能ですか?
734 :
733 :2007/08/21(火) 14:40:27
連レスすいません、「クリップボードの利用は無し」が条件です。
736 :
733 :2007/08/21(火) 14:45:27
VB2003で開発しています。 ここで質問していいかわからないので、もし他スレが適切なら 誘導をお願いします。 OSがWin2003Serverでドメインコントローラになっているサーバに Everyoneでフルコントロールできる共有フォルダがあります。 この共有フォルダに、LANで繋がっているOSがXpHomeEditionのPC からファイルをアップロードしたりダウンロードしたりするアプリを 作りたいのです。 使用するPCはちょっと特殊なPCでHomeEditionしかプリインストールされていません。 ドライバ類の事を考慮して、OSをProfessionalEditionに乗せかえることは しません。 クライアントがProfessionalEditionなら問題はないのですが、HomeEdition なのでサーバの共有フォルダにアクセスしようとすると、ユーザ名と パスワードを要求されてしまいます。 最初にエクスプローラから共有フォルダを開こうとしてユーザ名とパスワードを 通しておけば次からは要求されないので問題がないのですが、この開発中の アプリからいきなり共有フォルダにアクセスしようとすると、ユーザ名と パスワードが通っていないためにエラーになります。 プログラムからユーザ名とパスワードを認証させる方法はありますでしょうか?
738 :
724 :2007/08/21(火) 14:55:53
>>732 そうなんですか。すいません。あまり詳しくなくて。。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1145477 この辺みて勘違いしてたかもしれません。
取りあえず、↓みたいな感じの関数で帰ってから試してみます。
有り難う御座いました。
Private Function PeekColor(ByVal x As Integer, ByVal y As Integer) As Integer
Dim ret As Integer
ret = GetWindowDC(0) 'スクリーン全体のデバイスコンテキストを取得
PeekColor = GetPixel(ret, x, y)
ret = ReleaseDC(0, ret) 'スクリーン全体のデバイスコンテキストを解放
End Function
>>738 どんなフルスクリーンか知らんが解像度が変更されている場合もあるので気をつけれ
多分デスクトップのDCのピクセル情報はフルスクリーンキャプチャに移るのと一緒だと思うから一回撮ってペイントに貼り付けてみて確認してみるのもいいかも
>>737 >ドライバ類の事を考慮して、OSをProfessionalEditionに乗せかえることは
>しません。
これだけの為にProにアップグレードするべきだとは思わんが、一応教えておく。
ドライバはHomeだろうがProだろうが一緒。互換性を心配するのは間違い。
VB2005です。 TextBoxで未入力のときに数値の0とみなしたいのですが、次のようなやり方以外に 簡単な方法はありますか? if textbox1.text.length = 0 then val = 0 elseif isnumeric(textbox1.text) then val = cint(textbox1.text) else 'error end if
743 :
737 :2007/08/21(火) 17:47:49
746 :
727 :2007/08/21(火) 18:57:05
>>729 a22 = matrix(2, 2) はできました。ありがとうございます。
Dim matrix As New Matrix({{1, 0}, {0, 1}})
の方は、以下のようにしてみましたが、式が必要です
というエラーが出ます。対策を教えていただけないでしょうか。
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim matrix As new Array2({1, 0})
End Sub
End Class
Public Class Array2
Public elements As Array
Public Sub New(ByVal ary As Array)
elements = ary
End Sub
End Class
>>743 Win32APIの意味や失敗の原因を調べるならWin32API質問箱スレに移動すべきだが、
Win32APIを呼び出すためのVB.NETの記述方法について知りたいなら、ここのままでも
よいのでは?
748 :
737 :2007/08/21(火) 21:10:20
Win32API質問箱スレにいってきます。 ありがとうございました。
750 :
746 :2007/08/22(水) 09:59:10
>>749 見逃してました。。。
うまく行きました。ありがとうございました。
型に配列就職誌をつけられるとは知りませんでした。
配列型という型なんだよ 変数名じゃなくて型名の後に括弧を付ける方がその意味では正しい
746はVBしかしたことないんかな
>配列就職誌 誤変換に生活史が見て取れる
Dim array As Int32() = New Int32() {1, 2, 3} こう書いたらもうC#だなw
友達からVS2005をコピーしてもらったのですが、インストール方法がわかりません。 どうやらキーを入れるみたいなんですが、キーを教えてもらえませんか?
>>755 お前頭悪過ぎ
わざとボケたならすまない。
だが、ここでなく低脳スレに行くことをオススメする。
>>755 マイクロソフトに問い合わせればいいじゃん
VB2005を使っています。 フォームのNew()の中でInitializeComponent()が呼ばれますが、InitializeComponent()内で 設計時に設定したプロパティを設定するときに、それぞれのイベントハンドラが呼ばれたりします。 全てが初期化されるまでに呼ばれると困るイベントハンドラもあるので、今のところは 以下のようなコードでしのいでますが、VB2005に用意されている機能でこれを実現することはできますか? Class Form1 Dim mConstructed as Boolean Public Sub New() InitializeComponent() mConstructed = True End Sub Private Sub SomeEventHandler(...) If Not mConstructed Then Exit Sub End If End Sub End Class
>>758 まあ別にそれでも良いんじゃない?
(ただ、未確認だけど自分で判定用のフィールド作らなくてもForm.Createdが使えると思う)
そういう場合はHandles句を使わずに自分でイベントを紐付けするのが正攻法だと思うけど。
760 :
758 :2007/08/23(木) 13:04:41
>>759 前者の方法も知りませんでしたし、後者の方法も目から鱗でした!
ありがとうございました。
タブコントロールを使っているのですが タブが多くなり2段になりました。 どうせなら自分の好きなタブで区切り2段になるようにしたいのですが タブ何個で段分割するとかいう指定はないでしょうか?
タブサイズ調整するしかないんじゃね?
あきらめました!
諦めんのはええぇぇぇぇwwwwww
765 :
733 :2007/08/23(木) 22:05:44
あれから探して見つかったので、聞かれていませんが一応。 WebBrowser.Document.ActiveElement.InnerText WebBrowser.Document.ActiveElement.InnerHtml を使ってWebBrowserの選択範囲・クリックした画像のソース等の取得ができました。クリックイベントと併用したら便利でした。
766 :
デフォルトの名無しさん :2007/08/24(金) 11:56:51
質問させてください。 継承コントロールでプロパティを追加した場合、デザイナでそのコントロールの該当プロパティを選択した時の説明文 (例えばFormのTextプロパティなら「コントロールに関連付けられたテキストです」)は、どこに書けば反映されるのでしょうか? プロパティの<summary></summary>に書けば良いのかと思いましたが、そうではないようです。 解かる方、ご教示お願いします。
DescriptionAttribute(属性)だったかな
というか、そんなの自分で調べる能力がない人間がコントロールなんか作ると 間違いなくハマるよw
.netでEE用のソースは問題なく使えますか?
いーいーっていったいなんのことかな?
いーいーではなくEEです。
Erotic Elementary school girl
773 :
766 :2007/08/24(金) 13:19:07
>>773 TextBox プロパティ
これでググったりMSDN見たりする頭もないのか
先行き不安だな
>>774 >思いつく限りの単語で調べてみたけど、わかんなかったのよ!
>>774 MSDNのメンバの説明ではDescription属性は省かれてる
>>774 継承しているコントロールがTextBoxでも無い限り、そんな単語で検索しないと思うぜ?
VC++から書き込まれた共有メモリを OpenFileMapping()、MapViewOfFile()にて読み出しております。 VC++から struct data{ char str1[256]; char str2[256]; char str3[1024]; } という構造体、または構造体の配列が書き込まれた場合、 VB側ではどのようにすればそれぞれを受け取ることができるでしょうか
779 :
778 :2007/08/27(月) 18:03:29
一つ思い浮かびました Private Declare Function MovePointer Lib "mydll" _ (ByVal ptr As IntPtr, _ ByVal movesize As Integer _ ) As IntPtr ・・・他に真っ当な方法は無いでしょうか(汗
Marshal.PtrToStructure
781 :
778 :2007/08/27(月) 18:31:03
>>780 ありがとうございます。
nAddress = MapViewOfFile(hOpened, FILE_MAP_READ, 0, 0, 0)
str1 = Marshal.PtrToStringAnsi(nAddress)
と先頭を取ることはできるのですが、
Public Structure DATASTRUCT
Dim str1 As String
Dim str2 As String
Dim str3 As String
End Structure
Dim cds As DATASTRUCT
cds = CType(Marshal.PtrToStructure(nAddress, GetType(DATASTRUCT)), DATASTRUCT)
ですと、
「オブジェクト参照がオブジェクト インスタンスに設定されていません」のエラーが出てしまいます。
Marshal.PtrToStructure()をどのように使えば宜しいでしょうか
783 :
778 :2007/08/27(月) 19:02:11
>>778 ありがとうございます。
どこを読めばいいのかさっぱりの状態でしたorz
Public Structure DATASTRUCT
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> _
Dim str1 As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> _
Dim str2 As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=1024)> _
Dim str3 As String
End Structure
としたところうまくいきました!
構造体のメンバのサイズを宣言できるんですね!
(散々ググったページには「できない」とあったのですが・・・)
大変助かりましたありがとうございましたm(_ _)m
784 :
778 :2007/08/27(月) 19:04:37
間違えました
>>782 さんでした。
>構造体のメンバのサイズを宣言できるんですね!
Stringのサイズ(固定長文字列)でした。。。
785 :
778 :2007/08/27(月) 19:22:55
申し訳ありません。 この構造体が配列で渡されたときの受け取り方をお教えいただければ幸いです。
786 :
デフォルトの名無しさん :2007/08/27(月) 19:50:19
質問です。 エクセルの20個のファイルに(1a、2b・・・から20tとする)のファイル名 をそれぞれにつけて、とある1つのディレクトリにまとめて保存し たそれらを一つずつオープンして、それぞれのファイルのSheet1 にあるセルの情報(それぞれのファイルで1行目(1,1)〜(1,40)に まとめてある)を、情報をまとめるためのファイル「Answer」のSheet1に 1行ずつ出力するプログラムを教えていただけないでしょうか。 (最終的にはAnswerのSheet1は20行情報が貼り付けられることになります) (ファイル名に規則性がなくても出来るのであればなお嬉しいです) どうかよろしくお願いしますm(_ _)m
789 :
デフォルトの名無しさん :2007/08/27(月) 22:10:29
programingなんてやめちまえよ。 たとえるなら、薬師みたいなもんだよ。 調合の材料を客先に持ち込んで、客に合わせて調合するんだ。 もちろん、調合の仕方を覚えてれば、調合は早いだろうけど、リファレンス見ながらでも誰も怒らないよ。 そんな覚える技術や努力なんて馬鹿みたいだし、そんなところにしか技術の差が出ないなんて悲しいよな。 てか、薬師よりおとるかもなぁ。。薬師なら、難病を治すために適切に薬を選べるけど、programmerは、言われたように作るだけだから。。
薬師三尊像、まで読んだ
薬で難病が治るまで読んだ。最後まで読んだ。
薬買いにいって えーと……とかって本見ながら調合始めたら引くよな
>薬師なら、難病を治すために適切に薬を選べるけど、programmerは、言われたように作るだけだから。。 言われたようにつくるだけのマもいるけど、「こんなことできないかしら?できたらいいな!」って言われて、それを成す為の最適な方法を考案するマだっているさ。 何も言われずとも「こういうものをつくったら売れるんじゃないか!?」って創作するマもいるし、病人がいないと作ったものが効果を発揮しない薬師より、マの方がいろいろ可能性はあるさ。 調合、調整、やり直しが楽なところもマの魅力。 給料は低いが!!!!(つД`) 給料の為に働いてるマも多いだろうが、自分は創る行為自身が楽しくてマをつづけている。
794 :
778 :2007/08/28(火) 11:40:57
>>794 とにかく一通りMSDNライブラリに目を通したほうがいいよ。
>>788 がどういうつもりでああ書いているか知らないが、
恐らくArraysのサンプルが参考になるんじゃない?
あるいは、ドトネトのややこしいマーシャリングのルールに縛られるのが嫌なら、
アンマネージコードとの受け渡しは全部バイト配列でやって、Encodingとかその他使って
自分で必要に応じて手動で変換するのも一つの手かもね。
796 :
デフォルトの名無しさん :2007/08/29(水) 21:56:59
文字列のバイト数返す方法ないですか? "abc123"なら6を、"テストテスト"なら12を、"あ12い"なら6 を返す感じで・・・
>>796 君はまず「文字列」の正体を勉強するのが先。
その後ではそういう「うかつ」なことは恥ずかしくていえなくなるだろう
どういうやりかたで各文字のバイト数を数えるのかが問題だ
string str = "シフトJISでは何byte?"; Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS"); int num = sjisEnc.GetByteCount(str); Console.WriteLine(num);
802 :
796 :2007/08/29(水) 22:16:51
>>801 即レスありがとうございます!助かりました!!
↑のレスは自分ぽいけど偽者です・・・
>>797 恥ずかしい奴、未だにC言語シコシコ組んでる人?
夏だなあ
>>802 本気で言ってるのか?
801がほのめかしているように、今時文字列のエンコーディングはANSI(S-JIS)
とは限らない。
まあ、こういう「幸せな馬鹿」に言っても通じないかな。
夏だなあ
少なくとも
>>796 の
"abc123"なら6を、"テストテスト"なら12を、"あ12い"なら6
を見る限りにおいてはS-JISとみなしても正解だわな
「文字のエンコード」という概念を796が知っていれば、 当然Encodingクラスについても知っているか、知らなくても容易に発見しているはずで、 それならばそもそも796のような質問は発しないだろう。 質問の文面や受け答えから見て、どうみても旧VBプログラマにありがちな、 理解しもせずサンプルをコピペして使うタイプの「お馬鹿さん」だろう796は。
さしずめ
>>797 はそのお馬鹿さんの揚げ足を取って優越感を感じるタイプのカスかw
>>807 >「文字のエンコード」という概念を796が知っていれば、
>当然Encodingクラスについても知っているか、知らなくても容易に発見しているはずで、
おまえニュータイプかよおまえニュータイプかよ(ふかわ風に)
810 :
デフォルトの名無しさん :2007/08/29(水) 23:06:28
完全ド素人質問なんですけど、ラベルをキーボードの左を押したら左に自動で移動していって それを左右上下できて、画面の端にいったら、反対側からでてくるようにするにはどうやったらいいんでしょうか? サンプルソース等あればお願いします
完全ド素人スパゲッターなんですが うまくソースを絡めるにはどうすればいいんでしょう? ビニール樹脂製のサンプルなどがあれば、すごく…欲しいです
>>810 左を押したらなどはフォームのキーダウンイベントで取得
ラベルの移動はleftやtopをいじくる。
反対側から出てきるようにするにはleftとwidth、topとheightとか。
っていうかそれvbでやることなのか。
>>811 巷のプログラマーの間では
難しいプログラムをつくろうとすればするほどソースは絡みつく
と言われている。
813 :
デフォルトの名無しさん :2007/08/30(木) 02:13:56
>>812 学校の課題です
もうずっとやってるのにできない・・・
もうあきらめてアホみたいな量の追加課題をやるか
>>813 俺も勉強中の身なんで微妙だけど、こんなんでどうよ。
Private Sub MyBase_Down(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
Select Case e.KeyCode
Case Keys.Left
If Label1.Left < -Label1.Width Then
Label1.Left = Me.Size.Width
End If
Label1.Left = Label1.Left - 1
Case Keys.Right
If Label1.Left > Me.Width Then
Label1.Left = -Label1.Width
End If
Label1.Left = Label1.Left + 1
Case Keys.Up
' 処理
Case Keys.Down
' 処理
End Select
End Sub
上と下も同じような考えでおkなはず。
815 :
814 :2007/08/30(木) 10:11:24
追記。 これだと見えなくなってから出てくるまでに時間がかかるから、Ifの条件を弄った方がいいかも。
とりあえずラベルを2つ使え。 そーすりゃあとは楽勝だと思うが。
日本語でうまく説明できないやつは ソースも糞な傾向が多い。
まずは日本語を勉強したまえ
819 :
デフォルトの名無しさん :2007/08/30(木) 15:09:53
まずVBの本を読め
>>810 それほんとにラベルを使わないといけないの?
どう考えてもGraphics使って自前で描画するべき
>>820 宿題を課したやつも素人なんだろw
Labelをキーで動かすことを学んで何の得になるんだろうなw
初学者にWinフォームの基本(例えばフォーカスを失うとキーイベントは発生しない、 クライアント座標の座標系はデカルト座標ではない、とか)を体感させるには 悪くない課題だと思うけどね俺は。 というか、たかが文字列一つ動かすために自前で描画しろ、っていう奴は 恐らく自分でそんなことやったことがないんだろうねw 「ちゃんと」やろうと思ったら意外と面倒だよ。 例えばフォームにコントロールが配置してあったらどうするの? 描画するものが他にあったら、表示のプライオリティや移動した際の再描画は どうするの? 他の描画の処理が仮に重いものだったとしたら? 無効化する領域を指定しても完全には解決できない場合があるぞ。
今、マウスの移動できる範囲を制限するのをつくっているんですが Windows.Forms.Cursor.Clip = New Rectangle(0, 0, 300, 300) などとしているんですが、これだとほかの窓をアクティブにしたりすると 制限が解除されてしまいます。 何かいい方法はないでしょうか?
そんな「悪意のあるソフト」ぐらい自力で作れよアホかw
悪意って言いたいだけだろハゲ そのものズバリのWin32apiが公開されてんだろ低能
ClipCursorってのを使ってみたのですが やはり解除されてしまうみたいです。
>>822 そこまで考えた課題には見えないし、より深く考えるならそれこそラベルなんぞを動かそうという発想自体がナンセンスになる。
多分スレ違いなんだよな、ここの住人は「素人」や「初心者」に過剰反応するから、優しい人が初心者スレでもつくってあげればいい。
叩きや煽りにいちいち反応してたら、ここのスレ見てらんないぜ?
>ラベルなんぞを動かそうという発想自体がナンセンスになる だからラベルを動かすのは目的じゃなく手段でしょ。 何のための? 学習のためのだよ。 どうでもいいけど話の文脈(今何を話しているか?)を忘れるのは頭の悪い証拠だよ。 学校の課題として不適切、って寝ぼけたことを言う奴がいたから 必ずしもそうでもないだろって話をしてるんだけど。
>>828 >叩きや煽りにいちいち反応してたら、ここのスレ見てらんないぜ?
>>828 >学校の課題として不適切、って寝ぼけたことを言う奴がいたから
>必ずしもそうでもないだろって話をしてるんだけど。
質問スレで質問と関係ない話しないでくれる(^ω^;)?
名前付パイプを使った通信をしております。
ttp://support.microsoft.com/default.aspx?scid=kb;ja;165942 等を参考にして以下の通り作成いたしました。
Private Declare Function WriteFile Lib "kernel32" ( _
ByVal hFile As Integer, _
ByVal lpBuffer As String, _
ByVal nNumberOfBytesToWrite As Integer, _
ByVal lpNumberOfBytesWritten As Integer, _
ByVal lpOverlapped As Integer _
) As Integer
Dim bool As Integer
Dim pipe As Integer
Dim size As Integer
pipe = CreateFile("\\.\pipe\mypipe", &H40000000, 0, 0, 4, &H80, 0)
bool = WriteFile(pipe, "ABC", 4, Size, 0)
以上を実行すると、受信側で"ABC"と4を取得し通信自体は成功はするのですが、
同時に送信側でエラーが発生してしまいます。
System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
at abc.AbcvMain.WriteFile(Int32 hFile, String& lpBuffer, Int32 nNumberOfBytesToWrite, Int32 lpNumberOfBytesWritten, Int32 lpOverlapped)
WriteFileのどこに問題がありますでしょうか。
どんな些細な点でもかまいませんのでご指摘下さい。
>>832 試してないが、
>ByVal lpNumberOfBytesWritten As Integer, _
これ API が書き戻すんだから ByRef じゃね?
834 :
832 :2007/08/31(金) 15:56:22
>>833 なんておマヌケorz
エラーが出なくなりました!
ご指摘ありがとうございました。
835 :
デフォルトの名無しさん :2007/08/31(金) 17:31:11
自作クラスのString型プロパティを多言語対応させるには?
838 :
デフォルトの名無しさん :2007/08/31(金) 20:06:35
このスレ糸冬
839 :
832 :2007/08/31(金) 20:23:46
申し訳ありません。もう一つ疑問についてお教え下さい。
WriteFileEx()を用いて非同期の書き込み(読み出し)をしたいと思っております。
WriteFileEx()には関数のアドレスが必要なのですが、
それを得る方法がどうしてもわかりません。
ttp://dobon.net/vb/bbs/log3-8/4379.html にも同様の質問があったため、上記ページ等を参考にして
以下のように作成いたしました。
---
Delegate Sub SampleDelegate()
Public Class sampleClass
Public Sub Method()
MsgBox("Method")
End Sub
End Class
Private Declare Function WriteFileEx Lib "kernel32" (ByVal hFile As Integer, ByVal lpBuffer As String, ByVal lpNumberOfBytesWritten As Integer, ByVal lpOverlapped As Integer, ByVal lpCompletionRoutine As SampleDelegate) As Integer
Dim instance As New SampleClass
' こちらは成功する
' bool = WriteFile(pipe, "ABCDEFG", 8, size, 0)
bool = WriteFileEx(pipe, "ABCDEFG", 8, 0, AddressOf instance.Method)
---
実行しますとWriteFileExでSystem.NullReferenceExceptionが発生いたします。
これはDelegateの扱い方が悪いのでしょうか?
それとももっと根本的なことが間違っているのでしょうか?
大変恐れ入りますがお教え下さい。
>>839 根本的に間違ってるね。
そもそも非同期とはどういう意味なのか、理解してないんじゃないの?
あるいは自動変数のスコープの概念を知らないのかな。
メソッドの中で作った'instance'への参照はメソッド抜けるとなくなる。
そこはOK?
ドトネドにはガベージコレクターというものがあって……という話は理解してる?
841 :
832 :2007/08/31(金) 21:19:25
>>840 レスありがとうございます。
C言語レベルでしたらスコープ等は理解しております
VC++の非同期は多少は・・・知っているつもりです
ガベージコレクションがあることは初めて知りました。
ところで、メンバ変数/クラス変数として以下を宣言してみても同様のエラーでした。
Dim instance As New SampleClass
Dim m_address As SampleDelegate = AddressOf instance.Method
恐れ入りますが、他にポカがありましたらご指摘いただければと思います。
コールバックされるメソッドのシグネチャも合ってないよね。
843 :
832 :2007/08/31(金) 23:29:29
>>842 レスありがとうございます。
VC++のように決まった形があるのかな、と意味も分からずに
Delegate Sub SampleDelegate(ByVal sender As System.Object, ByVal e As System.EventArgs)
Public Class SampleClass
Public Sub Method(ByVal sender As System.Object, ByVal e As System.EventArgs)
MsgBox("Method")
End Sub
End Class
としてみたところ、
System.Runtime.InteropServices.MarshalDirectiveException:
parameter #2 を集成できません。このクラスの型の定義にレイアウト情報がありません。
とエラーが変わりました。
この点調べてみたいと思います。
ADO.netでOracleに接続する場合、ConnectStringって何を渡せばいいんですか? ネットで検索しても伏字になっているところに具体的に何が入るのかわからなくて困っています。
845 :
デフォルトの名無しさん :2007/08/31(金) 23:53:33
ListViewコントロールをArrayListにつっこんだんですけど、 そのつっこんだListViewのイベントって、どうやったらとれるのでしょうか? Dim lvwFile As ListView = New ListView arrLvwFile.Add(lvwFile) arrLvwFile(arrLvwFile.Count - 1).View = View.Details のばあいの、Listview1.mousedown とかほしいのでうs。
Listview1 ってなんだよ唐突に出てきたけど とれるとかほしいとか意味がわからん
コントロール配列の場合は、 arrLvwFile(0) = New ListView arrLvwFile(0).View = View.Details AddHandler arrLvwFile(0).MouseDown, AddressOf test でarrLvwFile(0)のMouseDownイベントでtest関数が呼べたのですが、 ArrayListに入れた場合がわからないのです。。
AddHandler は遅延バインディングには無理なんだっけ キャストすればいいだろ
>>848 AddHandler DirectCast(arrLvwFile(arrLvwFile.Count - 1), ListView).MouseDown, AddressOf test
でできました!感動のあまりちんこの先がぬれました
ありがとうございます。
>>843 その調子じゃ、言っては悪いが調べても無駄そうだな。
>Public Sub Method(ByVal sender As System.Object, ByVal e As System.EventArgs)
こんなシグネチャがいったいどこから出てくるの?
アンマネージからコールバックされるのに、こんなドトネトのマネージコードの
イベントと同じシグネチャって変だとは思わないか?
WriteFileEx なんてドトネトが影も形もないころに仕様が決められたAPIでしょ。
>>844 基本的にはオラクル接続に必要な
USER
PASSWORD
SID
をわたせばおk。
853 :
デフォルトの名無しさん :2007/09/01(土) 02:16:47
どなたか Gilma (=ILMerge のGUIツール) および ILMerge を使ってる方が 居たら教えてください。 このユーティリティでは DLL がたくさんある場合のマージは難しいでしょうか? 比較的少なめの個数の DLL (数個程度) 使用では問題なくマージできるのを 確認していたんですが、10個ぐらい DLL が必要なものでやったところMerge が 最後まで行かず、 Done のメッセージが出ないまま、エラーのメッセージも出ずに 終了してました。結果として目的の Exe ファイルも作成されていませんでした。 最後の DLL のところで、Read successfully にはなっているのですが、その後の 2行目のメッセージが出ずに Log が終わっていました。そこで何かエラーしている のかもしれないんですが、問題がなんなのかわかりませんでした。 もし似たようなことになったとき何か対策して解決されていた方いらっしゃったら 教えていただきたく。何卒よろしくお願いします。
854 :
853 :2007/09/01(土) 02:19:49
(追記)
>>853 ですが、コマンドラインのテキストは、 DLL が少ない場合のときと同様
に規則通りできているようでした。
DLL マージ前の状態での動作確認は一応OKで、DLLが無くて動作しない、
という状況ではありませんでした。
なんでそんなにDLLって嫌われるんだろうね
856 :
832 :2007/09/01(土) 03:27:10
>>851 レスありがとうございます。
恥ずかしながらアンマネージやらマネージやらは初めて聞きました。
色々調べてみます。
#Unix選手がゲイツを何も知らずにいきなり.NETってのはかなり無謀ですね・・・
つーかUnix使ってたらCつながりでC#に行かないか普通? まあ仕事なら仕方ないがチーン
tnsnameだね。sid渡すのはjdbcだね
>>849 >>852 >>858 >>859 ありがとうございます。
でもどのページを見ても
「データベースに接続したことはあるけど細かい設定があいまいな人」用って感じで
データベースに接続するのがまったく初めてで独学の人には難しいんですよ。
Common SQL Environment ってソフトでは
ユーザーIDとパスワードと接続文字列ってやつを渡すと繋がりますが、
ConnectStringにはこの接続文字列ってのは渡さなくてもいいんですか?
初心者で独学で、なぜにoracle
すいません。一つ質問させてください。 VB2005でテキストボックスに入力されている文字が 10進数か判断するにはどうすればいいでしょうか? IsDigitは1文字しか調べられないようだし IsNumericは数字以外もTrue扱いだし・・・
一文字ずつIsDigitとか まあ正規表現使った方が手っ取り早いけど でもいわゆる全角の数字とか考えてるのかな
>>863 文字と数値の判別なら、あげた関数等を駆使すれば可能だろう。
だが、10進数かどうかを判別するのは不可能。
プレフィクスのついてない数字を10進判定なんてできないだろ常識的に考えて……
867 :
863 :2007/09/01(土) 12:02:45
お答えをいただきありがとうございました。 やっぱりあの2つでは駄目なんですね・・・ ただ言われたとおり正規表現使えば出来そうですので そっちを使ってロジック組むようにしてみます。
868 :
デフォルトの名無しさん :2007/09/01(土) 12:28:41
すんません、 vb.net2005で MIDI音源で音を出したいのですが やり方が全くワカリマセン。 例えば ドのボタンを押したらドがなるなどということです。 使用するクラスとか、関数とかなんでもいいので教えてもらえないでしょうか。 また、別途ツール等が必要ならその情報でもいいです。オネガイシマス
>>860 まずプログラムからじゃなく、
SQLPLUSとかで接続してみなよ。
で接続できるか確認しましょう。
>>870 いえ、CSEなどでは接続成功しています。
ただADO.NETのConnectStringに渡す文字列がわからない状態です。
オラクルのクライアントが入ってるんならでダメかな? Dim hoge As Oracle.DataAccess.ClientOracleConnection Dim str as String '接続文字列 str = "User Id=" & ユーザー名 & ";Password=" & パスワード & ";Data Source=" & サービス名 hoge = New OracleConnection(str) hoge.Open()
>>871 ツールボックスからフォームにOracleConnectionを貼り付けて、
プロパティのConnectionStringで<新しい接続>を選択すると簡単だよ。
OracleConnectionがないときは、ツールボックス アイテムの選択で追加してね。
名前空間がSystem.Data.OracleClientのを使ってね。
VB2005です。 自分の実行ファイルのディレクトリをコードで取得するコードをお願いします。 VBAのThisWorkbook.Pathみたいな感じ。
自己解決じました
>>189 使う。
でもVBのライブラリ参照したらその機能あった気がするのでそっちのがいいかな?
まちかえたよ?
879 :
デフォルトの名無しさん :2007/09/02(日) 15:00:26
If System.IO.File.Exists(filename) = False Then System.IO.File.Create(filename) Dim sw As New System.IO.StreamWriter( _ filename, _ False, _ System.Text.Encoding.GetEncoding(932)) sw.WriteLine(”あいうえお”) sw.WriteLine() sw.Close() End If こんなコード書きました filenameにはフォルダパス付きファイル名が入ります ファイル作った後sw をnewする時点で 他のプロセスが使用中というメッセージが出て書き込めません。 使用できる状態にするにはどんなコードを追加すればいいですか?
File.Create しらべれ
解決しました。
882 :
デフォルトの名無しさん :2007/09/02(日) 23:59:31
エンコードで質問です。 System.Web.HttpUtility.UrlEncodeを使ってURLエンコードをしたいのですが UTF-8のタイプでエンコードされています。 EUC-JPのタイプでエンコードしたいのですが、うまくいきません System.Text.Encoding.GetEncoding("EUC-JP")こうしてバイト配列にしてもダメでした どうやればいいのでしょうか?
884 :
882 :2007/09/03(月) 00:56:07
自己解決しました。 エンコード方法を指定できたのですね・・・
お前は聞いといて回答を見てないのかw
886 :
デフォルトの名無しさん :2007/09/03(月) 15:42:38
ExplorerがWindowsから受け取っているような、 Folder内の内容が変わったことを知らせるメッセージを受け取る方法 はあるでしょうか。 数秒おきに監視するという仕組みを導入すると ファイルがたくさん存在する場合、時間がかかってCPUの占有率が100% から落ちて来ず、困るのでした。 Explorerの場合、直接コピペしたりD&Dしたりした場合でなくても、 他で変化させたファイルやフォルダーが1秒程度で反映しており、 また常時監視もしていないことがわかりました。 これはたぶんWindowsからのメッセージを受け取っていて実現できている ものと想像したのでした、これと同じメッセージかなにかを別のアプリケーション で受け取ることは可能でしょうか?何かアドバイスを戴ければありがたく。
888 :
886 :2007/09/03(月) 15:54:01
>>887 おお。存在したのですね!助かりました!!
さっそくのご指導、大変ありがとうございました!!
889 :
デフォルトの名無しさん :2007/09/03(月) 18:54:47
MSチャートコントロールについて質問です。 棒グラフに表示する値が100万以上の時、棒グラフにはきちんと「1000000」と表示されるのですが、 Y軸の値が「1e+006」みたいに表示されてしまいます。「1e+006」ではなく「1000000」のように表示させる事は可能でしょうか? 可能ならばどのようにするのかご教授お願いします。
890 :
デフォルトの名無しさん :2007/09/03(月) 22:16:22
MVCのModel部分を型付きDataTableで取り扱う場合 Data型やInt型でNULLを入れることができないんですけど 皆さんはどうしていますか? 別にModel用のクラスを作成するべきでしょうか。
入れられるだろ
DataTableの型の問題なんじゃないか?
893 :
デフォルトの名無しさん :2007/09/04(火) 10:27:26
SetXXXDBNullみたいな関数が自動で生成されなかかったっけ?
894 :
デフォルトの名無しさん :2007/09/04(火) 19:20:07
指定したシートが存在するか検索を行うメソッドを書いてみたのですが うまいことプロセスが解放されないのです。 以下はソースです。 Public Function IsSheetExist(ByVal sheetName As String, ByVal fileName As String) As Boolean Dim xlApp As Excel.Application xlApp = New Excel.Application xlApp.DisplayAlerts = False Dim xlBooks As Excel.Workbooks = xlApp.Workbooks xlBooks.Open(fileName) Dim xlBook As Excel.Workbook = _workbooks.Item(1) Dim xlSheets As Excel.Sheets = xlBook.Worksheets Try For i As Integer = 1 To xlBook.Worksheets.Count '' シート名が存在すればTrueを返す If String.Equals(DirectCast(xlSheets.Item(i), Excel.Worksheet).Name, sheetName) Then Return True End If Next Return False
895 :
デフォルトの名無しさん :2007/09/04(火) 19:20:48
続きです Catch ex As Exception Throw ex Finally MarshalReleaseComObject(xlSheets) xlBook.Close(False) MarshalReleaseComObject(xlBook) MarshalReleaseComObject(xlBook) MarshalReleaseComObject(xlBooks) xlApp.Quit() MarshalReleaseComObject(xlApp) End Try End Function Private Sub MarshalReleaseComObject(ByRef objCom As Object) '' COM オブジェクトの使用後、明示的に COM オブジェクトへの参照を解放する Try '' 提供されたランタイム呼び出し可能ラッパーの参照カウントをデクリメントします System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom) Catch Finally '' 参照を解除する objCom = Nothing End Try End Sub
ぬるりふぁれんすえくせぷしょんになりそうだけど… ところでキャッチしてスローして何がしたいのん?
>>894 酷いコードだな。
よくいわれる、COMラパーは使い終わったらReleaseComObjectしろってのは
個人的には嘘臭いと思ってるんだが、仮に正しいとすれば、
>xlSheets.Item(i)
この部分は問題あるでしょ。
暗黙的にワークシート参照してないか?
>>896 そこは別におかしくない。
あれ?SheetとかラッパクラスにDisposeなかったっけ? マーシャルリリースしてDisposeでいけないのか?
899 :
デフォルトの名無しさん :2007/09/04(火) 20:33:24
間違いがあったので追記
×→Dim xlBook As Excel.Workbook = _workbooks.Item(1)
○→Dim xlBook As Excel.Workbook = xlBooks.Item(1)
>>896 これは共通DDLの一部でして
エラーを投げて、大元のプロジェクトでエラーログを書き出してます
>>897 For文の中でExcel.Sheetを生成してやってみます
その場合、生成する度にオブジェクトの参照を解放しないと云々
というのは調べたサイトにも大抵書いてありましたが、知識が及ばないです
>>898 Disposeは試してませんでした。
みなさまご教授ありがとうございました
>個人的には嘘臭いと思ってる 詳しく
>
>>896 >そこは別におかしくない。
いやおかしいだろ。
実質正常に動作するってことはあったとしても。
だいたいなんでNothingセットなんて意味ないことしてんだ?
「そこ」 = キャッチしてスローして ちなみに、Nothingぶち込むのも894の文脈では無意味ではない。 まあ、この手の話はググレればたくさん出てくるとおもうから調べてみ。
>キャッチしてスローして
あえてスタックトレース消したいとかならそうだがそんなこと考えてるとは思えない。
>ちなみに、Nothingぶち込むのも894の文脈では無意味ではない。
>>894 では確かに動作に影響自体はあるけどなんのため?
普通こうやるというようなもんなの?
>この手の話はググレればたくさん出てくるとおもうから調べてみ。 どの手でググればいいのかわからないんだが、キーワードを教えてたもれ。 ていうかCOMラッパのリリースの話なのかNothingの扱いの話なのか…?
905 :
886 :2007/09/05(水) 00:53:49
>>886 です。お世話様です。
FileSystemWatcher にて File や Directory の変更等のイベントに対応しつつあります。
そこで 「削除」 イベントの場合で、
FileSystemWatcher.Deleted(source As Object, e As FileSystemEventArgs)
の e.FullPath や e.Name でパスまたは名称を知ることができますが
それが File であったか、それとも Directory であったかを知るにはどうしたら
いいか不明でした。どうもHelpを見たところでは FileSystemEventArgs には
その区別を知るためのプロパティがなさそうなのですが、
これを知るには何を使えばいいでしょう?
よろしくお願いします!
906 :
886 :2007/09/05(水) 00:56:51
>>905 削除以外のものでは、ファイルにしろディレクトリにしろ存在しているものは
確認ができるのですが、削除ですとすでに実体が無いため確認できなかった
のでした。
それとも、現物を確認せずに種類を知る方法があったでしょうか?
>>903 CPUにとっては意味ないけど「プログラミング作法」的な意味はあるんだよ。
コードを後で読み返すとき、あるいは改造する時のことを考えればわかるでしょ。
後段の件についてはドトネトからエクセルのCOMラッパーを操作するコードを
扱ってるところではたいがいももれなく解説してるよ。
>CPUにとっては意味ないけど「プログラミング作法」的な意味はあるんだよ。 プログラミング作法としてスタックトレースは消すべきだ、とでも言う気かお前は。 >後段の件についてはドトネトからエクセルのCOMラッパーを操作するコードを >扱ってるところではたいがいももれなく解説してるよ。 わからん、Nothingを代入することに意味があると? その場でGC.Collectでもするならともかく。 それとも開放済みの区別がつくようにするためか? そうなら普通はFinalReleaseComObject使って、使う前にNothingチェックをすると思うが。 あんな変なやり方は見たことがない。
>そうなら普通はFinalReleaseComObject使って、使う前にNothingチェックをすると思うが。 ああ、これはおかしいかも。 いずれにしてもわざわざNullReferenceExceptionを出させてキャッチして無視するのが変だといってる。
>CPUにとっては意味ないけど「プログラミング作法」的な意味はあるんだよ。 負荷が高くなるって意味はあるけどな。 メソッドごとにやるとか勘弁してほしい。 まあ負荷以前にスタックトレースがまったく残ってないんだがw
>>908 ああ、
>Throw ex
これがThrowじゃないことに文句を言っているのならそれに関しては一理はある。
こんな場面でスタックトレースに固執する理由があるとも思えないけど、
895のコードはキャッチした例外をInnerExceptionに設定して別の例外オブジェクトを
作ってるわけでもなく、拾ったものをそのまま投げてるだけだからね。
>キャッチしてスロー
すること自体はなにも変じゃないけど。
変だよ 何も処理せずラップもしないならキャッチすることに意味がない。 それを >CPUにとっては意味ないけど「プログラミング作法」的な意味はあるんだよ。 といってるんだろうけど、こんなことで負荷を増やすほどメリットがあるとも思えない。 >こんな場面でスタックトレースに固執する理由があるとも思えないけど、 場面の問題じゃないってのはわかるだろう。 じゃあ他のメソッドなら、スタックトレースがほしそうなとこなら単にThrowで使い分けるのか? >CPUにとっては意味ないけど「プログラミング作法」的な意味はあるんだよ。 どんなプログラミング作法だよ。 一般的には意味のない無駄なキャッチはしないのが作法だよ。
ああ、そうじゃない、気になるのはNothingの方なんだよorz