devil Geschrieben 12. April 2002 Teilen Geschrieben 12. April 2002 jo ich hab ne tlistview und will die einträge farbig gestalten... am besten wäre sogar mehrfarbig pro eintrag.... geht das ? wenn ja wie macht man es, ich habe schon überall nach ner hilfe dazu gesucht... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarcG Geschrieben 12. April 2002 Teilen Geschrieben 12. April 2002 Ich schätze mal su meinst Delphi (da TListview), da bist du hier im falschen Forum,(nur mal so ) Ok, um ne andere Farbe in nem Listview zu bekommen musst du die OnDraw (oder on ItemDraw???, weiss ich im Moment nicht mehr, wirst du aber denk ich doch selber Rausfinden) benutzen und dort eben die FontFarbe(oder die Pen-Farbe?) ändern, da das für alle Einträge gemacht wird musst du Prüfen was für ein Eintrag das ist ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
devil Geschrieben 13. April 2002 Autor Teilen Geschrieben 13. April 2002 nein nicht delphi, aber selbes haus, borland builder 5.. aha... ob das auch bei bb5 geht, ich werd mal suchen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
devil Geschrieben 13. April 2002 Autor Teilen Geschrieben 13. April 2002 das gibts tatsächlich... da bekomme ich dann folgenden funktionsaufruf void __fastcall TForm1::ListViewDrawItem(TCustomListView *Sender, TListItem *Item, TRect &Rect, TOwnerDrawState State) { } und wie soll ich das nun machen, ganz kapiert habe ich das nicht... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarcG Geschrieben 14. April 2002 Teilen Geschrieben 14. April 2002 Original geschrieben von devil das gibts tatsächlich... da bekomme ich dann folgenden funktionsaufruf void __fastcall TForm1::ListViewDrawItem(TCustomListView *Sender, TListItem *Item, TRect &Rect, TOwnerDrawState State) { } und wie soll ich das nun machen, ganz kapiert habe ich das nicht... Also ... Sender ist das TListView das das Ereigniss ausgelösst hat, dürfte hier wohl weniger interessieren. Item ist das Item aus der Liste welchens gerade gezeichnet werden soll. Rect ist das Rechteck auf dem TListView-Canvas, dass du benutzt um igendwas auszugeben. Und mit State kannst du feststellen, ob das Ding den Fokus hat und Selectiert ist etc ... steht aber auch alles in der Hilfe Moment ... Sender könnte doch interessieren wegen der Ausgabe ... weiss ich aber im Moment nicht mehr, sieht aber danach aus. Morgen werd ich mir das nochmal ankucken, wenn es nicht klar ist post ich mal die Delphi-Version davon, sollte dann klarer werden ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarcG Geschrieben 15. April 2002 Teilen Geschrieben 15. April 2002 //****************************************************************************** //*** lstPublic DrawItem *** //****************************************************************************** procedure TfrmLoadSQL.lstPublicDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var APos, Offset : Integer; ABox : TListBox; AString : String; begin ABox := (control as TListBox); AString := ABox.Items[Index]; APos := pos('*', AString); //*** Ist ein * angehängt ? Wenn ja = eigene Abfrage -> farbig Ausgeben if (APos <> 0 ) then begin //*** * am Ende abschneiden delete(AString, APos, 1); With ABox.Canvas do begin //*** Ausgabe Rechteck löschen FillRect(Rect); Offset := 2; Font.Color := clRed; TextOut(Rect.Left + Offset, Rect.Top, AString) end; end else if (State = [odSelected, odFocused]) then begin With ABox.Canvas do begin //Brush.Color := clRed; //*** Ausgabe Rechteck löschen FillRect(Rect); Offset := 2; Font.Color := clWhite; TextOut(Rect.Left + Offset, Rect.Top, ABox.Items[Index]); end end else //*** keine eigene Abfrage begin With ABox.Canvas do begin //*** Ausgabe Rechteck löschen FillRect(Rect); Offset := 2; Font.Color := clBlack; TextOut(Rect.Left + Offset, Rect.Top, ABox.Items[Index]); end end; end; Ich hoffe das hilft dir ... ach ja, was mir wieder einfällt. Wenn du DrawItem benutzt musst du alle Ausgaben selber machen, d.h. du musst selber die Farbe ändern wenn du einen Eintrag selektierst und wieder normal machen wenn er nicht selektiert ist. (State s.o.) Wegen mehrfarbiger Ausgabe pro eintrag, das geht wie oben, nur musst du dir eben merken wo du den Text mit der neuen Farbe anfangen willst ... also anstelle von Font.Color := clBlack; TextOut(Rect.Left + Offset, Rect.Top, ABox.Items[Index]); eher sowas wie ... Font.Color := clRed; TextOut(Rect.Left + Offset, Rect.Top, TeilString1); Font.color := clBlue; TextOut(Rect.Left + Offset + TextWidth(TeilString1) + x, Rect.Top, TeilString2); wobei x dazu da ist, einen gewissen Abstand zwichen die beiden Teilstrings zu bringen und sie nicht direkt aneinander zu kleben. Musst du aber probieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.