?
Hi
Nachdem ich jetzt meine Hintergrund- und Schriftfarbe habe, die Schrift und die Zeilengrösse ändern kann habe ich noch ein kleines Problem.
Die Zeilenhöhe ändere ich so:
lboxTarget->ItemHeight=32;
Ich möchte aber das es Variabel wird. Wie kann ich beim reinziehen eine Variable grösse mitgeben ?!?!?!?!?
DRAG & DROP
void __fastcall TForm1::lboxTargetDragOver(TObject *Sender,
TObject *Source, int X, int Y, TDragState State, bool &Accept)
{
Accept = Source->ClassNameIs("TListBox");
int ilIndex = lboxTarget->ItemAtPos(Point(X,Y), true);
if(ilIndex > -1)
lboxTarget->ItemIndex = ilIndex;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::lboxTargetDragDrop(TObject *Sender,
TObject *Source, int X, int Y)
{
int igOldPos=0;
// Falls von einer anderen Listbox gezogen:
if(Sender==lboxTarget && Source == lboxSource)
{
int ilNewPos = lboxTarget->ItemAtPos(Point(X,Y), true);
if(ilNewPos > -1)
{
lboxTarget->Items->Insert(ilNewPos, lboxSource->Items->
Strings[lboxSource->ItemIndex]);
lboxTarget->ItemIndex = ilNewPos;
}
else
{
lboxTarget->Items->Insert(lboxTarget->Items->Count,
lboxSource->Items->Strings[lboxSource->ItemIndex]);
lboxTarget->ItemIndex = lboxTarget->Items->Count-1;
}
}
// Falls innerhalb der Listbox verschieben:
else if(Sender==lboxTarget && Source == lboxTarget)
{
int ilNewPos = lboxTarget->ItemAtPos(Point(X,Y), true) >= 0 ?
lboxTarget->ItemAtPos(Point(X,Y), true) : lboxTarget->Items->Count-1;
if(igOldPos >= 0 && igOldPos != ilNewPos)
{
lboxTarget->Items->Exchange(igOldPos, ilNewPos);
lboxTarget->ItemIndex = ilNewPos;
}
}
}
DRAW ITEM
void __fastcall TForm1::lboxTargetDrawItem(TWinControl *Control, int Index,
TRect &Rect, TOwnerDrawState State)
{
TColor LBColors[2] = {clGray, clBlack};
//Farbe für Hintergrund und Text
lboxTarget->Canvas->Brush->Color = LBColors[0];
lboxTarget->Canvas->Font->Color = LBColors[1];
//Text Grösse
lboxTarget->Canvas->Font->Size = 14;
//Eintrags Höhe
lboxTarget->ItemHeight=32;
// Hintergrund zeichnen
lboxTarget->Canvas->FillRect(Rect);
// Text zeichnen
lboxTarget->Canvas->TextRect(Rect, Rect.Left, Rect.Top,
lboxTarget->Items->Strings[Index]);
if(State.Contains(odFocused))
lboxTarget->Canvas->DrawFocusRect(Rect);
}