-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
6. Apr 2017
Nein auch mit der Option ändert sich nichts.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
6. Apr 2017
Ich verwende in den meisten Fällen die Komponente nur als Grid, aber einfach Header.MainColumn auf '1' zu setzten geht nicht wenn man wie in meinem Projekt teilweise nur eine Spalte hat. Naja und da die Lösung mit InvalidateNode() ja funktioniert, belasse ich es mit der Lösung.
Und das habe ich ja die ganze Zeit auch gemeint da das Verhalten so merkwürdig ist das ich da auch auf einen Bug...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
6. Apr 2017
Ja habe ich und nach wie vor bleibt die erste Spalte nur 62px breit obwohl 106px sein müssten.
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, VirtualTrees, Vcl.StdCtrls;
type
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
6. Apr 2017
Was heißt vergessen, es funktionierte bisher auch gut ohne. Aber auch mit "^" ändert sich nichts am ursprünglichen Problem, das die erste Spalte nicht angepasst wird wenn ich AutoFitColumns aufrufe.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
6. Apr 2017
Naja InvalidateNode() hat aber eine Auswirkung darauf, zumindest soweit das die Berechnung danach funktioniert. Ich weiß doch auch nicht wieso das so ist.
Damit ihr euch das auch ansehen könnt habe ich eine Mini Anwendung (siehe Anhang) gebaut die das Verhalten wie mein eigentliches Projekt aufweist.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
6. Apr 2017
Das habe ich mir auch schon gedacht das die Spalte 0 doch noch etwas besonders ist und deshalb die Komponente sich anders verhält als bei den anderen Spalten.
Ich habe inzwischen eine Lösung gefunden wenn ich nach dem Ändern des Inhalt vstTable.InvalidateNode(Node); durchführe funktioniert die Berechnung und Anpassung aller Spalten in der Zeile.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
4. Apr 2017
Im Grunde ist es logisch da gebe ich dir recht, nur müsste es dann nicht für alle Spalten NICHT funktionieren. :gruebel:
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
4. Apr 2017
Nachtrag:
An Stelle davon die Auswahl aufzuheben und wieder zu setzen kann man auch per vstTable.InvalidateNode(Node); den einzelnen Knoten aktualisieren und dann klappt auch wieder die Berechnung. Trotz alle dem scheint mir das Verhalten etwas merkwürdig zu sein, aber gut mit dieser Lösung kann ich arbeiten.
Vielen Dank bei allen Beteiligten, wünsche euch noch einen schönen Tag ;-)
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
4. Apr 2017
Ok, ich verstehe es zwar nicht so ganz aber ich glaube ich habe die Ursache gefunden. Weil die Zeile ja immer noch den Focus hat und ausgewählt ist wird wohl intern der Inhalt für die erste Spalte geändert so das bei der Berechnung der maximalen Breite keine Veränderung erkannt wird. Hebe ich die Auswahl vor dem Ändern auf klappt es und auch die erste Spalte wird korrekt geändert.
procedure...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
4. Apr 2017
Ja aber warum nur bei der ersten Spalte und nicht bei allen, das finde ich ja das total merkwürdige an der Sache.
Jetzt habe mich mal für Spaß die Option vstTable.Header.MainColumn auf 1 gesetzt und siehe da es funktioniert, die erste und auch die zweite Spalte werden angepasst. So bald aber MainColumn wieder auf 0 oder -1 steht klappt es nicht.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
4. Apr 2017
Bei PDataset handelt es sich um einen Zeiger auf eine Klasse.
TDataset = class(TObject)
private
FName: String;
FType: String;
public
constructor Create;
destructor Destroy; override;
property Name: String read FName write FName;
property Type: String read FType write FType;
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
4. Apr 2017
Danke für den Tipp, und nein AutoSizeIndex steht nicht auf 0 es steht auf -1
Ähm... glaube nicht aber sagen wir mal so es funktioniert ja, zumindest der Zugriff nicht die Spaltenbreite ;-) Und selbst mit Data^.Name := ändert sich nichts.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
4. Apr 2017
Irgendwas scheint bei mir noch anders zu sein, den ihr verwendet ja auch GetMaxColumnWidth, und das führt bei mir ja zu einem Falschen Ergebnis.
Wäre es möglich mir die Optionen und Eigenschaften der Komponente zu zeigen, also das was in der *.dfm Datei steht? Damit ich das mit meinen Eigenschaften vergleichen kann.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
4. Apr 2017
Es wird immer lustiger, ich gucke gerade was den AutoFitColumns so tatsächlich macht.
ShowMessage(vstTable.GetMaxColumnWidth(0, True).ToString); //Hier ist die Spalte 69px breit
ShowMessage(vstTable.GetMaxColumnWidth(1, True).ToString); //Hier ist die Spalte 49px breit
Node := vstTable.FocusedNode;
if Assigned(Node) then
begin
Data := vstTable.GetNodeData(Node);
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
4. Apr 2017
Selbst wenn ich coSmartResize hinzufüge ändert sich am Verhalten nichts, Spalte 1 bleibt Stur und das komische ist sie wird ja nicht mals neu gezeichnet, erst wenn man das manuell anstößt mit vstTable.invalidate
Ändere ich den Inhalt z.B. in Spalte 2 wird die Spalte sofort angepasst, neu gezeichnet und alles ist wunderbar.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
4. Apr 2017
Ich weiß zwar nicht welche Option du meinst, aber müsste das dann nicht generell funktionieren bzw. generell nicht funktionieren. Weil es klappt ja beim hinzufügen von neuen Einträgen, nur ändern geht nicht.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
4. Apr 2017
OnBeforeAutoFitColumns verwende ich nicht in dem Projekt, das komische ist es das ja eigentlich alles funktioniert und richtig ist nur beim Ändern eines Eintrags will er einfach nicht die erste Spalte anpassen. Füge ich einen weiteren Eintrag hinzu, wird die Spalte korrekt angepasst.
var
Node: PVirtualNode;
Data: PDataset;
begin
Node := vstTable.FocusedNode;
if Assigned(Node) then...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by TUX_der_Pinguin,
4. Apr 2017
Hallo,
ich arbeite schon lange mit der Komponente TVirtualStringTree aber das Verhalten habe ich bisher noch nicht erlebt. Aber was passiert, ich versuche mit 'AutoFitColumns' die Spalten an den Inhalt bzw. die Überschrift anzupassen aber in einer Situation wird partout die erste Spalte ignoriert und erst die darauf folgenden Spalten korrekt angepasst.
Wie sonst auch führe ich nach dem...