Radiobuttons kriegen keinen Focus per Tastatur
-
Hallo!
Ich habe in einem Dialog Radiobuttons. Das Häkchen "Tabstopp" ist gesetzt und wenn ich den im Editor teste komme ich durch Drücken der Tab-Taste auch an die Buttons.
Führe ich das Programm aus, werden sie übersprungen.Es ist keiner der beiden (Es sind Ja/Nein-Paare) gewählt, damit man die Frage beantworten muss und keinen Standardwert hat.
Wie kriege ich die "angesprungen"?
-
Liegt es vielleicht an der Reihenfolge?
Hast Du mal versucht, die Tab-Reihenfolge mit Strg + D festzulegen?
Nur so eine Idee...
Chris
-
Jupp, das habe ich getan.
Die Taborder ist okay, das war auch mein erster Blick vorhin.
-
Hmm.. dann weiss ich auch kaum weiter. Wenn ich in einem leeren Projekt zwei neue Radiobuttons anlege, kann ich die bei gesetztem Tab-Stopp auch immer anspringen. Egal was da sonst noch so auf dem Dialog liegt.
Klingt jetzt vielleicht doof, aber du setzt im OnInitDialog die Tabstopps nicht irgendwie zurück oder !?
Sonst hab ich keine Idee mehr.. sorry.
-
Ich werds Montag mal mit nem Testprojekt angucken - oder auf die lange Bank schieben, da haben andere Sachen grade viel höhere Dringlichkeiten...
So was doofes - ich dachte das wäre ne Kleinigkeit...
-
Ich hatte mal das selbe Problem... Bei mir lags daran, daß über den Buttons noch einen Dialog gezeichnet hab. Die Buttons waren toll sichtbar aber klicken war nicht...
-
Klicken geht ja - aber mit Tab komme ich nicht dran.
Da die Leute hier noch zu 90% DOS nutzen, sind die nicht so Mausverseucht und es würde echt auffallen, wenn man die Maus extra nur dafür nehmen muss.
-
Sooooo, ich habe jetzt ein Testprojekt gemacht.
Dialoganwendung erstellen.
Auf dem Dialog ein Edit, 2 Radiobuttons und noch ein Edit plazieren. Dann kompilieren und - es geht nicht.Wer das Testprojekt möchte, bitte melden.
Wer eine Idee hat, wie ich trotzdem den Focus auf einen Radiobutton bekomme, bitte auch melden. SetFocus geht nämlich. Aber unter welcher Voraussetzung setze ich in welcher Funktion den Focus?
-
Hi,
ich habe eben das ganze auch mal probiert, mit CheckBox, Radiobutton, Edit, ...
Und tatsächlich, die Radios werden ausgelassen!!
-
Danke, dann bin ich wenigstens nicht einfach nur zu doof für diese Welt.
... aber eine Idee hast du auch nicht, oder?
-
Komisch, komisch. Könntest du das Projekt auf nen Server raufladen damits downloadbar ist? Also das Testprojekt, da gehts ja auch nicht. Würd ich mir gern mal anschauen...
EDIT: Heut gibts ja echt komische Sachen. Hast du einen Accelerator drin? Wenn ja, liegts vielleicht daran? http://www.c-plusplus.net/forum/viewtopic.php?p=649444#649444
-
Hallo BAR!
Ich habe es mal hochgeladen, es ist selbstentpackend.
http://www.larsaf-iii.de/test.exeNein, in den Testprojekt ist bestimmt kein Accelerator...
Momentan häkle ich von Hand in PreTranslateMessage rum, aber glücklich bin ich mit der Lösung nicht.
-
Rechtsklick auf die RadioButtons - Properties - General - Tab Stop aktivieren
-
*TILT*
Okay, du hast recht. Jetzt geht es im Testprojekt. Aber im richtigen sind die Häkchen gesetzt und es geht nicht.
Wo muss ich nun suchen?Ich versuche mal, nur die nötigen Klassen aus dem Projekt zu ziehen, mal sehen ob es dann NICHT geht...
-
Okay, ich habe den Dialog, seine Basisklasse und seine Resource kopiert und eingebunden und ES GEHT.
Wo kann ich denn jetzt noch suchen?
-
estartu_de schrieb:
...eingebunden und ES GEHT.
Irgendwie kann ich dieses "ES GEHT" nicht ganz mit dem "mad" assoziieren
. Du meinst wohl es geht NICHT? Nur mit der Ruhe, ich bin ja auch am suchen
Sobald ich was weiss schreib ichs hier...
-
Okay, zur Erklärung:
Er springt mit Tab dahin, wo er hin soll.Nun versuche ich das Monsterprojekt abzuspecken...
PS: Heute wird es nix mehr, ich habe tierische Probleme mit der vorkompilierten Headerdatei.
Die findet er nicht, warum auch immer...
-
Ich habs jetzt vorerst auch mal schnell auf die extrem unsaubere Art gemacht, muss mich mit vorerst wichtigeren Dingen beschäftigen:
/************************************************************************************************************************/ /************************************************************************************************************************/ /*** ON SET FOCUSSES ****************************************************************************************************/ /************************************************************************************************************************/ /************************************************************************************************************************/ void CMeasDocEditorDlg::OnSetfocusEditCompanyID() { currentFocus = 1; } void CMeasDocEditorDlg::OnSetfocusEditOperatorID() { currentFocus = 2; } void CMeasDocEditorDlg::OnSetfocusEditProjectID() { currentFocus = 3; } void CMeasDocEditorDlg::OnSetfocusEditDate() { currentFocus = 4; } void CMeasDocEditorDlg::OnSetfocusEditStartTime() { currentFocus = 5; } void CMeasDocEditorDlg::OnSetfocusEditStopTime() { currentFocus = 6; } void CMeasDocEditorDlg::OnSetfocusEditVehicleID() { currentFocus = 7; } void CMeasDocEditorDlg::OnSetfocusEditServiceProvider() { currentFocus = 8; } void CMeasDocEditorDlg::OnSetfocusEditStartPosition() { currentFocus = 9; } void CMeasDocEditorDlg::OnSetfocusEditEndPosition() { currentFocus = 10; } void CMeasDocEditorDlg::OnSetfocusEditViaInfo() { currentFocus = 11; } void CMeasDocEditorDlg::OnSetfocusEditRouteInfo() { currentFocus = 12; } void CMeasDocEditorDlg::OnSetfocusEditTMSName() { currentFocus = 13; } void CMeasDocEditorDlg::OnSetfocusEditTMSDescription() { currentFocus = 14; } void CMeasDocEditorDlg::OnSetfocusEditTMSAntennaType() { currentFocus = 15; } void CMeasDocEditorDlg::OnSetfocusEditTMSIMEI() { currentFocus = 16; } void CMeasDocEditorDlg::OnSetfocusEditTMSIMSI() { currentFocus = 17; } void CMeasDocEditorDlg::OnSetfocusEditTMSMSISDN() { currentFocus = 18; } void CMeasDocEditorDlg::OnSetfocusEditTMSSWVersion() { currentFocus = 19; } void CMeasDocEditorDlg::OnSetfocusEditCommentLines() { currentFocus = 20; } void CMeasDocEditorDlg::OnAccTab() { CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_COMPANYID); if(currentFocus == 20) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_COMPANYID); if(currentFocus == 1) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_OPERATORID); if(currentFocus == 2) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_PROJECTID); if(currentFocus == 3) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_DATE); if(currentFocus == 4) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_STARTTIME); if(currentFocus == 5) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_STOPTIME); if(currentFocus == 6) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_VEHICLEID); if(currentFocus == 7) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SERVICEPROVIDER); if(currentFocus == 8) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_STARTPOSITION); if(currentFocus == 9) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_ENDPOSITION); if(currentFocus == 10) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_VIAINFO); if(currentFocus == 11) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_ROUTEINFO); if(currentFocus == 12) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_TMSNAME); if(currentFocus == 13) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_TMSDESCRIPTION); if(currentFocus == 14) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_TMSANTENNATYPE); if(currentFocus == 15) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_TMSIMEI); if(currentFocus == 16) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_TMSIMSI); if(currentFocus == 17) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_TMSMSISDN); if(currentFocus == 18) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_TMSSWVERSION); if(currentFocus == 19) pEdit = (CEdit*)GetDlgItem(IDC_EDIT_COMMENTLINES); pEdit->SetFocus(); }
Uiuiui, das ist mal sehr unsauber. Aber ich brauchs ja nur vorübergehend, ich hoff ich find später was gescheiteres
-
Hmm, mit ein bisserl Umbauen sieht das aus, wie mein Ansatz (siehe der andere Thread), nur dass du nicht GetFocus nutzt (das würde die vielen Funktionen oben ersetzen) und dass ich mich mit CWnd* statt CEdit* zufrieden gebe.
Ob if oder switch ist ja Glaubenssache.
-
estartu_de schrieb:
Danke, dann bin ich wenigstens nicht einfach nur zu doof für diese Welt.
... aber eine Idee hast du auch nicht, oder?Eine etwas doofe Lösung wäre es, wenn du halt eine CheckBox verwenden würdest
-
nur dass du nicht GetFocus nutzt (das würde die vielen Funktionen oben ersetzen)
Jo, dass ich auch den momentanen Fokus hätte holen können war mir klar aber ich hatte diese OnSetfocus-Funktionen schon vorher wegen eines anderen Problems das man nicht anders lösen konnte als es ihm über Variablen zu sagen. Deshalb hab ichs gerade auf das Tabspringen ausgenutzt wenns schon da war
Und das mit den Checkboxen von sky ist vielleicht gar nicht so schlecht wenn du es nicht hinkriegen solltest. Halt auch eine "Notlösung"