AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Große Probleme mit VirtualStringTree

Große Probleme mit VirtualStringTree

Ein Thema von SneakyBagels · begonnen am 17. Jun 2017 · letzter Beitrag vom 19. Jun 2017
Antwort Antwort
Seite 4 von 4   « Erste     234
Foren-Tage 2017
DIE Konferenz für Delphi-Entwickler mit vielen Vorträgen und ganztägigen Workshops, veranstaltet u.A. von der Delphi-PRAXiS und Embarcadero.
21.-23. September 2017 in Hamburg · Mehr Infos unter forentage.de.
Aviator

Registriert seit: 3. Jun 2010
1.149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#31

AW: Große Probleme mit VirtualStringTree

  Alt 18. Jun 2017, 19:06
Für den Fall könntest du mal den Automatismus vom VST ausprobieren. Aktiviere hierzu toAutoSpanColumns (glaube so heißt es) in den TreeOptions und füge dann nur in Col1 (bzw. in der Column, ab der der Text angezeigt werden soll) den Text ein. Bei den nachfolgenden Columns lässt du den CellText leer.

Der VST verlängert dann automatisch den Text über die anderen Spalten hinweg. Ob das mit Multiline funktioniert weiß ich nicht. Die Node Höhe sollte da aber keine Rolle spielen.
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#32

AW: Große Probleme mit VirtualStringTree

  Alt 18. Jun 2017, 20:10
Funktioniert alles leider nicht.
Ich brauche leider ja auch die anderen Columns.

Chaotisch aber so sieht es aus
Delphi-Quellcode:
procedure TForm2.VSTDrawText(Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; const Text: string; const CellRect: TRect;
 var DefaultDraw: Boolean);
var
 Data: TVSTData;
 DrawFormat: Cardinal;
 R: TRect;
 s: string;
begin
 DefaultDraw := False;
 R := CellRect;

 if Column = 0 then
  R.Left := R.Left + VST.Indent;

 Data := Node.GetData<TVSTData>;

 // TargetCanvas.TextOut(CellRect.Left, CellRect.Top + 2, Text);

 DrawFormat := DT_NOPREFIX or DT_VCENTER; // or DT_SINGLELINE;
 // if Data.bHasDescription then
 // R.Top := R.Top - 14;

 // Winapi.Windows.DrawTextW(TargetCanvas.Handle, PWideChar(Text), Length(Text), R, DrawFormat);

 if Data.bHasDescription and (Column = 0) then
  begin
   s := '123 123 123 123 123 ' + sLineBreak + '123 123 123 123 123 123 123 123 123 123 ';
   // R.Top := R.Top + 28;
   // TargetCanvas.TextOut(CellRect.Left, CellRect.Top + 18, s);
   Winapi.Windows.DrawTextW(TargetCanvas.Handle, PWideChar(s), Length(s), R, DrawFormat);
  end
 else if (Column = 0) then
  Winapi.Windows.DrawTextW(TargetCanvas.Handle, PWideChar(Text), Length(Text), R, DrawFormat);
end;

Geändert von SneakyBagels (18. Jun 2017 um 20:13 Uhr)
  Mit Zitat antworten Zitat
Towmuz

Registriert seit: 21. Sep 2016
Ort: Minden
54 Beiträge
 
Delphi 10.1 Berlin Professional
 
#33

AW: Große Probleme mit VirtualStringTree

  Alt 19. Jun 2017, 07:46
Moin,

habe jetzt nicht so ganz genau den Thread komplett gelesen, aber ich glaub du könntest
in diesem Fall auch einfach im OnInitNode festlegen:

Delphi-Quellcode:
procedure TForm2.VSTInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
begin
  if Length(VST.GetNodeData<TDeinObject>(Node).Col1) > 10 then
  begin
     VST.MultiLine[Node] := True;
     VST.NodeHeight[Node] := 40; // oder sonstwas wie´s dir passt
  end
end;
Dann kann das händische Pinseln im OnDrawText raus und mit OnGetText dann:

Delphi-Quellcode:
procedure TForm2.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
var
  s: string;
begin
  case Column of
    0: begin
      if Length(VST.GetNodeData<TDeinObject>(Node).Col1) > 10 then
      begin
        s := 'blablalblabla' + #13#10 + 'blablabla';
      end else begin
        s := 'blabla';
      end;
      CellText := s;
    end;
  end;
end;
Thomas
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#34

AW: Große Probleme mit VirtualStringTree

  Alt 19. Jun 2017, 08:03
Zitat:
habe jetzt nicht so ganz genau den Thread komplett gelesen,
Ist kein Problem und ich bedanke mich für die Hilfe aber das ist nicht das was ich suche. Ich suche eine Lösung die mir die zweite Zeile der ersten Spalte über alle Spalten hinweg durchgehend anzeigt.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#35

AW: Große Probleme mit VirtualStringTree

  Alt 19. Jun 2017, 08:39
Zitat:
habe jetzt nicht so ganz genau den Thread komplett gelesen,
Ist kein Problem und ich bedanke mich für die Hilfe aber das ist nicht das was ich suche. Ich suche eine Lösung die mir die zweite Zeile der ersten Spalte über alle Spalten hinweg durchgehend anzeigt.
Ich bin immer noch der Meinung, dass dir an der Stelle toAutoSpanColumns helfen müsste. Das hat nämlich genau den Effekt den du suchst.

Alternativ kannst du auch das Zeichnen des Textes selbst übernehmen mit dem DrawText Event und einfach dann an den Zellen in denen nichts gezeichnet wird DefaultDraw auf False setzen und auch selbst dort nichts zeichnen. Nur toAutoSpanColumns nimmt dir die Arbeit schon ab.
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#36

AW: Große Probleme mit VirtualStringTree

  Alt 19. Jun 2017, 08:43
Wie bereits erwähnt habe ich das schon getestet.
Die Texte zeichne ich bereits selber.
  Mit Zitat antworten Zitat
Towmuz

Registriert seit: 21. Sep 2016
Ort: Minden
54 Beiträge
 
Delphi 10.1 Berlin Professional
 
#37

AW: Große Probleme mit VirtualStringTree

  Alt 19. Jun 2017, 09:17
Ah na denn, siehe Grafik ob ich´s nun richtig verstanden hab
ansonsten Bsp.Projekt im Anhang.

Für sowas gibt´s das AfterItemPaint, wenn du das im OnDrawText benutzt kannst du das Rectangle zwar definieren wie du willst, es wird trotzdem jedesmal die Column (also auch die NachbarColumns) neu gezeichnet, und somit deine übermalte Column kurz gezeichnet und dann gleich wieder überpinselt.

Edit: TreeView Version 6.4.1. aber das sollte wohl kaum einen Unterschied machen
Miniaturansicht angehängter Grafiken
unbenannt.jpg  
Angehängte Dateien
Dateityp: rar VT_UeberDieColumnSchreiben.rar (52,2 KB, 3x aufgerufen)
Thomas

Geändert von Towmuz (19. Jun 2017 um 09:22 Uhr)
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#38

AW: Große Probleme mit VirtualStringTree

  Alt 19. Jun 2017, 10:20
Bild sieht gut aus. Ich teste das gleich mal!
Ich antworte gleich auch im Detail nur habe gerade keine zeit.

Also: ich teste das gleich und melde mich
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2017 by Daniel R. Wolf