Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TTreeview - Höhe der Items bei Eigenschaft Wordwrap nicht korrekt (https://www.delphipraxis.net/193921-ttreeview-hoehe-der-items-bei-eigenschaft-wordwrap-nicht-korrekt.html)

bluesky70 23. Sep 2017 14:14

TTreeview - Höhe der Items bei Eigenschaft Wordwrap nicht korrekt
 
Hallo,

ich entwickle einen Anwendung unter Delphi XE 10.2.1, die für IOS und Android compiliert werden soll.

Ich habe hierbei eine TTreeview-Komponente verwendet, die mir in drei Ebenen die Werte als Baum anzeigen soll.

Dabei habe ich das Problem, dass die Höhe der Items nicht korrekt berechnet wird, wenn die Eigenschaft WordWrap eingeschaltet ist und dadurch einzelne Elemente mehrzeilig in der Darstellung werden.

Der Text wird dann zwar umgebrochen, die Höhe der Items ist aber immer wie für eine Zeile. Eigentlich müsste doch die Höhe abhängig von der Zeilenanzahl, die sich für das Item ergibt, berechnet werden.

Im Quelltext erzeuge ich die Elemente des Baumes wie folgt:

EPItem := TTreeViewItem.Create(nil);
EleItem.WordWrap := True;
...
EleItem.Text := ...
EleItem.Parent := ...

Auf dem Form liegt ein StyleBook, in dem der treeviewitemstyle etwas abgeändert wurde. das oben beschriebene Problem besteht aber auch, wenn es diesen Style im StyleBook nicht gibt, es hat also wahrscheinlich nichts mit dem Style an sich zu tun.

Ich hoffe es kann damit jemand etwas anfangen und hat eine Idee, was da für eine Eigenschaft evtl. einzustellen ist oder das Problem zu lösen ist.

Vielen Dank im Voraus. :)

Redeemer 23. Sep 2017 16:21

AW: TTreeview - Höhe der Items bei Eigenschaft Wordwrap nicht korrekt
 
Wie rufst du die Höhe denn ab?

bluesky70 23. Sep 2017 19:20

AW: TTreeview - Höhe der Items bei Eigenschaft Wordwrap nicht korrekt
 
Hallo,

das Problem ist nicht das Abrufen der Höhe.

Wenn man den Treeview ganz normal anzeigt mit der Eigenschaft Wordwrap, dann werden ja die Elemente mehrzeilig umgebrochen und angezeigt. Klickt man aber ein solches Element an, so daß es markiert ist dann ist die Markierung nicht hoch genug und der Text oben und unten abgeschnitten.

Grüsse

bluesky70 25. Sep 2017 09:29

AW: TTreeview - Höhe der Items bei Eigenschaft Wordwrap nicht korrekt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich hänge nochmal einen Sceenshot an, wie das ganze aussieht bzw. was das Problem ist.

Ausserdem die PAS und FMX-Datei. Ist also direkt ersichtlich bei einem einfachen Beispielform mit einem Treeview.

Was mache ich da falsch?

Danke im Voraus.


Delphi-Quellcode:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 480
  ClientWidth = 640
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop]
  OnShow = FormShow
  DesignerMasterStyle = 0
  object TreeView1: TTreeView
    Align = Client
    Size.Width = 640.000000000000000000
    Size.Height = 480.000000000000000000
    Size.PlatformDefault = False
    TabOrder = 0
    Viewport.Width = 636.000000000000000000
    Viewport.Height = 476.000000000000000000
  end
end
Delphi-Quellcode:
unit TreeTest;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts,
  FMX.TreeView;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.FormShow(Sender: TObject);
Var ParentItem,
    TreeItem : TTreeViewItem;
    Cnt     : Integer;

begin
Cnt          := 1;
TreeItem     := TTreeViewItem.Create(nil);
TreeItem.Name := 'ItemNo'+IntToStr(Cnt);
Inc(Cnt);
TreeItem.WordWrap := True;
TreeItem.Text    := 'Stufe 1';
TreeItem.Parent  := TreeView1;
ParentItem       := TreeItem;
TreeItem     := TTreeViewItem.Create(nil);
TreeItem.Name := 'ItemNo'+IntToStr(Cnt);
Inc(Cnt);
TreeItem.WordWrap := True;
TreeItem.Text    := 'Stufe 2';
TreeItem.Parent  := ParentItem;
ParentItem       := TreeItem;
TreeItem     := TTreeViewItem.Create(nil);
TreeItem.Name := 'ItemNo'+IntToStr(Cnt);
Inc(Cnt);
TreeItem.WordWrap := True;
TreeItem.Text    := 'Stufe 3';
TreeItem.Parent  := ParentItem;
ParentItem       := TreeItem;
TreeItem     := TTreeViewItem.Create(nil);
TreeItem.Name := 'ItemNo'+IntToStr(Cnt);
Inc(Cnt);
TreeItem.WordWrap := True;
TreeItem.Text    := 'Stufe 4: kurzer Text';
TreeItem.Parent  := ParentItem;
TreeItem     := TTreeViewItem.Create(nil);
TreeItem.Name := 'ItemNo'+IntToStr(Cnt);
Inc(Cnt);
TreeItem.WordWrap := True;
TreeItem.Text    := 'Stufe 4 mit langem Text für Umbruch';
TreeItem.Parent  := ParentItem;
TreeItem     := TTreeViewItem.Create(nil);
TreeItem.Name := 'ItemNo'+IntToStr(Cnt);
Inc(Cnt);
TreeItem.WordWrap := True;
TreeItem.Text    := 'Stufe 4: wieder kurz';
TreeItem.Parent  := ParentItem;
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz