?
Hi
Habe jetzt die struct erstellt
struct CellObject
{
TColor BackColor;
TFont * Font;
}structobject;
und versuche
void __fastcall TForm2::lboxTargetDrawItem(TWinControl *Control, int Index,
TRect &Rect, TOwnerDrawState State)
{
//Variable die den Kategorienamen erhält, um die Hintergrundfarbe zu bestimmen
String Kategorie;
//Versuch das struct anzuwenden
CellObject *structobject = new CellObject();
int eigentlich_ein_zeiger = reinterpret_cast<int>(structobject);
//Schleife sucht für den "rübergezogenen" Titel, die Kategorie raus um
//Hintergrundfarbe zu bestimmen
Form1->Table1->First();
for(int i=0; i<Form1->Table1->RecordCount; i++)
{
if ( (Form1->Table1->FieldByName("Titel")->AsString) == (lboxSource->Items->Strings[lboxSource->ItemIndex]))
{
Kategorie=Form1->Table1->FieldByName("Kategorie")->AsString;
}
Form1->Table1->Next();
}
//Je nach Kategorie bekommt der Eintrag seine Hintergrundfarbe
//Speicherung mit struct
if (Kategorie=="Bild")
{
//BackColor von struct wird nicht gefunden
eigentlich_ein_zeiger->BackColor= clRed;
}
if (Kategorie=="Kunst")
{
eigentlich_ein_zeiger,Color= clBlue;
}
if (Kategorie=="Landschaft")
{
eigentlich_ein_zeiger,Color= clGreen;
}
//Der Ausgewählte Eintrag bekommt Werte
if(State.Contains(odSelected))
{
//Farbe der Schrift
lboxTarget->Canvas->Brush->Color = eigentlich_ein_zeiger,Color;
//Farbe des Hintergrundes
lboxTarget->Canvas->Font->Color = clBlack;
//Text Grösse
lboxTarget->Canvas->Font->Size = 14;
lboxTarget->Canvas->FillRect(Rect);
// Text zeichnen
lboxTarget->Canvas->TextRect(Rect, Rect.Left, Rect.Top,lboxTarget->Items->Strings[Index]);
}
//Der Eintrag wird gezeichnet
if(State.Contains(odFocused))
{
lboxTarget->Canvas->DrawFocusRect(Rect);
}
lboxTarget->Canvas->FillRect(Rect);
// Text zeichnen
lboxTarget->Canvas->TextRect(Rect, Rect.Left, Rect.Top,lboxTarget->Items->Strings[Index]);
}
im if-Bereich die Farbe im struct zu speichern.
Aber dann ändert sich immer die Hintergrundfarbe des Formulars.
Ich habe in der 1 ten if versucht direkt auf die Struct Variable BackColor zuzugreifen aber das geht nicht.
So schwer kann das doch nicht sein oder ????
Bin echt am Verzeweifeln. Sowas muss doch schon mal jemand gemacht haben.
Bitte euch nochmal um Hilfe
Tschö
Denise