|
Give the proper explanation....
You might have disabled them on the UPdate Data. Go through the code again Debug it well and then If you find the problem you can explain it well.
Cheers
"Peace of mind through Technology"
|
|
|
|
|
where should we mail the code to you dear.
You haven't confirmed the mail id .
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
Before showing your second dialog, set a boolean flag, for instance:
CMyDialog dlg;
dlg.mDisableSomeControls = true;
dlg.DoModal();
where mDisableSomeControls is a new member of your CMyDialog , of boolean type, initialized to false in CMyDialog constructor.
Next, in CMyDialog::OnInitDialog function, check the mDisableSomeControls value and disable needed controls, for instance:
BOOL CMyDialog::OnInitDialog()
{
. . .
m_cMyEditBox1.EnableWindow(! mDisableSomeControls);
m_cMyEditBox2.EnableWindow(! mDisableSomeControls);
. . .
}
Hope it helps.
-- modified at 7:26 Monday 12th June, 2006
|
|
|
|
|
plz tel me how can i check (mDisableSomeControls )
for updaet menu command how i write
if(............)
{
GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
}
wat i write in if statement
Please mail me
|
|
|
|
|
As I understand, you have two menu items -- "Add Data and "Update Data", -- and two handler functions for them in first dialog. In these functions, you probably display your second dialog using:
CMyDialog dlg;
dlg.DoModal();
If this is true, then you have to make changes. In "Add Data" handler, change to:
CMyDialog dlg;
dlg.mDisableSomeControls = false;
dlg.DoModal();
In "Update Data" handler, change to:
CMyDialog dlg;
dlg.mDisableSomeControls = true;
dlg.DoModal();
Then in CMyDialog::OnInitDialog , do something like this:
if(mDisableSomeControls)
{
GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
}
Otherwise your program's flow is probably different. Is the menu and menu’s handlers in first dialog, while the controls needed to be disabled are in the second dialog?
|
|
|
|
|
can i know wat is mDisableSomeControls is thsi variable of edit box
Please mail me
|
|
|
|
|
In above solution, mDisableSomeControls is a variable defined by you in your dialog class. Let us say your second dialog class is CMyDialog , so open corresponding MyDialog.h file and add a definition, like this:
class CMyDialog : public CDialog
{
public:
bool mDisableSomeControls;
. . .
};
|
|
|
|
|
thanks a lot
Please mail me
|
|
|
|
|
i am sorry i an again disturbing u
but i have a problem in loging in dialog box
ihav dialog cbox which has tow edit boxes one for username and one for password
so i want that when i enter username
and password the it conform those from mysql table named user
and when i enter admin type ysrname and passward it open one form and wheni enter pm username and password it open second dialog box
note :
mysql database may contain two tables one for users and one for authentication
Please mail me
|
|
|
|
|
If you are making a database application, you should be able to read from the database and check the type of the user -- simple user or administrator. For instance, the "users" data table may contain a column which describes this type, for instance 0 for simple users or 1 for administrators.
After you read the type from the database, you can do something like this:
int type = ...
switch(type)
{
case 0:
{
CMyDialogForSimpleUsers dlg;
dlg.DoModal();
}
break;
case 1:
{
CMyDialogForAdministrators dlg;
dlg.DoModal();
}
break;
}
If you have troubles with databases using C++, I think you can post a separate question to the forum.
|
|
|
|
|
can u tel me how i make table in mysql for 0 and 1 type as u told me
i simply create a table which contain username and password
but as u told plz tel me abt how i create table for 0 user and 1 for adm
Please mail me
|
|
|
|
|
In the same manner as you created your users table containing two columns, you can create a table containing three columns. Just add one more column named "type" and having an integer type.
If you use some database tools, like MySQL Query Browser, it is easy to add a new column to an existing table.
|
|
|
|
|
i am sorry for delay i try this code but as value fetched from mysql stored in row which is mysql variable and switch case does not work with this plz tel me . groupid is values 0 and 1 which store in mysql table.
if (!mysql_query(myDB,"select groupid from users"))
res=mysql_store_result(myDB);
row = mysql_fetch_row(res);
{
i = (int) mysql_num_rows( res );
if (i != 1)
{
MessageBox("no match");
mysql_free_result( res ) ;
goto exit_here;
}
}
//int type = ... // the user's type from database
switch(row)
{
case 0: // regular user
{
CAfterone dlg;
dlg.DoModal();
}
break;
case 1: // administrator
{
CAfterone dlg;
dlg.DoModal();
}
break;
}
exit_here:
mysql_close( myDB);
}
Please mail me
|
|
|
|
|
I am not an expert in databases, but I think your MySQL statement for determining groupid for a user by username should look like this: "SELECT groupid from users WHERE username='the-user-name'" .
MYSQL_ROW contains string, so I think your switch must look like this: switch(atoi(row[0])) .
|
|
|
|
|
plz sir i distyurb u again but it gives no error but it does not go to second dialog box
plz send me code for this
if (!mysql_query(myDB,"SELECT groupid from users WHERE userid= \'" + user + "\' and \'" + pass + "\'"))
res=mysql_store_result(myDB);
row = mysql_fetch_row(res);
{
i = (int) mysql_num_rows( res );
if (i != 1)
{
MessageBox("no match");
mysql_free_result( res ) ;
goto exit_here;
}
}
switch(atoi(row[0]))
{
case 0: // regular user
{
CAfterone dlg;
dlg.DoModal();
}
break;
case 1: // administrator
{
CAfterone dlg;
dlg.DoModal();
}
break;
}
exit_here:
mysql_close( myDB);
Please mail me
|
|
|
|
|
Try to put a breakpoint at switch , or use MessageBox , in order to see which value contains row[0] . If it contains an unexpected NULL or a non-numeric string, then atoi returns 0 .
|
|
|
|
|
sir u geneous
thanks
but sir iwill not display second dialog box as second dialog box has class named CAdmin and first dialog box has class CAfterone
case 0: // regular user
{
CAfterone dlg;
dlg.DoModal();
}
break;
case 1: // administrator
{
CAdmin dlg;
dlg.DoModal();
}
break;
}
Please mail me
|
|
|
|
|
thanks a lot sir this works very well u r absolutly geneious
Please mail me
|
|
|
|
|
Please read this article[^] on why you do not want to use GetDlgItem and how you can avoid it while makeing your code mor readble.
The author Joseph M. Newcomer is a old regular here on codeproject. His Page is full of great tips.
"We trained hard, but it seemed that every time we were beginning to form up into teams we would be reorganised. I was to learn later in life that we tend to meet any new situation by reorganising: and a wonderful method it can be for creating the illusion of progress, while producing confusion, inefficiency and demoralisation."
-- Caius Petronius, Roman Consul, 66 A.D.
|
|
|
|
|
if CMainDialog is main dialog and CLocalDialog is another dialog use this code in another dialog
<br />
CMainDialog* m_Main = (CMainDialog* )GetParent();<br />
m_Main->m_Youredit.EnableWindow(0);
whitesky
|
|
|
|
|
The problem with the compiler VC8 is as follows:
<br />
char sz[]="Hello";<br />
std::string s=sz;<br />
std::string::const_iterator iBegin,iEnd,iPos;<br />
<br />
iBegin=s.begin();<br />
iEnd=iBegin+3;<br />
iPos=std::find(iBegin,iEnd,'e');<br />
<br />
iBegin=std::string::const_iterator(sz,NULL);<br />
iEnd =iBegin+3;<br />
iPos =std::find(iBegin,iEnd,'e');<br />
Is it possible to avoid const_iterator(sz,NULL) without using the defines
<br />
#define _HAS_ITERATOR_DEBUGGING 0<br />
#define _SECURE_SCL 0<br />
Or must I copy the char array into stl:string? Is it really standard const_iterator(ptr, this)?
|
|
|
|
|
If is acceptable, for searching in sz string you can use std::find function in this manner:
char * p = std::find(sz, sz + 3, 'e');
In this case you do not need iterator. I don't think the const_iterator can be constructed in your code. It is supplied for you by STL.
|
|
|
|
|
Yes, I know this. My problem is const_iterator and iterator. I have installed the new Visual Studio 2005 and after that I run into this problem.
When I use the standard
<br />
std::string::const_iterator iBegin;<br />
<br />
iBegin=std::string::const_iterator(sz);<br />
I get the compiler error
<br />
error C2440: '<function-style-cast>' : cannot convert from 'char [6]' to 'std::_String_const_iterator<_Elem,_Traits,_Alloc>'<br />
1> with<br />
1> [<br />
1> _Elem=char,<br />
1> _Traits=std::char_traits<char>,<br />
1> _Alloc=std::allocator<char><br />
1> ]<br />
1> No constructor could take the source type, or constructor overload resolution was ambiguous<br />
|
|
|
|
|
|
Hi guys
I have a question: is it possible to mask the user input by using a pre-determined symbol?
Like when a password is being inputted, instead of the actual password, '*'s will appear to mask it. Is this possible in std c++ and if it is, how do I do it?
Thanks in advance!
Regards,
Peter
|
|
|
|