2016-03-27 47 views
4

Bir TVirtualStringTree yakınlaştırmak/uzaklaştırmak için "en iyi yolu" bulmak istiyorum.
"Yakınlaştır", bir büyüteç takmak anlamına gelir.
"En iyi yol", TVirtualStringTree denetiminde buna öncelikli olan özellikler/yöntemler kullanılarak anlaşılmalıdır. Hiçbir yöntem yoksa, düşük düzeyli API'lerden kaçınarak en basit yolu önerin. initial state http://didier.cabale.free.fr/temp/VST1.jpg: Daha iyi bu soruyu, İşte
açıklamak üzere
zoom-in TVirtualStringTree

ilk halinde TVirtualStringTree bir görüntü var.
.. ve burada onun istenilen durumda TVirtualStringTree bir görüntü var: wanted state http://didier.cabale.free.fr/temp/VST2.jpg

burada

ne yaptım
+0

, ama benim soru downvoted olmuştur nedeni moderatör isteyebilir:

Hep birlikte koymak, o verir. Her neyse, gelecekteki taleplerimin ilgisini artırmaya yardımcı olabilir. Teşekkürler –

cevap

4

Sevgili Didier (benim idem ego),:
Önemli not: Bu ben ne yaptım, ama bu en uygun çözüm olduğundan emin değilim, bu nedenle herhangi bir yeni fikir daha fazladır! Aynı olayda İşleyici (ör. Düzenlemenin OnChange) 'daki A. A. TVirtualStringTree düğüm Font.Size set

VirtualStringTree1.Header.Font.Size := UpDown1.Position; 
  • :

    :

    VirtualStringTree1.Font.Size := UpDown1.Position; 
    
  • TVirtualStringTree Header arasında Height set

    1. TVirtualStringTree Header arasında Font.Size ayarlamak

      VirtualStringTree1.Header.Height := Round(VirtualStringTree1.Header.Height * Delta); 
      
    2. ayarlanmış kolon en Width TVirtualStringTree Header arasında:

      for i := 0 to VirtualStringTree1.Header.Columns.Count -1 do 
          VirtualStringTree1.Header.Columns.Items[i].Width := Round(VirtualStringTree1.Header.Columns.Items[i].Width * Delta); 
      

    B. TVirtualStringTree en OnMeasureTextHeight olay işleyicisi olarak, NodeHeight[Node] özelliğini ayarlamak:

    Sender.NodeHeight[Node] := Round(Extent * 1.1); 
    

    C set TVirtualStringTree en Nesnede false için toAutoChangeScale Müfettiş. Burada konu dışı

    procedure TForm1.Edit3Change(Sender: TObject); 
    var 
        Delta: Double; 
        i: byte; 
    begin 
        Delta := UpDown1.Position/VirtualStringTree1.Font.Size; 
        VirtualStringTree1.BeginUpdate(); 
        try 
        VirtualStringTree1.Font.Size  := UpDown1.Position; 
        VirtualStringTree1.Header.Font.Size := UpDown1.Position; 
        VirtualStringTree1.Header.Height := Round(VirtualStringTree1.Header.Height * Delta); 
        for i := 0 to VirtualStringTree1.Header.Columns.Count -1 do 
        VirtualStringTree1.Header.Columns.Items[i].Width := Round(VirtualStringTree1.Header.Columns.Items[i].Width * Delta); 
        finally 
        VirtualStringTree1.EndUpdate(); 
        end; 
    end; 
    
    procedure TForm1.VirtualStringTree1MeasureTextHeight(Sender: TBaseVirtualTree; 
        TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; 
        const Text: string; var Extent: Integer); 
    begin 
        Sender.NodeHeight[Node] := Round(Extent * 1.1); 
    end;