forms visible und invisible machen

Original geschrieben von Specialguest@home
ändere einfach die IDC_STATIC in IDC_STATIC1 um dann sollte das auch klappen!

sven

Was sven/Specialguest genau meint, ist, dass der Classwizard/Assistent Standard-Controls mit Default-IDs wie IDC_STATIC keine Variablen zuweisen lässt (soll wohl den User davor schützen, das falsche Static zu erwischen).
Faustregel: Willst du ein Control/Static/Label in irgendeiner Weise beeinflussen, gibt ihm eine eindeutige ID.
 
Jo, danke ist schon klar gewesen und hat auch geklappt.

Habe ich den darüber auch die Möglichkeit die Properties der einzelnen Edits wieder zu ändern, sprich wenn man in dem 1. Edit was angegeben hat, dann öffnen sich die anderen Sachen alle, aber des Editfeld des ersten soll dann auf DISABLE gestellt werden, so dass ich darin nichts mehr ändern kann.
 
Du könntest doch sobald die anderen Editfelder in der Methode auf sichtbar gestellt sind, dein 1.Editfeld wieder deaktivieren.
Es gibt die Methode die dir sobald sich was in deinem Editfeld ändert aufgrefuen wird!
Ich glaub die heißt
Code:
void CDeinProg::OnChangeDeinAndesesEdit()
Und sobald sich was in diesem Edit geändert hat, setzt du das 1.Edit auf
Code:
GetDlgItem(button1id)->EnableWindow(false);   // oder true

oder so ähnlich! :-)

sven
 
Verwendet für die MFC- bzw. WinAPI-Funktion nicht true und false, sondern TRUE und FALSE. Die Funktionen stammen alle aus einer Zeit, als es die C++-Schlüsselworte true und false noch nicht gab.
 
Das geht mir auch so. Leider haben wir das nicht zu entscheiden. Wenn du dich deswegen mit dem Compiler rumärgern willst, wünsche ich dir viel Spass. :-)

Übrigens musst du dich nicht bei mir entschuldigen. Ich könnte auch gut auf TRUE und FALSE verzichten, wenn ich könnte. ;)
 
Bis heute hatte ich aber auch noch keine Probleme das der compiler deswegen mekert! Ok zugegeben hab auch noch nie nen anderen Compiler als den von MS genutzt!
Hast ja recht können wir uns leider nicht aussuchen unsere C++ Pauker hat damals auch immer gesagt wir sollten wenn möglich TRUE & FALSE schreiben aber gesagt warum hat er nie, deswegen hab ich aus "protest" immer klein geschrieben!
Naja egal jetzt weiß ich wenigstens warum das so ist!


sven
 
Irgendwie bin ich zu blöd für das Ganze

Ich habe 2 Editfelder, 1. Editfeld soll einen Monatsnamen als Eingabe erhalten und 2. Editfeld soll ein Stundenangabe sein.
Zu Beginn ist nur das 1. Editfeld freigeschaltet und wenn man dort dann "Mai" eingibt wird das 2. Editfeld sichtbar und das 1. Editfeld bleibt auch sichtbar aber ist DISABLED.

Realisiert wie folgt :

Code:
void CFB_Zeiten::OnEnKillfocusEdit1()
{
	UpdateData(TRUE);
	// TODO: Add your control notification handler code here
	if ( m_sMonat == "Mai" )
	{
		m_CMonat.SetReadOnly();
		m_BeginnStunde.ShowWindow(true);
	}
	else
	{
		//
	}
}

für das 2. Editfeld habe ich mir dann eine zweite Membervariable auf das Editfeld angelegt genannt m_shortBeginnStunde und habe dann folgendes versucht zu realisieren

Code:
void CFB_Zeiten::OnEnKillfocusEdit3()
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	while ( m_shortBeginnStunde < 0 || m_shortBeginnStunde > 24 )
	{
		MessageBox(" Bitte einen Wert zwischen 0 und 24 eingeben ","Fehler",MB_OK);
	};
}

Wo ist mein Fehler, bzw. wie kann ich es besser machen, denke mal das liegt daran, dass der mir die Doppelbelegung des 2. Editfeldes nicht richtig versteht :-(

Ich habe doch keine Ahnung ...
 
Du sagst leider nicht, was genau passiert bzw. was der Fehler ist.

Ich sehe aber zwei Dinge:

m_BeginnStunde.ShowWindow(true);

Mach da m_BeginnStunde.ShowWindow( SW_SHOW ); draus.

Ändere UNBEDINGT

while ( m_shortBeginnStunde < 0 || m_shortBeginnStunde > 24 )

in

if ( m_shortBeginnStunde < 0 || m_shortBeginnStunde > 24 )

Sonst bekommst du ewig MessageBox-es angezeigt.
 
Zurück