MFC Tabelle Visual C++ 6.0

  • #1
P

Paulchen29

Mitglied
Themenersteller
Dabei seit
04.03.2006
Beiträge
8
Reaktionspunkte
0
Hallo,

versuche mich gerade in Visual C++ einzuarbeiten. Komme von Java und habe ein wenig Probleme die Komponenten zu finden die ich brauche! Meine Frage ist gibt es irgendwo ein Steuerelement, mit dem ich eine schöne Tabelle darstellen kann (und nicht wie mit CListCtrl!!!) also so im Stile eines MS DataGrid (vielleicht ist es ja schon das richtige, bloß ich finde nichts, wie man hier Einträge ändern kann)! Es sollte möglich sein aus einer Datei Einträge zu lesen, diese in der Tabelle darzustellen, und jeden Eintrag vom Nutzer ändern lassen können. Vielleicht weiss jemand von Euch auch noch ein gutes Buch für Visual C++ 6.0, welches schön anschaulich genau solche Probleme erklärt, bzw. die Dinge, die man so für das tägliche Handwerk brauchen könnte. Es gibt für Java 5 ein wunderbares Buch, nämlich das Java 5 Kompendium von Markt+Technik! So was wäre das was ich mir für Visual C++ wünschen würde. Die Bücher die ich bis jetzt gefunden habe schreiben mir irgendwie viel zu allgemein.

Würde mich über eine Antwort sehr freuen und vielen Dank für Eure Hilfe
 
  • #2
gibt es irgendwo ein Steuerelement, mit dem ich eine schöne Tabelle darstellen kann (und nicht wie mit CListCtrl!!!)

Nicht wirklich ... Deswegen gibt es auch relativ viele kommerzielle Grid-Controls. Eines der besten Grids in der Gruppe für lau ist das von Chris Maunder:


Natürlich gibt es auch andere Versuche, wie z.B.


Man kann auch Microsoft FlexGrid einbinden, aber das würde ich nicht empfehlen (Fummelei; ist auch nicht sehr ergiebig).



Vielleicht weiss jemand von Euch auch noch ein gutes Buch für Visual C++ 6.0, welches schön anschaulich genau solche Probleme erklärt, bzw. die Dinge, die man so für das tägliche Handwerk brauchen könnte.

Hmm ... mein einziges richtiges Buch über Visual C++ < NET ist Inside Visual C++ Version 4 :D. Vorher (Visual C++ 1 z.B.) wurden neben einem Meter Disketten noch ungefähr drei Meter Bücher geliefert, danach habe ich eigentlich nur noch MSDN, Usenet & Co. genutzt. Darum kann ich Dir da nicht gut weiterhelfen.

Nach der Vorwarnung nun einige Hinweise:
- Es gibt ziemlich viele schlechte (bzw. oberflächliche Klick her, Klick da-) Bücher über VC++/MFC
- Zwei der besseren Bücher scheinen diese zu sein:
  Programming Windows With MFC von Jeff Prosise (1999)
  MFC Internals: Inside the Microsoft Foundation Class Architecture (1996 ..., MFC 4.0)
Ob es die noch neu zu kaufen gibt: Keine Ahnung.
 
  • #3
Hallo,

erstmal vielen, vielen Dank, daß Du so schnell geantwortet hast. Habe aber noch ein kleines Problem:

Ich habe mir jetzt bei CodeGuru die SourceFiles von Chris Maunder runtergeladen. Habe Sie alle in mein Projekt eingebunden. Nun schreibt der Autor des Grids, daß man ein Custom Control erstellen soll und als Klasse MFCGridCtrl eintragen soll. Dafür bin ich auf das von mir in mein Dialogfeld gezogenes Custom Control Element gegangen, dann rechte Maus und unter Properties diesen Klassennamen eingetragen. Glaube, daß dies so stimmt. Jetzt schreibt er, irgendwas davon, daß ich anstelle von DDX_Control DDX_GridControl verwenden soll und dies im Class Wizard einstellen soll. Bloß leider finde ich das nicht.

Wäre nett, wenn Du nochmal schnell schauen könntest! Danke!
 
  • #4
Das kannst Du bei den aktuellen Versionen imho ignorieren:

2.20       30 Jul 2000 - Chris Maunder
...
// - Stupid DDX_GridControl workaround removed.

In gridctrl.h befindet es sich noch aus Kompabilitätsgründen (es wird dort lediglich wieder in DDX_Control umdefiniert ...). Keine Ahnung, warum es noch in der Beschreibung steht.

Dafür bin ich auf das von mir in mein Dialogfeld gezogenes Custom Control Element gegangen, dann rechte Maus und unter Properties diesen Klassennamen eingetragen.

Ist richtig. Anderer Punkt: Wenn Du das Control per Dialog-Resource erzeugst (Custom Control), solltest Du gleich eine Control-Variable erzeugen: Rechtsklick auf das Control, Variable hinzufügen, Variablenname m_Grid (oder was Du willst), als Variablentyp von Hand CGridCtrl eintragen.
 
  • #5
Hi,

danke für die Antwort! Leider kann ich per Hand keine Variable hinzüfgen! Ich gehe mit der rechten Maus auf mein Control und da stehen nur die Möglichkeiten: ClassWizard, Events, Properties! Habe versucht im ClassWizard eine anzulegen, aber das geht leider nicht! Hast Du vielleicht eine Ahnung an was das liegen könnte?
 
  • #6
Ja, VC6 ... da ist wohl etwas Handarbeit angesagt.
Binde mal in stdafx.h die nötigen Header ein (#include GridCtrl.h) [Falls Du die GridCtrl-Dateien in einem
Unterverzeichnis hast, natürlich #include DeinUnterverzeichnis/GridCtrl.h].
Da Du die Dateien wohl nicht ändern wirst, sind die Header dort gut aufgehoben.

Dann füge in die Dialogklasse
CGridCtrl m_Grid;
ein.

Außerdem in die Methode DoDataExchange des Dialogs (nicht in die About-Box ...) am Ende
DDX_Control(pDX, IDC_GRID, m_Grid);
(ID entsprechend der ID in den Eigenschaften des benutzerdefinierten Steuerelementes).

Wenn Du das Programm nun startest, solltest Du was sehen - natürlich ohne Zellen.

Zum Testen kann Du gleich noch in OnInitDialog ein paar Zellen erzeugen:

m_Grid.SetFixedRowCount(1);
m_Grid.SetRowCount(10);
m_Grid.SetColumnCount(3);

m_Grid.SetItemText(0,0,A);
m_Grid.SetItemText(0,1,B);
m_Grid.SetItemText(0,2,C);

m_Grid.ExpandColumnsToFit();

etc.
 
Thema:

MFC Tabelle Visual C++ 6.0

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.839
Beiträge
707.962
Mitglieder
51.492
Neuestes Mitglied
Janus36
Oben