Listenfeld und horzontaler bildlauf
-
Hi,
Ich habe ein Listenfeld, obwohl ich in den Eigenschaften den Horizontalenbildlauf aktivier habe, wird dieser nicht ausgeführt.
der vertikale geht von alleine, wenn einen bestimmte Menge an Elemnten drinen steht.
Hat da vielleicht jemand erfahrung damit und kann diese an mich weiter geben???
Hier im Forum haber ich sonst auch nicth mehr erfahren, als wie das ich diesen aktivieren soll in den eigenschaften
-
wenn sich mein problem irgendwie blöd angehört hat dann sorry
aber es geht tatsächlich nicht, und ich möchte nun mal alles sehen was in der listbox steht und nicht nur den anfang.Wäre echt lieb wenn ihr mir einen tipp geben könntet oder mich irgendwohin weiterleiten könntet (mit der oprion wieder hier her zurück zu kommen)
-
Es gibt hier automatischer horizontaler Bildlauf und dann gibt es nur den horizontaler Bildlauf. Beide aktiviert also auf TRUE;
-
Hab ich beide aktiviert.
und nur der vertikaler bildlauf funktioniert ja auch, nur der horizontale möchte nicht.
und es steht auch ganz sicher was drin was länger ist wie der sichtbare bereich ist.
-
Welches VC++ hast du?
-
-
ich habe das 6.0
an welcher stelle mach ich den eine schleife über die einträge??
wenn ich sie einlese oder zu beginn oder ist das gar ne extra fkt???
aber danke erstmal, hilft ein wenig
-
GetHorizontalExtent Returns the width in pixels that a list box can be scrolled horizontally. SetHorizontalExtent Sets the width in pixels that a list box can be scrolled horizontally
Hab ich eben inder Msdn gefunden. Ist das brauchbar???
Wenn ja wie ist das zu verstehen??
int GetHorizontalExtent( ) const; void SetHorizontalExtent( int cxExtent );
-
CListBox* listbox; // Find the longest string in the list box. CString str; CSize sz; int dx=0; CDC* pDC = listbox->GetDC(); for (int i=0;i < listbox->GetCount();i++) { listbox->GetText( i, str ); sz = pDC->GetTextExtent(str); if (sz.cx > dx) dx = sz.cx; } listbox->ReleaseDC(pDC); // Set the horizontal extent so every character of all strings // can be scrolled to. listbox->SetHorizontalExtent(dx);
hab ich eben dazu gefunden.
aber leider habe ich eben noch nciht die richtige stelle im code gefunden wo ich das hinsetzte.
Weil er zeigt zwar beim compilieren keinen fehler aber wenn man an die stelle im code kommt´, wo dieser halt steht.
Daher wäre ich sehr dankbar über einen tipp wo das am besten hin kommt. DANKE
-
ich wollte es halt wissen,
weil ich öfter den inhalt neu lade in das listenfeld, hätte ja sein können das sich einer damit mehr auskennt.
Muss ichvielleicht ne extra fkt schreiben und diese nach jedem neu laden aufrufen, oder vielleicht wärend ich neu lade.
Leute ich weiss es wirklcih nicht, und wo soll ich den noch alles nach einer antwort suchen
-
Du kannst es bei jedem Hinzufügen machen oder alles hinzufügen und dann die Textlänge errechnen und den Scollbalken anzeigen.
Übrigen hat VC++ 6 keine 2 Optionen. Diese sind in Vc++ 7.x enthalten.
-
nochmal..
welche 2 Optionen meinst du???
ich habe es jetzt so gemacht das ich es als extra funktion erstellt habe und immer wenn etwas mit dem listenfeld durchgeführt wird, wird diese aufgerufen.
Beim Compilieren wird noch immer kein fehler angeziegt , nur einen warnung:...HinzuDlg.cpp(303) : warning C4700: Lokale Variable 'listbox' wurde ohne Initialisierung verwendet
obwohl:
CListBox* listbox; ... CDC* pDC = listbox->GetDC(); ...
im code ja steht.
Hast du noch einen Tip??
Ich möchte ja wirklich keinen auf die nerven fallen, aber wenn ich es doch nciht besser weiss...
-
Du erstellst eine Zeiger auf die Klasse CListBox. Der Zeiger zeigt in irgendend einen Speicherbereich auf den Du keine Zugriff hast.
Das ist aber Grundlage das man sowas dann mit
CListBox* listbox = NULL;
Abgesehen davon solltest du die eine Membervar anlegen und nicht eine Zeiger holen.
Was wenn du mal von der Basisklasse ableiten willst. Dann musst du das in jder einzelnen Zeile ändern.