farbiger Inhalt vom ListBox
-
ah, thx, das tut hatte ich garnicht gesehen
Ich habe erst ein Testprogramm geschrieben in dem auch alles super ging.
als ich dann alle sim hauptprogramm einbauen wollte kam aber nur folgende Fehlermeldung:
[C++ Fehler] ShowProcedures.h(96): E2015 Mehrdeutigkeit zwischen 'TOwnerDrawState' und 'Windows::TOwnerDrawState'dabei ist es egal ob in der Methode
void __fastcall lbShowProceduresDrawItem(TObject *Sender, int Index, TRect &Rect, TOwnerDrawState State, bool &Handled);
etwas steht oder nicht.
Hat wer nen PLan woher das kommen kann?
Danke!
-
Vermutlich hast du (unnötigerweise?) irgendwo windows.h o.ä. explizit inkludiert. Wenn ja, dann lass das mal weg oder ändere die include-Reihenfolge (vcl.h zuerst).
-
wo dran merke ich denn wenn ich windows versehentlich includiert habe?
an include "system.hpp"?
-
Keine Ahnung, ob system.hpp jetzt die windows.h aufruft, aber üblicherweise sollte es ausreichen, vcl.h zu inkludieren. Mindestens ab BCB5 ist damit so gut wie alles abgedeckt, von Ausnahmen wie registry.hpp usw. abgesehen. Die system.hpp zB. habe ich noch nie explizit inkludieren müssen.
-
ich habe es herausgefunden.
es liegt daran das ich eine clx anwendung schreibe. irgentwie muss das damit zusammenhängen. denn ich kann das OnDrawItem nicht aus keiner der test x anwendungen die ich geschrieben ahbe starten.weiß jemand ob es da einen patch oder so was gibt?
oder irgenteine lösung?
-
Du musst explizit den Namensraum angeben. In der Hilfe steht, dass der Typ in der Unit QStdCtrls deklariert ist. Ich hab da nachgesehen und gesehen, dass dieser Typ im Namespace Qstdctrls liegt. Du könntest also einfach Qstdctrls::TOwnerDrawState angeben. Allerdings dünkt mich das etwas merkwürdig, dass sich VCL und CLX da verheddern. Hast du irgendwo VCL-Header eingebunden?
-junix
-
nein, habe ich nicht. ich habs ja sogar in funkel nagelneue ersrellten clx anwendungen probiert, in denen es nichts gab als einen knopf und eine listbox
ich finde es auch sehr komisch. werde es mal so ausprobieren wie du sagst.
bei string grid funtkioniert das ondrawcell ereigniss auch unter clx. wenigstens etwas
EDIT:
geht auch nicht mit Qstdctrls::
da passiert genau das gleiche.[ Dieser Beitrag wurde am 27.05.2003 um 10:22 Uhr von Clip editiert. ]
-
Was includest du denn alles?
-junix
-
OK, das hier ist alles was ich mache.
Im OnDraw Ereingnis steht nur //. das reicht schon für den Fehler. Der kommt aber natürlich auch wenn da mehr drinn steht.Unit1.cpp
//--------------------------------------------------------------------------- #include <clx.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.xfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::ListBox1DrawItem(TObject *Sender, int Index, TRect &Rect, TOwnerDrawState State, bool &Handled) { // } //---------------------------------------------------------------------------
Unit1.h
//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <QControls.hpp> #include <QStdCtrls.hpp> #include <QForms.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten TListBox *ListBox1; void __fastcall ListBox1DrawItem(TObject *Sender, int Index, TRect &Rect, TOwnerDrawState State, bool &Handled); private: // Benutzer-Deklarationen public: // Benutzer-Deklarationen __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif
-
Hast du alle Patches aufgespielt?
-junix
-
ne.
aber ich habe von kaputt gepatchten systemen gehört. zumindest vom letzten patch. daher bin ich da etwas vorsichtig.
-
Hab das Problem mit meinem BCB6 versucht nachzuvollziehen, hat auch einwandfrei geklappt.. bin in den selben fehler gerannt... Hab aber merkwürdigerweise in den Newsgroups nichts gefunden und im Moment kann ich auch grad ned nach ner Lösung fahnden....
-junix
-
ok, dann weiß ich wenigstens, dass es nicht an mir liegt
Danke für Deine Hilfe!
-
Jo, sorry... Vielleicht wendest du dich mal an Borland Deutschland oder postest in der newsgroup von hmmm ich glaub es war forums.inprise.com
-junix