X



VB.NET質問スレ(Part43) [無断転載禁止]©2ch.net
レス数が900を超えています。1000を超えると表示できなくなるよ。
0846デフォルトの名無しさん
垢版 |
2017/11/22(水) 10:26:48.94ID:2YVJuPMl
>>844
元号ってOSから引っ張ってきてるんじゃないかなぁ
OSが対応されればそれで行ける気がするけど、1.1動くOSってどこまでだっけ

未だに1.1のシステム抱えてる身としては他人事ではない
0849デフォルトの名無しさん
垢版 |
2017/11/22(水) 12:36:08.14ID:abdxNTRR
>>846
Windows10は1.1が動かない(とされてる)
業務ソフト納入してる客先でPC機器類納入してる別の会社が勝手にWindows10に変えようとして
慌てて一台リースを延期してもらった

>>847
2.0でビルドしたものが4.0で動いたというのが興味深い
0850デフォルトの名無しさん
垢版 |
2017/11/22(水) 16:11:09.79ID:2YVJuPMl
2.0以降はいちおう上位互換考慮されてるはずだからなぁ

OSもフレームワークもサポート切れだから、アプリもサポートできません
アプリバージョンアップしてください(もちろん有償で!)

こう言って通れば良いんだがなぁ
0851デフォルトの名無しさん
垢版 |
2017/11/23(木) 15:38:14.38ID:oTFRewqv
コマンドプロンプトで実行するプログラムで、C言語のsystem()関数と同様の関数ありますか。
Processクラスは別画面で起動します。同じ画面で実行したいもんで。
0853デフォルトの名無しさん
垢版 |
2017/12/15(金) 11:44:07.19ID:M7F98+kf
Class clsMai
Public Text As String = ""
Public size As Integer = 0
End Class
Dim lm As New List(Of clsMai)
このとき
dim sum as integer = 0
dim dt as new clsMai
dt.text = "aaa"
dt.size= 10
lm.add(dt)
lm.sum += dt.size
最初はListだったんだがSumが追加したい。こういう時にはlmはどういうように定義するのがいい?
0854デフォルトの名無しさん
垢版 |
2017/12/15(金) 11:55:48.67ID:M7F98+kf
Class clschkMai
Inherits List(Of clschkMaisu)
Public sum As Integer
End Class
これで
lm.add(dt)とやるだけで上記のlm.sum+=dt.sizeも行うようにしたいのだがやり方が分からない。
0855デフォルトの名無しさん
垢版 |
2017/12/15(金) 12:17:45.87ID:m9RnQpi/
>>854
List<T>を継承じゃなくて中に持つクラスを作るだけでしょ。
あるいはsumを頻繁に使うのでなければ、LINQのSumを使った方が簡単
それと今時変なハンガリアンやめなはれw

Claass MaiList
  Private _list as New List( Of Mai)
  Private _sum as Integer = 0;
  Public Sub Add(x As Mai)
    _list.Add(x)
    _sum +=x.size
  End Sub
  Public Property Sum as Integer
    Get
      return _sum
    End Get
  End Property
End Class
0856デフォルトの名無しさん
垢版 |
2017/12/15(金) 12:57:12.72ID:M7F98+kf
おお!! そういうことか。ありがとう。 addがOverridesできないものかと悩んでた。
clsXXXって書き方は駄目なのか? 何か不都合があるんだろうか?
0857デフォルトの名無しさん
垢版 |
2017/12/15(金) 13:11:41.44ID:M7F98+kf
アッ、駄目だ。継承しないとlm(3).textのようにインデクサでのアクセスができない。
0858デフォルトの名無しさん
垢版 |
2017/12/15(金) 13:17:15.59ID:m9RnQpi/
>>857
インデクサ(VBは既定のプロパティと言うと思うけど)も自分で書けばいいんだよそれはwww
簡単でしょw
何でこの程度のことを思いつかないのw
0859デフォルトの名無しさん
垢版 |
2017/12/15(金) 13:39:16.97ID:M7F98+kf
それはできないでしょ。 lm.lst(i).text みたいになってしまうから。これは面白くない。
lm(i).textにしたいわけだ。
0860デフォルトの名無しさん
垢版 |
2017/12/15(金) 13:44:55.16ID:M7F98+kf
アッ、List(of ss)ができるのだからできるのか? できる筈だよな。調べてみる。
0861デフォルトの名無しさん
垢版 |
2017/12/15(金) 13:47:03.03ID:M7F98+kf
解った!! ありがとう。
0862デフォルトの名無しさん
垢版 |
2017/12/20(水) 21:39:40.25ID:AHvtW6qd
ここで聞くのが適切かわからなかったんですが、ご存知の方がおられましたらお教え下さい。

症状
win10のアップデート1703へ更新した直後から、datagridview内への入力時にIMEがオンになっている場合に、最初の入力文字が2つ入力される。バックスペースで消した後は、通常通り入力できる。IMEオフ時の半角は通常通り入力可能。
例えば「は」と入力しようとした場合は「hha」と下線付きで入力されてしまいます。

開発環境では再現しないのですが、何が考えられるでしょうか?
明日、IMEのプロパティのなかの直接入力をしないのチェックを外すのを試して頂く予定ですが、他に何かこうじられる手はありませんでしょうか?
0865デフォルトの名無しさん
垢版 |
2017/12/22(金) 20:50:18.27ID:8bp8uCql
csvから以下の様なデータをよみこんでDataGridViewに、キーが5件以上のレコードだけ表示したいのですが可能でしょうか?

キー,品名,重量,形状
A001,aaa,111,丸
B001,bbb,222,バツ

csvは5000レコード程になります。
キーは700種類くらいです。
宜しくお願いします。
0868デフォルトの名無しさん
垢版 |
2017/12/23(土) 08:21:17.89ID:3noaHCAM
何が分からないんだ?
 CSVファイルを読み込みか?
 GroupByの使い方か?
 5件以上の抽出方法か?
 複数Groupのフラット化か?
 DataSourceプロパティか?
0870デフォルトの名無しさん
垢版 |
2017/12/23(土) 09:20:56.16ID:Px5uJlt7
同時には無理
まずはCSVから全データを読み込み
そのデータをLinqかなんかで絞り込む
この2つの手順が必要
0872デフォルトの名無しさん
垢版 |
2017/12/23(土) 18:30:01.78ID:De0LpaYa
>>870
とりあえずcsvをデータテーブルに入れデータグリッドビューに表示は出来るのですが、Linqが難しく書けません。
教えていただけませんか?

5件以下のレコードだけ表示の間違いでした。
0873デフォルトの名無しさん
垢版 |
2017/12/24(日) 07:37:12.94ID:hpg5RGLX
「GROUP BY キー」して、「HAVING 5件以下」して、「SelectMany」するだけだろ?
どこが難しいんだ?
0874デフォルトの名無しさん
垢版 |
2017/12/24(日) 08:51:11.82ID:26rA4GtJ
結果的に同じになればいいんだったら処理は遅くてもやり方はいろいろあると思う。
0875デフォルトの名無しさん
垢版 |
2017/12/24(日) 12:14:59.40ID:qNqolCPw
>>873
linqで抽出した後に、データグリッドビューに表示が出来なくて何が悪いのか理解できず諦めました。
結局csvに対してsql文を書いて873さんの言う通りGroup ByとHavingで実装いたしました。
お騒がせしてしまい、すみませんでした。
0876デフォルトの名無しさん
垢版 |
2018/01/08(月) 08:29:11.48ID:UszQx08Q
datagridviewで集計処理をやりたいです。
具体的には、項目毎の小計行をdatagridviewへ追加して、最終行に総計を出したいと思っています。

Forループでやってみたのですが、小計行を追加すると最終行が変わってしまい最終行まで処理を行えません。
Doループでやってみようと考えたのですが、最終行判定方法が分かりません。

datagridviewで上記の様な集計を行う方法を教えてください。
0877デフォルトの名無しさん
垢版 |
2018/01/08(月) 17:50:23.27ID:4DzBbICP
データを行追加しながら小計や総計を出せば最終行を気にする必要はないと思いますが
0878デフォルトの名無しさん
垢版 |
2018/01/08(月) 19:38:43.65ID:UszQx08Q
>>877
datatableをバインドしているのですが、datatableから1レコードづつ追加して小計行を入れる感じでしょうか?
0879デフォルトの名無しさん
垢版 |
2018/01/21(日) 17:49:05.41ID:xVt4kZ2y
<例1>
dim a As decimal = "0.12340000"

Console.WriteLine (a)
⇒0.12340000

<例2>
dim a As decimal = 0.12340000
Console.WriteLine (a)
⇒0.1234

<理想>
dim a As decimal = "0.12340000"

Console.WriteLine (a)
⇒0.1234

理想のように出力させる方法ってないでしょうか
0881デフォルトの名無しさん
垢版 |
2018/01/21(日) 19:42:04.55ID:xVt4kZ2y
すいません、書き方が悪かったです。

出力させると言うよりは、
dim a As decimal = "0.12340000"
の宣言後にa=0.1234と内部的に認識?させたいです。
文字列変換時のformatは使いたくありません

decimal等に一度キャストして再度decimalに戻せば消えるんでしょうか
0882デフォルトの名無しさん
垢版 |
2018/01/21(日) 22:12:27.71ID:PGD2ovYS
むしろ後続のゼロを保持するDecimalで勝手に後ろの0を消す
VBのエディタだかコンパイラだかに問題があるけど

Decimal.Parse(a.ToString("G29"))でもすれば
0883デフォルトの名無しさん
垢版 |
2018/01/21(日) 22:16:38.18ID:8mbnCibk
何が言いたいのか何がしたいのかさっぱりわからんけど、
そもそも文字列リテラルでdecimalを初期化するのが間違ってる
0885デフォルトの名無しさん
垢版 |
2018/01/22(月) 20:18:35.99ID:AesY7cS1
Decimalって後続ゼロを保持してるとかいう仕様なんだが
実際の小数点以下桁数については、取得するメソッドとかすら用意されてないぽいよな
なんでそんな片手落ちな仕様なんだろ
0886デフォルトの名無しさん
垢版 |
2018/01/22(月) 21:11:58.46ID:BhdsaoHH
>>885
これで取得できるみたい

Dim a = Decimal.Parse("0.12340000")
Dim len = Decimal.GetBits(a)(3) >> 16 And &HF
Console.WriteLine(len) ' 8
0887デフォルトの名無しさん
垢版 |
2018/01/23(火) 21:18:21.91ID:NPbHldMa
関係あるようでないけどsqlserverのnumeric型に1とかを格納して1.000000になるのって防げないよね?
Decimalに代入して扱うとずっとゼロが残るもんで
ToString("G29")を全部に書き加えたんだけど、もっと頭の良い方法あったなら死にたい
0888デフォルトの名無しさん
垢版 |
2018/01/23(火) 21:52:20.10ID:8AbQh9Sj
(1) 必要もないのにDecimalなんか使わない

(2) 必要な精度に合わせて丸めることを覚える(実数型っていうのはそうやって使う)
0890デフォルトの名無しさん
垢版 |
2018/01/24(水) 01:20:12.88ID:FR3L8fOM
>>887
SQL ServerのNumeric型は指定精度の固定小数点だし、そんなことになるか?
どうやって取得してるのか、簡単なコードあっぷしてくれ
0892デフォルトの名無しさん
垢版 |
2018/01/26(金) 00:31:48.81ID:xgA/ZrEm
>>890
datareader経由で普通に取得してた記憶がある
テーブルに格納した時点でnumericなら1.000000~みたいになるし、それがむしろ正常なのでは?
0893デフォルトの名無しさん
垢版 |
2018/01/27(土) 10:54:23.24ID:blSbszVf
Dim pic As PictureBox = New PictureBox
pic.Width = PictureBox3.Width
pic.Height = PictureBox3.Height
pic.Top = PictureBox3.Top
pic.Left = PictureBox3.Left
pic.BackColor = cs.GroupColor
こんな感じでインスタンスを作ってその位置と外形だけ複製したいのだがなんかよい方法ない?
0895デフォルトの名無しさん
垢版 |
2018/01/27(土) 15:15:21.70ID:blSbszVf
だめだ。 もっとスマートな方法はある。何か考えろ。
デリゲート使って簡単にできんか?
それとか、、、コピーモードもあるはず
0896デフォルトの名無しさん
垢版 |
2018/01/27(土) 15:42:24.58ID:zlVwMk+1
そんな汎用的じゃない処理がライブラリにあるわけないでしょ
世の中自分を中心に回ってるとか思ってる?
0897デフォルトの名無しさん
垢版 |
2018/01/27(土) 16:36:34.58ID:blSbszVf
PictureBOxにコピーコンストラクタを追加する。
dim pic as picturebox = new ExPictureBox(PictureBox3)
みたいなことはできんか?
0898デフォルトの名無しさん
垢版 |
2018/01/27(土) 16:56:15.88ID:blSbszVf
Class exPictureBox
Inherits PictureBox
Sub New(pp As exPictureBox)
MyClass.Width = pp.Width
MyClass.Height = pp.Height
MyClass.Top = pp.Top
MyClass.Left = pp.Left
End Sub
End Class
これをPictureBoxにキャストはできんのかなー
0899デフォルトの名無しさん
垢版 |
2018/01/27(土) 17:06:40.08ID:blSbszVf
「継承のルールによると、派生オブジェクトは常に基本クラスの変数に代入できると規定
されています。」

できる筈だが、エラーになるな。
0900デフォルトの名無しさん
垢版 |
2018/01/27(土) 17:36:25.08ID:zlVwMk+1
>>899
マジボケ?
コンストラクタの引数の型はPictureBoxにしないとダメなんじゃないの?

それから、そんなつまらん処理のためにいちいち新しい型を作るとか無駄。
せいぜい拡張メソッドでいいでしょ

Public Module Exetnsions
  <Extension()> _
  Public Function GetMimic(p as PictureBox) as PictureBox
    ....
  End Function
End Module
0901デフォルトの名無しさん
垢版 |
2018/01/27(土) 18:02:03.55ID:blSbszVf
でけたーーー。サンクス。w
0902デフォルトの名無しさん
垢版 |
2018/01/27(土) 18:17:58.54ID:blSbszVf
IIf(count Mod 2, leftp = GroupBox4.Left, leftp = GroupBox3.Left:top += ctl.Height

これってなにか良い方法ない?
0903デフォルトの名無しさん
垢版 |
2018/01/27(土) 18:50:33.41ID:zlVwMk+1
そんなものない。だから、世の中君を中心に回ってない。
ついでに言うと、それもダメ。もう全然ダメ
それ意図した通り動かないはずだからやってみ
0904デフォルトの名無しさん
垢版 |
2018/01/27(土) 22:38:38.55ID:blSbszVf
ある。ぜったいにある。考えてみ。
0909デフォルトの名無しさん
垢版 |
2018/02/12(月) 14:10:49.62ID:pRrQ7Rw0
なんか廃れてるけど質問ここでいいのかな

初心者向けの本買って、
その通りにサンプルアプリ作ってるんですけど、
TextBoxコントロール入れて、fontプロパティをメイリオの16pt、
Sizeプロパティを55,55にしろってのがあるんだけど、
その通りにするとSizeが55.39に勝手になってしまって高さが55になりません

多分フォントサイズに自動的に高さを合わせてるから39に勝手になってるんだろうけど、
どうすれば高さも55になりますか?
0910デフォルトの名無しさん
垢版 |
2018/02/12(月) 18:44:24.45ID:EjSCFOs0
>>909
テキストボックスの右上の方にちっちゃい右向きの三角の記号あって▶そこクリックでMultiLineっていうの出てこない?
もしくはテキストボックスのプロパティからMultiLineをtrueにする
0911最近VB2017使い始めました
垢版 |
2018/03/04(日) 10:59:53.34ID:/0SDFJ7N
VB2010使ってて最近2017使い始めたのですが、ショートカットキーでCTRL+↑してもプロシジャーの先頭に移動しません。
どなたか教えてくださいませ。
0916デフォルトの名無しさん
垢版 |
2018/03/11(日) 15:20:09.39ID:U/Qy0RW3
VB初心者です。

下記のコードでアプリケーション起動時に
1.データテーブルを作成
2.CSVファイルからデータテーブルへデータを読み込み
3.データテーブルのデータをデータグリッドビューへ表示
としています。ここまでは完成しています。

アプリケーション上にデータの追加ボタンbtn_add_Clickを作成してアプリケーション上からデータをリストへ追加していきたいです。
DataTableにデータを追加して、そのデータをデータグリッドビューへ表示したいのですがどのようなコードにすればいいでしょうか?
ご教示お願い致します。
入力フォームはすでに作っていて、テキストボックスA、B、C、Dとその入力されたデータをもとに内容が変わるラベルE、Dがあります。

長文すぎて書き込み拒否されるのでコードはリンク先で失礼します。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13187386258
0917デフォルトの名無しさん
垢版 |
2018/03/11(日) 18:11:33.14ID:GnsUw/H6
DataSourceのDataTableに追加するコードをButtonのクリックイベントに書けばいい。
DataGridViewにバインドしているから反映される。
コードからバインドされたDataGridViewには追加出来ないからSourceに追加する。
0918デフォルトの名無しさん
垢版 |
2018/03/11(日) 20:33:05.73ID:U/Qy0RW3
>>917
回答ありがとうございます。
いろいろ調べてDataTableに追加しようとしましたがうまくできず
DataTableと別にDataTable2をつくってDataTableと結合→DataGridViewに表示しようとしたのですがそれもでうまくできませんでした。

DataTableに追加するか
DataTable2を作成、DataTableとDataTable2を結合
のどちらかの例文を教えて頂けないでしょうか?
よろしくお願いいたします。
0919デフォルトの名無しさん
垢版 |
2018/03/11(日) 20:49:13.97ID:AaTTZdyn
DGVしゃ足りないんだからそれこそエクセル(クローン)しか無いだろ
でも.NetじゃOLE出来ないしなー
(表示だけならWebBrowserで出来るみたいだけど)
0920デフォルトの名無しさん
垢版 |
2018/03/11(日) 21:35:19.22ID:GnsUw/H6
>>918
Dim tbl As New DataTable(“table”)
Dim row As DataRow

'1列目
row = tbl.NewRow
row("Item1") = "A1"
row("Item2") = "A2"
row("Item3") = "A3"
tbl.Rows.Add(row)

'2列目
row = tbl.NewRow
row("Item1") = "B1"
row("Item2") = "B2"
row("Item3") = "B3"
tbl.Rows.Add(row)

'途中挿入
row = tbl.NewRow
row("Item1") = "C1"
row("Item2") = "C2"
row("Item3") = "C3"
tbl.Rows.InsertAt(row, 1)

みたいな感じで出来ない?
0921デフォルトの名無しさん
垢版 |
2018/03/12(月) 06:35:19.03ID:Lx3T/3bw
>>920
参考にして少し弄ったらできました。
ありがとうございます。

新たな壁に直面して
DataTableをCSVファイルで保存したいのですがうまくいきません。
ご教示願います。
0923デフォルトの名無しさん
垢版 |
2018/03/12(月) 10:04:37.18ID:Lx3T/3bw
>>922
そのコードはどうすればボタンクリックイベントにできますか?
0924デフォルトの名無しさん
垢版 |
2018/03/12(月) 12:29:50.31ID:GSF7SLW7
クリックイベントで、ConvertDataTableToCsvにデータテーブルとcsvのパスとヘッダーを書き込むならTrueを渡して呼び出すだけ。
0925デフォルトの名無しさん
垢版 |
2018/03/12(月) 13:35:16.64ID:Lx3T/3bw
>>924

パラメーターdt ,svPath,writeHeaderに対して引数が指定されていませんとエラーがでるのですがどうすればいいですか?



Private Sub btn_hozon_Click(sender As Object, e As EventArgs) Handles btn_hozon.Click

ConvertDataTableToCsv

End Sub
0926デフォルトの名無しさん
垢版 |
2018/03/12(月) 17:50:12.84ID:GSF7SLW7
>>925
ConvertDataTableToCsv(DataTable(“table”),”C:\test.csv”,True)
みたいにして引数を渡して呼び出せばいいです。
ファイル名やデータテーブル名などは、自分の環境に合わせて下さい。
0927デフォルトの名無しさん
垢版 |
2018/03/12(月) 18:03:33.00ID:Lx3T/3bw
>>926
ありがとうございます。
一応保存には成功しました。

しかし、一番最期の行が消えてしまいます(CSVに保存されていない)

どうすればいいですか?
0930デフォルトの名無しさん
垢版 |
2018/03/16(金) 14:29:21.01ID:Eci7cEig
DataGridView上の特定の文字列のセルの文字色を変更したいですがやり方がわかりません。

例えば5列目1行目と5行目にAAAがあってこれを赤色、5列目3行目と4行目にBBBがあってこれを青色、といった感じで文字色変更したいです。

下記のコードでセルを選んで文字色を変えることには成功しましたがここからどのようにすれば、AAAやBBBといった文字列のセルの文字色を変更できるかがわかりません。

Me.database.Item(5, 1).Style.ForeColor = Color.Red
0933デフォルトの名無しさん
垢版 |
2018/03/17(土) 02:17:25.38ID:kilRADxn
>>解決できました
回答ありがとうございます。
0934デフォルトの名無しさん
垢版 |
2018/03/22(木) 21:02:32.68ID:WmkzQNen
すいません、ここが最適だと思ったので教えてください!!

Spread(グレープシティ社)のWindows Formのバージョン8で
右端に列を追加するにはどうすればいいですか?
右端で右クリックして列を追加すると右から2番目に追加されてしまって困っています!
0938デフォルトの名無しさん
垢版 |
2018/04/22(日) 21:23:49.07ID:PsQCMKRd
餅屋とかそもそもないやん?
0939デフォルトの名無しさん
垢版 |
2018/04/25(水) 00:37:59.07ID:12saxXB9
SpreadのことはGrapeCityに、VB.NETのことはマイクロソフトに聞くべし

だったら何でこのスレあるの?
0942デフォルトの名無しさん
垢版 |
2018/04/26(木) 20:41:50.04ID:fOtvyrSj
グレープシティっていいの?
あとエクセルなんとかってとこのが定番化だった気がする
0943デフォルトの名無しさん
垢版 |
2018/04/27(金) 08:07:08.11ID:NW63AoOa
ActiveX(〜VB6)までは世話になったけど、.Net になってからGrapeCity には関わるまいと誓った。
0944デフォルトの名無しさん
垢版 |
2018/04/29(日) 22:50:27.19ID:RMQStnhd
質問させてください、2つの波形の位相差(シーター)を求めたいです。

chartコントロールに位相差の違う2つの波形を表示させてその位相差を測定したい。
例)https://blog-imgs-86-origin.fc2.com/m/0/k/m0kichiazuma416/066_01.png

最終的にはこの様な物を作りたい。
http://siesta.la.coocan.jp/zk/PwrChk2/pwrchk2.html
この作例だと、電流値と電圧値をchartコントロールに入れて、
chartコントロールに演算させて力率を出しているのだと思うのですが。
どうなんでしょうか。
0945デフォルトの名無しさん
垢版 |
2018/04/29(日) 23:49:54.01ID:eBkQOB0i
>>944
とりあえずchartコントロールに何かを計算させようって発想は根本的に間違ってるw
エクセルじゃないんだからwww
chartが担うのは表示機能だけw

当たり前だけど位相差は測定値の時系列から自分で計算するコードを書くしかない。
ひょっとしてそもそも位相差が何を意味するか分かってないんじゃないの?
レス数が900を超えています。1000を超えると表示できなくなるよ。

ニューススポーツなんでも実況