Radiobuttons kriegen keinen Focus per Tastatur



  • 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.exe

    Nein, 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"



  • Checkboxen möchte ich nicht nehmen - das Programm soll verkauft werden. 😞

    Naja, momentan installiere ich grade VC++ 2003 - das dauert... 🙄
    Und dann bin ich mit übertragen und erforschen beschäftigt. 😃


Anmelden zum Antworten