お世話様です。
VC6.0 MFCで
エディットボックスに8桁の数字を入れたとき
「2001/01/01」のような表示の仕方と
別の5桁まで入力可のエディットボックスに
1,2,3,4桁の数字が入ったとき頭0で桁詰を
したいのですがなかなかうまくいきません。
何かヒントのようなものがあれば誰か教えて
いただけないでしょうか?お願いします。
そういうときはまずcodeguruを見てみましょう。
あと、どうやってみてどううまくいかなかったかを書かないと。
「こうやってみたら」と回答しても「それはやった」というやり取りじゃ、進みませんからね。
全く方法が思い浮かばないということならその旨を書きましょう。
CString m_DateString; // エディットボックスのメンバ変数
// 8桁云々
{
LPSTR lpBuffer;
TCHAR szDate[5];
int nYear, nMonth, nDay;
UpdateData(TRUE);
if(m_DateString.GetLength() == 8)
{
lpBuffer = m_DateString.GetBuffer(9);
memcpy(szDate, lpBuffer, 4);
szDate[4] = '\0';
nYear = atoi(szDate);
memcpy(szDate, &lpBuffer[4], 2);
szDate[2] = '\0';
nMonth = atoi(szDate);
memcpy(szDate, &lpBuffer[6], 2);
szDate[2] = '\0';
nDay = atoi(szDate);
m_DateString.ReleaseBuffer();
m_DateString.Format(%04d/%02d/%02d, nYear, nMonth, nDay);
UpdateData(FALSE);
}
}
// 5桁云々
{
int nValue;
UpdateData(TRUE);
if(m_DateString.GetLength() < 5)
{
nValue = atoi((LPCSTR)m_DateString);
m_DateString.Format(%05d, nValue);
UpdateData(FALSE);
}
}
はじめまして。
NGAさんに質問があるのですが
この入力状態で前日の日付を入力不可に
することはできるのでしょうか?
くだらない質問かもしれませんが初心者なので
教えていただけないでしょうか?
エディットボックスにカテゴリがコントロールのメンバ変数(m_DateStringCtrl)を追加して、
昨日の日付と同じだと判断したら、
m_DateStringCtrl.Undo();
してみてはどうでしょうか?
NGAさん Cdsさんありがとうございました。
何とかできそうです。
申し訳ないのですが、日付部分で現在は桁数制限が
ないのですが、桁数制限をしたいのですが・・・
入力値は8桁、表示は10桁に
CStringタイプのエディットボックスのメンバ変数を作る
Class Wizard で桁数を指定できたので8桁に指定したので
すが、最初の表示はうまくいったのですが次に入力しようと
すると「8桁で入力してください」というメッセージが出てしまい
その後の表示がうまくいきません。
これはコードでないとできないのでしょうか?
>これはコードでないとできないのでしょうか?
「私が書いたコードでないとできない」という意味でしたら、
このコードは桁数制限を考慮して書いてはおりません。
だって、そんな条件書いてなかったし……。
従って、8桁という桁数制限がある場合、このコードそのものではダメです。
すいません書き方が悪くて。
別途質問の意味でこのコードを元に
できないのでしょうか?という意味です。
すいません。