![]() |
Re: Wo bekomme ich Rect bei OnCustomDrawSubItem von TListVie
Liste der Anhänge anzeigen (Anzahl: 1)
Statt Prosa eine kleine Gehhilfe im Anhang.
|
Re: Wo bekomme ich Rect bei OnCustomDrawSubItem von TListVie
Zitat:
|
Re: Wo bekomme ich Rect bei OnCustomDrawSubItem von TListVie
Zitat:
Edit: Füg mal deinem Code diese Zeilen bei:
Delphi-Quellcode:
procedure TDemoForm.ListViewCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean); var R: TRect; begin with Sender.Canvas do begin Font.Style := Font.Style - [fsBold]; Brush.Color := clWindow; Font.Color := clBlack; case SubItem of 1: Font.Style := Font.Style + [fsBold]; 2: Brush.Color := clYellow; 3: Font.Color := clRed; end; if SubItem = 4 then begin //uses CommCtrl CommCtrl.ListView_GetSubItemRect(Sender.Handle, Item.Index, SubItem, LVIR_BOUNDS, @R); with R do Rectangle(Left, Top, Left + 100, Bottom); end; end end; |
Re: Wo bekomme ich Rect bei OnCustomDrawSubItem von TListVie
Steckt doch bitte *Beide* die Faust in die Tasche und zählt dann bis Zehn.
von 0 bis 9 oder von 1 bis 10 :-) Müde bin ich, geh zur Ruh', decke meine beiden Äuglein zu... |
Re: Wo bekomme ich Rect bei OnCustomDrawSubItem von TListVie
Ich hoffe nicht, daß das eine Antwort auf die Frage war.
|
Re: Wo bekomme ich Rect bei OnCustomDrawSubItem von TListVie
Moin, Popov.
Mit dem Code aus Beitrag #11 wollte ich meine Prosa aus Beitrag #8 untermauern. Das Besondere an diesem Code sind nicht die vorhandenen Zeilen, sondern die nicht vorhandenen. Zitat:
Mein Code zeigt, wie du die ersten drei Beispiele aus deinem Beitrag #9 ohne seltsame Effekte kodieren kannst. Rectangle() ist eine Ausgabe und wenn du daran festhalten willst, dann musst du das Zeichnen der Subitems vollständig selbst übernehmen. Den Aufwand würde ich mir ersparen, da Rectangles nicht sehr ästhetisch rüber kommen, wenn sie sich berühren. Zitat:
Zitat:
Freundliche Grüße |
Re: Wo bekomme ich Rect bei OnCustomDrawSubItem von TListVie
Du könntest ansonsten auch das Ereignis onAdvancedCustomDrawSubItem anstatt onCustomDrawSubItem verwenden, da hast du dann wenigstens nicht die Probleme mit dem fetten Text und der falschen Darstellung.
Zitat:
Zitat:
![]() |
Re: Wo bekomme ich Rect bei OnCustomDrawSubItem von TListVie
Mal eines vorweg, da es wohl kleine Missverständnisse gibt und immer wieder drauf eingegangen wird - ich hab nicht vor nur ein Rechteck zu zeichnen. Das Rechteck ist nur ein einfaches Beispiel, später wird ein Diagramm gezeichnet. Nur habe ich die Routine noch nicht programmiert und deshalb behelfe ich mir mit einem kleinen Rechteck. Also jetzt keine Empfehlungen bezüglich Rechtecke und Ästhetik, das wird später anders gemacht.
Zitat:
Zitat:
Delphi-Quellcode:
Aber die Grafik hat vorerst die höhere Priorität. Ich experimentiere noch ein wenig. Das Problem ist, daß ich viele ListViews und mir dann viel Arbeit mache wenn ich alle die Texte selbst ausgebe, aber wenn es sein muß, dann muß es sein.
Rectangle() ist eine Ausgabe und wenn du daran festhalten willst, dann musst du das Zeichnen der Subitems vollständig selbst übernehmen.
|
Re: Wo bekomme ich Rect bei OnCustomDrawSubItem von TListVie
Hallo,
Zitat:
Das ungeliebte Rectangle() ist auch bei mir nur als Platzhalter zu verstehen - gemeint ist jede Art von Ausgabe auf dem Canvas, also auch das Zeichnen eines Diagramms. Falls das mit den AdvancedCustomDraw-Ereignissen reibungslos funktioniert, würde ich bei Gelegenheit nochmal etwas Zeit für das Quellenstudium investieren. Ansonsten gehe ich davon aus, dass sich dieses VCL-Design nicht mit zwei Zeilen Code abändern lässt. Freundliche Grüße |
Re: Wo bekomme ich Rect bei OnCustomDrawSubItem von TListVie
Um ganz ehrlich zu sein bin ich etwas ratlos was man da nehmen soll.
Code:
Das was man nehmen könnte funktioniert nicht so wie es soll, alles andere funktioniert, aber man muß sich in Arbeit stürzen. Für OnDrawItem muß ich OwnerDraw auf true setzen, muß dann aber auch alles selbst zeichnen, vor allem auch den Text. Da ich aber nur in einem SubItem etwas zeichnen will, erscheint mir OnCustomDrawSubItem interessant. Warum etwas anderes nehmen um dann selbst den Text ausgeben, wenn hier rein theoretisch das richtige Ereignis vorliegt. Die Fehler sind bekannt. Leicht besser, aber auch nicht fehlerfrei ist OnAdvancedCustomDrawSubItem. Hier wird zumindest nicht der Text aller Items und SubItems mit falscher Schrift ausgegeben, somit zumindest zum Teil ok, aber wenn nach dem Subiten ein weiterer Subitem folgt, dann ist das Problem mit der Schrift wieder da.
OnAdvancedCustomDraw
OnAdvancedCustomDrawItem OnAdvancedCustomDrawSubItem OnCustomDraw OnCustomDrawItem OnCustomDrawSubItem OnDrawItem Rein theoretisch könnte ich mit OnAdvancedCustomDrawSubItem leben, da ich meine Grafik im letzten Subitem ausgebe, das Problem tritt also hier nicht auf, allerdings kann es sein, daß ich mich entschließe doch noch ein SubItem hinzu zu fügen und dann habe ich das Problem. Also irgendwie muß es doch gehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz