redfox63 の回答履歴

全3318件中101~120件表示
  • TEXTBOX_CHANGEのイベント抑制

    TEXTBOX_CHANGE イベントでのイベント抑制方法を教えてください。 エクセルのVBAで、ユーザーフォーム内のTEXTBOXの内容を変更した際にイベントが発生しない様にしたいのですが、うまくいきません。 Private Sub TextBox1_Change() Application.EnableEvents = False UserForm1.TextBox1.Text = "" Application.EnableEvents = True UserForm1.TextBox1.SetFocus End Sub  ユーザーフォーム内では Application.EnableEvents  は使えないのかな?? どなたかご教授をお願いします。

  • JISの全角判定処理について

    お世話になっております。 C++初心者です。 今、JISの全角判定処理を作っているのですが、 フォームのイベントでKeyPressに関数をセットしてあるのですが、 関数のフォーマットが void *********(char &Key); ※[*]は任意の文字列 になっており、半角ならこの関数を1回通り、 全角なら2回通ります。(引数の変更はできません) そこで下記のような関数を作成しました。 void pressKeyFullPitch(char &Key){   static bool fullFlag = false;   if(fullFlag){     fullFlag=false;     Key='*'     return;   }   if( Key >= 0x81 && Key <= 0x9f) || (Key >= 0xe0 && Key <= 0xfc ){     fullFlag = true;     Key = '*';   }      } 全角で入力された2byte文字は2byteとも[*]にするようにしています。 ここて関数内にstatic boolを宣言していますが、 static変数は関数終了時にも値を保持しているため あまり使わないほうがいい気がするので質問させていただきます。 ※すいません、経験が少ないのでstatic変数について知識が足りないかもしれません。 この場合、static変数を使わずうまく処理できる方法が ありましたら、お願いします。

  • DataGridViewのセルのItem設定につい

    DataGridView内にコンボボックスのカラムを設定しました。 下記のサイトを参考にしました。 http://dobon.net/vb/dotnet/datagridview/comboboxdropdownstyle.html 入力した内容をカラム単位ではなく、セル単位で追加したかったため、 CellValidatingメソッドを下記の通り一部変更しました。 //CellValidatingイベントハンドラ private void DataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { DataGridView dgv = (DataGridView)sender; //該当する列か調べる if (dgv.Columns[e.ColumnIndex].Name == "sComboColumn" && dgv.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn) { //DataGridViewComboBoxColumn cbc = // (DataGridViewComboBoxColumn)dgv.Columns[e.ColumnIndex]; // // ↓cellへ変更 // DataGridViewComboBoxCell cbc = (DataGridViewComboBoxCell)dgv.Rows[e.RowIndex].Cells[e.ColumnIndex]; //コンボボックスの項目に追加する if (!cbc.Items.Contains(e.FormattedValue)) { cbc.Items.Add(e.FormattedValue); } //セルの値を設定しないと、元に戻ってしまう dgv[e.ColumnIndex, e.RowIndex].Value = e.FormattedValue; } } コンボボックスに入力し、EnterやTabを押したタイミングでコンボボックスのリストに、 入力した文字列が追加されます。また、入力した文字列がセルに表示された状態になります。 しかし、その後同じセルに文字列を入力した場合、リストに文字列が追加されますが、 セルに表示される文字列はその前に入力された文字列のままです。 どのようにすれば入力後のセルの内容を設定できるかご存じの方がいれば ご教授いただきたいです。

  • CBitmapか何かでbitmapの色を変更したい

    VisualStudio2008を使用しています。 例えば15x15の四角のビットマップ(■)を任意の色に変更させるプログラムを作ろうと思っていますが、 CBitmapを使えばできると思ったのですが、なかなかうまくいきません。 イメージとしてはGDI(0,0,0)をGDI(0,0.255)に変更するという関数があるのかなと思ったのですが、 MFCサイトを見てもなさそう?でした。(よくわかりませんでした) ↓こんな感じに書きましたが、うまく動きませんでした。 CBitmap iconBitmap; COLORREF cr_from = RGB(0,0,0); COLORREF cr_to = RGB(0,0,255); COLORMAP COLORMAP; COLORMAP.from = cr_from; COLORMAP.to = cr_to; iconBitmap.LoadMappedBitmap(IDB_CELLCOLOR,1,&COLORMAP,1); 最後の行で異常終了します。 簡単にできる方法はありませんでしょうか? ご教授お願いいたします。

  • C# Panel領域の下部に余白を設ける方法???

    手操作ではなくプログラムでPanelを作り、そのPanelに上から下に向かって100ヶのCheckBoxを加えました Panelのサイズはあまり大きくありませんので、100ヶ目のCheckBoxは当然スクロールしなければ見ることが出来ません 目いっぱいスクロールするとPanelの下枠と100ヶ目のCheckBoxの最下部が同じ所にあります すなわち100ヶ目のCheckBoxがPanelの下枠に乗っかっている状態であり、100ヶ目のCheckBoxとPanel下枠の間に余白がありません 見た目が悪いので、100ヶ目のCheckBoxの更に下にダミーのLabelを設け Label.Text="" で表示すると余白が出来ます ⇒ Label.Visibilty=false ではダメ でもこの方法ではプログラム的に誠にブザマです PanelのプロパティのScroll辺りの値を色々変えてみましたが上手くいきません Panelに加えたコントロールの下に余白を作る方法をご存知でしたらご指導お願い申し上げます

  • これ、Forループで出来ますか???

    Formに100ケのLabelを貼り付けます LabelのTextは毎日ダウンロードしたファイルから読込みマトリックスTextMessに展開してあります そのマトリックスTextMessから1ケづつLabel.Textにセットしています string[] TextMess = new string[100]; int i = 0; label1.Text = TextMess[i++]; label2.Text = TextMess[i++]; label3.Text = TextMess[i++]; ・ ・   ここに100ステートメント書いています ・ label99.Text = TextMess[i++]; label100.Text = TextMess[i]; この100行を例えばforループなどを使い数行に纏める方法はありますか? 色々調べましたが分かりません 宜しくご指導お願い申し上げます

  • VisualStudio MFC変数が追加できない

    MFCでダイアログベースのアプリ作成しています。 以前使っていたプロジェクトに変更を加えるため、 ダイアログにコントロールを追加しました。 そのコントロールに対してメンバ変数を追加しようとしたところ、 「変数の追加」ボタンが使用不可となっており、変数の追加が行えません。 また、クラスビューが表示されなくなったようで、こちらからも追加ができません。 2008を使っています。 解決方法をご教示願います。

  • TreeGridViewへの入力カラム追加

    下記サイトからTreeGridViewのソースをダウンロードし、自分のプログラムに組み込みました。 http://blogs.msdn.com/b/markrideout/archive/2006/01/08/510700.aspx そして下記の通りnameColumnというカラムを追加し、ReadOnly=falseにしましたが、ダブルクリックしても入力することができません。 (お恥ずかしながら初心者です・・・) nameColumnに入力可能にする方法をご存じの方がいたらご教授願います。 private void InitializeComponent() { this.components = new System.ComponentModel.Container(); AdvancedDataGridView.TreeGridNode treeGridNode1 = new AdvancedDataGridView.TreeGridNode(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); this.treeGridView1 = new AdvancedDataGridView.TreeGridView(); this.treeColumn = new AdvancedDataGridView.TreeGridColumn(); this.nameColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); ((System.ComponentModel.ISupportInitialize)(this.treeGridView1)).BeginInit(); this.SuspendLayout(); // // treeGridView1 // this.treeGridView1.AllowUserToAddRows = false; this.treeGridView1.AllowUserToDeleteRows = false; this.treeGridView1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.SingleVertical; this.treeGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.treeColumn, this.nameColumn}); this.treeGridView1.Dock = System.Windows.Forms.DockStyle.Fill; this.treeGridView1.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; this.treeGridView1.Location = new System.Drawing.Point(0, 0); this.treeGridView1.Name = "treeGridView1"; treeGridNode1.Height = 21; this.treeGridView1.Nodes.Add(treeGridNode1); this.treeGridView1.RowHeadersVisible = false; this.treeGridView1.Size = new System.Drawing.Size(361, 267); this.treeGridView1.TabIndex = 0; // // treeColumn // this.treeColumn.HeaderText = "Tree"; this.treeColumn.Name = "treeColumn"; this.treeColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // // nameColumn // this.nameColumn.HeaderText = "Name"; this.nameColumn.Name = "nameColumn"; this.nameColumn.ReadOnly = false; this.nameColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(361, 267); this.Controls.Add(this.treeGridView1); this.Name = "Form1"; this.Text = "Form1"; ((System.ComponentModel.ISupportInitialize)(this.treeGridView1)).EndInit(); this.ResumeLayout(false); } #endregion private AdvancedDataGridView.TreeGridView treeGridView1; private AdvancedDataGridView.TreeGridColumn treeColumn; private System.Windows.Forms.DataGridViewTextBoxColumn nameColumn;

  • MFCでCImageListに画像追加失敗

    MFCを使ってダイアログアプリを作っています。 やっていることは、CImageListへ画像ファイルの縮小画像(128x128へリサイズ済)を追加し、 CListViewで縮小画像を表示させようとしているのですが、画像が追加されたりされなかったりします。 以下処理内容です。 全部で20個の画像を追加します。(これはフォルダ内にある画像ファイルの数に依存します) 1回の登録する処理では、CImageListが1個、画像ロード用のCImageが1個、CImageの画像を コピーして縮小画像の転送ソースとして利用するためのCBitmap(+CDC)が1個と、縮小画像を 格納するためのCBitmap(+CDC)が1個あります。 (クラスメンバー CImageList m_ListImages; CBitmap m_BmpBase, CBitmap m_BmpDrawの3つ、 CImageはローカル変数で確保) ※m_BmpBaseとm_BmpDrawには、Blt()を使う為にCDCが1つずつ付けてあります 実行手順) ・画像ファイルをCImageで読み込む ・CImageのBitBlt()でCBitmap(m_BmpBase)へ転送 ・CImageの画像をDestroy()で削除 ・m_BmpBaseの画像をStretchBlt()で縮小させて、別のCBitmap(m_BmpDraw)に格納 ・m_BmpBaseとm_BmpDrawに関連付けたCDCをDeleteDC()で削除 ・m_BmpBaseをDeleteObject()で削除 ・CImageListへAdd()でCBitmap(m_BmpDraw)を追加 ・m_BmpDrawをDeleteObject()で削除 上記動作を20回(20ファイル)行います。 これを実行させると、CImageListへ格納された画像の個数は、5個しか格納されていませんでした。 最初の5個が登録されたと言う訳では無く、1個格納毎にGetItemCount()で格納数を取得して、 テキストファイルに書き出させた所、1,1,1,1,1,2,2,3,3,3,4,4,4,4,4,5,5,5,5,5と、登録2~5個目、7個目、 9~10個目、12~15個目、17~20個目の登録が失敗しているみたいなのです。 また、CImageListへのAdd()のリターン値は-1(失敗)ではなく、0以上の値が返ってきています。 登録できた画像はCListViewに表示されています。 ここで質問ですが、この様にAdd()のリターン値は正常登録を示す番号を返してくるのにも関わらず、 登録ができていない(格納された画像が増えない)原因は何があるのでしょうか?

  • VB2010でのSQL日付フォーマット表記変更

    VB2010Expressを使用しています。 VBにてあるCSVファイルの内容をmdbファイルに移行するプログラムを作成しています DateTimePickerの日付を条件にしているんですがCSVの日付表記が『yyyymmdd』になっていて下記のコードでは『 (Me.Date日付.Text).ToString("yyyyMMdd")』の部分で『'String' から 'System.IFormatProvider' への変換時にランタイム エラーが発生する可能性があります。』とエラーが出ます。 自宅PCでは『(Me.Date日付.Text).ToString("yyyyMMdd")』を『DateAdd("d", 0, Me.Date健診日.Text).ToString("yyyyMMdd")』にしたらエラーなく動いたのですが、今日職場のPCで検証したら『型が合いません的なエラーが出てしまいます。(日付部分でのエラーみたいなのですが職場でのエラーをメモし忘れました、スイマセン) 日付のフォーマット変更そしてPCの違いによるエラーの発生原因についてご教授お願いします。 Try Dim DT As New DataTable '===============CSVからクエリ=============== Using OleCn As New System.Data.OleDb.OleDbConnection OleCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FolderPath & _ ";Extended Properties=""Text;HDR=YES;IMEX=1;FMT=Delimited""" Dim SQL As String = "" SQL = "SELECT * FROM " + CSVFileName + " WHERE 日付 BETWEEN " + DateAdd("d", -1, Me.Date日付.Text).ToString("yyyyMMdd") + " AND " + (Me.Date日付.Text).ToString("yyyyMMdd") Using DA As System.Data.OleDb.OleDbDataAdapter = _ New System.Data.OleDb.OleDbDataAdapter(SQL, OleCn) DT.Clear() DA.Fill(DT) End Using End Using '===============CSV-importへの登録=============== コード省略 Catch ex As Exception MessageBox.Show(ex.ToString, "例外発生") Exit Sub End Try

  • C# 多くのコントロールを持つPanelの作り方?

    FormにPanelを作ります Panelの面積を10cm×10cmと仮定します このPanelに100ケのRadio釦を貼り付けます ですからPanelが必要とする面積は相当なものになります 10ケ程度は上から下に順次貼り付けられますが、11ヶ目からは表示されているPanelの下限になってしまいPanelの枠内に入れられません ・Panelの下限を下にドラッグして下方向に延しましたがVisual Studio自体の画面デザインのサイズまでしか拡がりません ・AutoScrollをTrueにしてみましたが、FormデザインのPanel自体にはスクロールバーは表示されませんので、11ヶ目以降の貼付けスペースを見出せません どのようにしたら表示されているPanelの下限よりも遥か下までコントロールを貼り付けることが出来ますか? 色々と操作してみましたが分かりません? この操作方法をご存知でしたらお教え願います

  • VC++2010Express デザイン画面

    VC++初心者です。 まず、Formのデザイン画面に、部品を配置し、ダブルクリックしてコードを記述していきますね。子フォームなどの場合も、デザイン画面をまず作り(この表現でいいのか?)、ダブルクリックしてコードを記述していきます。 デザイナウインドウを誤って閉じてしまったときの、復旧のさせ方がわかりません。上に~.cpp、Form1.h、Form1.h[デザイン]などが並びますが、[デザイン]の後ろの×をクリックして消してしまった時です。 ファイルを開くで、例えばForm1hなどを開いても、デザインは開いてくれません。どうすれば?

  • 設定の取得方法

    vs.net2010を使用しています 以前リソースの取得方法を教わったのですが 同様に設定を取得するにはどうすればいいのでしょうか? 直接取得する方法と変数を使って取得する方法を 教えてください。

  • VC++2010について

    Windowsフォームアプリケーションを勉強し始めています。 Formに表示するだけの簡単なプログラムを打ち込んでみたのですが、ソリューションのビルドをしてみると、次のような2つのエラーが出ました。(実際にはもう一つあるのですが、それはintからfloatに変換されているというだけ) C1003.cpp(6): error C2143: 構文エラー : ';' が 'using' の前にありません。 C1003.cpp(19): fatal error C1075: 左側 中かっこ '{' に対応するものが 'g:\admin\visual studio 2010\projects\vc石立\c1003\c1003\Form1.h(3)' で見つかる前に EOF が検出されました。 こちらが入力したのは、Formに関するプログラムだけで、メインプログラム(.cpp)は一切変更してません。また、簡単なプログラムを何個か打ち込んでみたのですが、同じ二つのエラーが出ます。Formに関するプログラムの記述が間違ってるとも思えません。 その上、usingの前の行に” ; ”を入れてやると、一つ目のエラーは消えました(その前はinclude文)。おまけに、メインプログラムの最後の行(19行目)に” } ”を入れると、二つ目のエラーも消え、正常にビルドされ、デバックもできました。 解決はしたのですが、キツネにつままれたようです。いざ、無料でVCが手に入ると聞きつけ、喜び勇んで勉強しだしたのに…これからも同じ修正をしなくちゃと思うと、うんざりです。 コンソールアプリケーションは、問題なく動きます。 何か、心当たりのある方はいませんか? なお、打ち込んだのは、次の命令(2行目から)だけです。 #pragma endregion private: System::Void label1_Click(System::Object^ sender, System::EventArgs^ e) { } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { double a=double::Parse(textBox1->Text); double b=double::Parse(textBox2->Text); int iNum=comboBox1->SelectedIndex; double c; switch(iNum){ case 0:c=a+b;break; case 1:c=a-b;break; case 2:c=a*b;break; case 3:c=a/b;break; }

  • 和暦表示

    VB.NET2010を使用しています。 データグリッド上にある日付型のカラムを和暦で表示するにはどうすればいいのでしょうか? DefaultCellStyleにgggee年yy月mm日とやっても平成○○とならず西暦○○となってしまいます。

  • リソースの値を変数で取得

    VB.NET2010を使用しています。 リソースを「my.resources.リソース名」と、じかに指定すれば値を取得できるのですが、 リソース名の部分を変数にして値を取得したい場合はどうすればいいのでしょうか?

  • 複数ファイルから同じ関数の呼び出しできますか?

    今、クライアント・サーバーのプログラムを作っているのですが、クライアントとサーバの間の通信を暗号化しようとしています。 開発環境はVisualStudio2010のMFCを使っています。 サーバとクライアントのプログラムとを同一のプロジェクトにして、サーバとクライアントの起動をオプションで切り分けています。 しかし暗号モジュールは一つのファイルなので、これをp1.cppとしましょう。 サーバのファイルをmain.cpp クライアントをsub.cpp として、main.cppの方で#include "p1.cpp"とやっても、クライアントのソースからは関数が参照できません。 例えば g++ main.cpp sub.cpp として、両方に同じ関数を書くと2重定義になります。 クライアントのsub.cpp にも同じようにインクルードしてやると、再定義されてるとリンクエラーが出ます。どうすれば同じ関数を同一プロジェクト内で共有(他のファイルから参照)させることができますでしょうか? 解決法をよろしくお願いします。

  • beginthread 引数

    #include <windows.h> #include <process.h> class CPti4Dlg::public CDialog { public: void test(void*); } void CPti4Dlg::test(void *) {    long ret;    float data[4]; ret = PtMultiInputEx(m_Id, 4, data); if(ret != 0) { ErrorHandling("PtMultiInputEx", ret); if(ret != 20102){ return; } } m_Edit_Ch0 = data[0]; m_Edit_Ch1 = data[1]; m_Edit_Ch2 = data[2]; m_Edit_Ch3 = data[3]; UpdateData(FALSE); } void CPti4Dlg::OnButtonInput() { _beginthread(&CPti4Dlg::test,0,NULL); m_Edit_Ret.SetWindowText("入力処理:正常終了"); } error C2664: '_beginthread' : 1 番目の引数を 'void (__thiscall CPti4Dlg::* )(void *)' から 'void (__cdecl *)(void *)' に変換できません。(新しい機能 ; ヘルプを参照) ------------------------------------------------------------------------------ これ問題全然ないです。 void CPti4Dlg::OnButtonInput() {    long ret;    float data[4]; ret = PtMultiInputEx(m_Id, 4, data); if(ret != 0) { ErrorHandling("PtMultiInputEx", ret); if(ret != 20102){ return; } } m_Edit_Ch0 = data[0]; m_Edit_Ch1 = data[1]; m_Edit_Ch2 = data[2]; m_Edit_Ch3 = data[3]; UpdateData(FALSE); m_Edit_Ret.SetWindowText("入力処理:正常終了"); }

  • VisualStudio2010のデバッグメニュー

    Visual Studio 2010 Express でC++を使い始めたのですが、2008版と違ってデバッグメニューの中に「デバッグなしで開始」というコマンドがありません。コンソール画面に何かを表示させるプログラムを走らせても、画面は一瞬にして消えてしまい、表示を確認することもできません。 return の前に system("pause"); を入れてみましたが、定義されてない識別子ということでだめでした。 何かコンソール画面を静止させる方法があるのでしょうか?

  • beginthread 引数

    #include <windows.h> #include <process.h> class CPti4Dlg::public CDialog { public: void test(void*); } void CPti4Dlg::test(void *) {    long ret;    float data[4]; ret = PtMultiInputEx(m_Id, 4, data); if(ret != 0) { ErrorHandling("PtMultiInputEx", ret); if(ret != 20102){ return; } } m_Edit_Ch0 = data[0]; m_Edit_Ch1 = data[1]; m_Edit_Ch2 = data[2]; m_Edit_Ch3 = data[3]; UpdateData(FALSE); } void CPti4Dlg::OnButtonInput() { _beginthread(&CPti4Dlg::test,0,NULL); m_Edit_Ret.SetWindowText("入力処理:正常終了"); } error C2664: '_beginthread' : 1 番目の引数を 'void (__thiscall CPti4Dlg::* )(void *)' から 'void (__cdecl *)(void *)' に変換できません。(新しい機能 ; ヘルプを参照) ------------------------------------------------------------------------------ これ問題全然ないです。 void CPti4Dlg::OnButtonInput() {    long ret;    float data[4]; ret = PtMultiInputEx(m_Id, 4, data); if(ret != 0) { ErrorHandling("PtMultiInputEx", ret); if(ret != 20102){ return; } } m_Edit_Ch0 = data[0]; m_Edit_Ch1 = data[1]; m_Edit_Ch2 = data[2]; m_Edit_Ch3 = data[3]; UpdateData(FALSE); m_Edit_Ret.SetWindowText("入力処理:正常終了"); }