Erbsensuppe Geschrieben 28. April 2004 Geschrieben 28. April 2004 Tachchen Hab da nen problem!!! Ich habe ein programm welches werte aus einer datei in einem dialog anzeigen soll!! nun is es möglich das werte doppelt vorkommen bsp: es kann z.b. zwei formate geben. nun möchte ich, dass man sich eines auswählen kann und möchte dies in einer combobox darstellen. nur irgendwie zeigt der immer nur einen wert an hat einer ne idee bzw. lösung???:confused: Zitieren
Klotzkopp Geschrieben 29. April 2004 Geschrieben 29. April 2004 Benutzt du Visual C++ / MFC und eine Dialogresource? Dann kann es sein, dass du in der Dialogresource einfach nur die Höhe der Combobox vergrößern must. Das geht aber erst, nachdem du einmal auf die Schaltfläche zum Aufklappen geklickt hast. Wenn das nicht hilft, solltest du uns den Code zeigen, mit dem du die Combobox füllst. Zitieren
Erbsensuppe Geschrieben 29. April 2004 Autor Geschrieben 29. April 2004 ich arbeite mit visual studio.net 2003 mit forms!! nicht mit mfc! ich arbeite erst seit drei monaten und hab hier noch nich so den plan davon. und in meiner firma hier kann mir irgendwie auch keiner helfen(oder es keiner lust dazu). Zitieren
Klotzkopp Geschrieben 29. April 2004 Geschrieben 29. April 2004 Wie gesagt: Wenn das nicht hilft, solltest du uns den Code zeigen, mit dem du die Combobox füllst. Zitieren
Erbsensuppe Geschrieben 29. April 2004 Autor Geschrieben 29. April 2004 //---------------------Füllen der ComboBox------------------------ strncpy(f_format, pDbsQ->getF_Format(&MaxUmfo), sizeof(f_format)-1); IDC_FORMAT->Text = f_format; //-----------------------------Prototyp------------------------------ char* CDbsQ::getF_Format(short *pMaxUmfo); //------------------------------- Funktion------------------------------------- char* CDbsQ::getF_Format(short *pMaxUmfo) { char f_format[9]; char f_an_betrieb[7]; char f_abkuehl[8]; char f_uebergabe[9]; char umform[] = "P\tMMAL\tA\tUMFO"; // markiert den logischen Anfang der Formate if (*pMaxUmfo >= 0) { for (m_line = 0; m_line<= *pMaxUmfo; m_line++) { if (m_TokenUmfo.tokenUmfoField[m_line][5][0] != '\0') // Format vorhanden ? { memset(f_format,0,sizeof(f_format)); memset(f_an_betrieb,0,sizeof(f_an_betrieb)); memset(f_abkuehl,0,sizeof(f_abkuehl)); memset(f_uebergabe,0,sizeof(f_uebergabe)); // Schluessel strncpy (f_format, m_TokenUmfo.tokenUmfoField[m_line][5], sizeof(f_format)-1); // Betrieb strncpy (f_an_betrieb, m_TokenUmfo.tokenUmfoField[m_line][7], sizeof(f_an_betrieb)-1); if (m_TokenUmfo.tokenUmfoField[m_line][8][0] == '1') // Abkühlung Walzwerk? { strncpy (f_abkuehl, m_TokenUmfo.tokenUmfoField[m_line][9], sizeof(f_abkuehl)-1); strncpy (f_uebergabe, m_TokenUmfo.tokenUmfoField[m_line][10], sizeof(f_uebergabe)-1); f_an_betrieb[0] = 'W'; } if (m_TokenUmfo.tokenUmfoField[m_line][11][0] == '1') // Abkühlung Schmiede? { strncpy (f_abkuehl, m_TokenUmfo.tokenUmfoField[m_line][12], sizeof(f_abkuehl)-1); strncpy (f_uebergabe, m_TokenUmfo.tokenUmfoField[m_line][13], sizeof(f_uebergabe)-1); f_an_betrieb[0] = 'S'; } } } } return m_TokenUmfo.tokenUmfoField[m_line][5]; } //-------*pMaxUmfo hat in diesem Fall den Wert 2; Zitieren
Erbsensuppe Geschrieben 29. April 2004 Autor Geschrieben 29. April 2004 da *pMaxUmfo den Wert 2 hat gibt es also zwei formate nun sollen diese beiden formate auch in der combobox angezeigt werden :confused: Zitieren
Klotzkopp Geschrieben 29. April 2004 Geschrieben 29. April 2004 Ich denke, das Problem liegt zunächst mal hier: IDC_FORMAT->Text = f_format; Eine Zuweisung an das Text-Property einer Combobox ändert nur den Text im Eingabefeld. Wenn du einen String zur Auswahlliste hinzufügen willst, musst du der Items-Collection neue Einträge hinzufügen. Zitieren
Erbsensuppe Geschrieben 29. April 2004 Autor Geschrieben 29. April 2004 na und wenn du mir jetzt noch einen tipp gibst wie ich das machen soll, bist du der beste!!! Zitieren
Klotzkopp Geschrieben 29. April 2004 Geschrieben 29. April 2004 Ich verstehe nicht viel von .NET, aber es müsste wohl so aussehen: IDC_FORMAT->Items.Add(/*hier dein neuer Eintrag*/); Übrigens: Ich verstehe nicht, was die Methode CDbsQ::getF_Format macht. Es sieht so aus, als ob sie irgendwas in lokale char-Arrays kopiert, aber mit diesen Arrays geschieht nichts weiter, sie werden am Ende der Funktion wieder zerstört, ohne das mit ihnen irgendwas gemacht worden wäre. Man könnte die Methode IMHO reduzieren auf: char* CDbsQ::getF_Format(short *pMaxUmfo) { return m_TokenUmfo.tokenUmfoField[m_line][5]; }[/code] Ich verstehe auch nicht, warum du pMaxUmfo als Zeiger übergibst. Vielleicht könntest du erklären, was diese Methode tun [i]soll[/i]. Zitieren
Erbsensuppe Geschrieben 29. April 2004 Autor Geschrieben 29. April 2004 erstmal verstehe ich auch nich so viel von .net also, das is natürlich nicht das ganze programm sondern nur ein ausschnitt!!! das programm soll daten aus einer analysefile auslesen! in dieser stehen momentan 2 formate die(in einer anderen methode) in *pMaxUmfo gespeichert werden. nun soll das prog. beide formate in der comb. anzeigen. es zeigt aber nur einen wert an. das mit der kurzen fassung hatte ich vorher. es hat auch geklappt, aber wie gesagt wird nur ein wert angezeigt Zitieren
Klotzkopp Geschrieben 29. April 2004 Geschrieben 29. April 2004 ...in dieser stehen momentan 2 formate die(in einer anderen methode) in *pMaxUmfo gespeichert werden. *pMaxUmfo ist nur ein short, da kann bestensfalls die Anzahl der Formate drinstehen. Sehe ich das richtig, dass dann die Formate in m_TokenUmfo.tokenUmfoField[0][5]; und m_TokenUmfo.tokenUmfoField[1][5]; stehen? Dann könntest du das so machen: //---------------------Füllen der ComboBox------------------------ for(int i=0; i<*pMaxUmfo; ++i) { IDC_FORMAT->Items.Add(pDbsQ->getF_Format(i)); } //-----------------------------Prototyp------------------------------ char* CDbsQ::getF_Format(int line); //------------------------------- Funktion------------------------------------- char* CDbsQ::getF_Format(int line) { return m_TokenUmfo.tokenUmfoField[line][5]; }[/code] Alles ohne Gewähr (mangels .NET-Erfahrung). Zitieren
Erbsensuppe Geschrieben 29. April 2004 Autor Geschrieben 29. April 2004 ich werde es ma versuchen, danke schon ma im vorraus!!! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.