Frage

Ich erhalte Fragen Zeichnung mit OnAfterItemPaint Ereignis, wenn das horizontale Scrollen durchgeführt wird.

Im Grunde, was ich will ausgewählten Zellen ist die Verschmelzung von Effekt erreichen, sagen wir zum Beispiel 1 Text für Spalte 1 & 2, einen anderen Text für die Spalte 3 und 4, etc ... Bisher VT hat keine Unterstützung für Spalte Verschmelzung, also muss ich es manuell ziehen.

Gibt es eine Abhilfe oder ein anderes Ereignis, dass ich stattdessen verwenden sollte?

Mit: Delphi 7 + VirtualTreeView 4.8.5

Ereignisquelle:

begin
  TargetCanvas.TextOut(ItemRect.Left+ VT1.OffsetX, ItemRect.Top,
    '1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF');
end;

Vor der Taste:

alt text http://a.imagehost.org/0869/screen1.gif

Nach blättern (Scroll rechts, dann Nach links):

alt text http://a.imagehost.org/0645/screen2.gif

War es hilfreich?

Lösung

Es ist schwer zu sagen, was Sie erreichen wollen, aber zu sehen, dass Sie einen langen Text haben, dass Spannweiten mehr Spalten Ich bin mir nicht sicher, dass Sie das richtige Ereignis verwenden - in der Regel Du Text abgeschnitten werden soll, wenn es für seine Spalte zu lang ist .

Wie auch immer, das Beste ist, Abschnitt 5.2 „Male Zyklen und Phasen“ in dem VirtualTreeView.pdf Dokumentationsdatei, und finden Sie die richtige Veranstaltung für verwendet werden, was Sie malen wollen. Für OnAfterItemPaint heißt es:

  

Die nach Artikel Lackstufe wird verwendet, Knoten spezielle Sachen wie Frames hinzufügen und dergleichen   die Sorge um alle Spalten dieses Knotens und wird einmal pro Knoten genannt.

so dass ich denke, es ist wahrscheinlich nicht die, die Sie verwenden möchten.

Edit:

OK, wenn Sie sich für die Verschmelzung von Zellen gehen Sie brauchen nur die Zugabe von VT1.OffsetX zu entfernen (und fügen Sie VT1.TextMargin statt), um das richtige Verhalten zu erhalten. Dies setzt voraus, natürlich können Sie die Textausgabe in der ersten (Index 0) Spalte beginnen sollen, andernfalls müssen Sie die horizontale Textposition von den Spaltenbreiten berechnen.

Aber aus der Beschreibung der Farbstufen noch würde ich eher das BeforeItemPaint Ereignis verwenden und die CustomDraw var-Parameter auf True gesetzt jede Standard-Malerei zu überspringen.

Andere Tipps

Haben Sie versucht, diese:

TreeOptions.AutoOptions := TreeOptions.AutoOptions + [toAutoSpanColumns];

Es tut ziemlich viel, was Sie brauchen. Sie könnten nur Problem sein, dass Sie nicht angeben können, welche Spalten für aktiviert ist. Sie können sich wahrscheinlich dies durch Einschränkung umgehen, indem Sie den Celltext zu einem Leerzeichen für die Spalten Setzen Sie nicht in zu Spanne wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top