Einzelnen Beitrag anzeigen

Thanatos81
(Gast)

n/a Beiträge
 
#5

Re: Hintergrundgrafik in TreeView ?

  Alt 16. Aug 2005, 19:15
Das mit nur gekachelten Hintergrundbildern stimmt so nicht ganz. Dafür gibts beim VST die Eigenschaften toStaticBackground (zu finden unter TreeOptions.PaintOptions), ist diese aktiviert, wird das Bild nicht gekachelt dargestellt.

Mit BackgrpoundOffSetX und BackgroundOffSetY kann man dann die Position der oberen linken Ecke bestimmen.

Aber leider habe ich keine einfache Methode gefunden, dass BackgroundImage zu zentrieren

//Edit
Ich hab mir mal eben was zurecht gefrickelt, vielleicht hilfts ja wem:
Delphi-Quellcode:
procedure TfrmMain.VSTPaintBackground(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; R: TRect; var Handled: Boolean);
var links,oben : Integer;
    myVST : TVirtualStringTree;
begin
  myVST := TVirtualStringTree(Sender);

//nur nen Offset, wenns Static ist, da bei den Kacheln kein Offset sein sollte
  if (toStaticBackground in myVST.TreeOptions.PaintOptions) then
    begin
      links := (myVST.Width div 2)-(myVST.Background.Width div 2);
      oben := (myVST.Height div 2)-(myVST.Background.Height div 2);;
    end
  else
    begin
      links := 0;
      oben := 0;
    end;
  myVST.BackgroundOffsetX := links;
  myVST.BackgroundOffsetY := oben;
  handled := false;
end;
Das ganze ist der Ereignishandler zu OnPaintBackground. Das handled wird auf false gesetzt, da ich nicht selber zeichne. Es flackert minimal, leider hilft VST.DoubleBuffered := true auch nicht wirklich Falls jemand ne Idee hat, mir gehts im Mom so:

//Edit 2
packt den Code lieber in den EreignisHandler OnResize eures Forms und sprecht das VST direkt an, ansonsten kann es beim Resizen zu komischen Effekten kommen
  Mit Zitat antworten Zitat