AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls VST Spalten automatisch an Komponentenbreite anpassen / best practice

VST Spalten automatisch an Komponentenbreite anpassen / best practice

Ein Thema von Bünni · begonnen am 15. Mär 2019 · letzter Beitrag vom 15. Mär 2019
Antwort Antwort
Bünni

Registriert seit: 4. Mär 2019
67 Beiträge
 
#1

VST Spalten automatisch an Komponentenbreite anpassen / best practice

  Alt 15. Mär 2019, 00:18
Hier geht es jetzt nicht um ein konkretes, für mich unlösbares Problem.
Viel eher geht es darum, was hier die beste Umsetzung ist.

Stellt euch ein VST mit mehr als 2 Spalten vor.
An gewissen Stellen im Programm sollen alle bis auf die erste Spalte [0] ausgeblendet werden.
Wieder an anderen Stellen sollen die Spalten wieder so angezeigt werden wie sie zuvor waren.

Was ist hier die beste Vorgehensweise?

Meine Aktuelle Umsetzung speichert die Breite der ersten Spalte und zieht diese danach lang
Delphi-Quellcode:
 // Alle anderen Spalten ausblenden
 AlteBreite := VST.Header.Columns[0].Width;
 VST.Header.Columns[0].Width := VST.ClientWidth;
Alten Zustand wiederherstellen
Delphi-Quellcode:
 // Alle anderen Spalten wieder einblenden
 VST.Header.Columns[0].Width := AlteBreite;
Gibt es hier eine bessere Lösung?
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.179 Beiträge
 
Delphi XE5 Professional
 
#2

AW: VST Spalten automatisch an Komponentenbreite anpassen / best practice

  Alt 15. Mär 2019, 07:20
"Stellen im Progamm" leuchtet mir nicht so ein, dass müsstest du mir mehr erklären.

Ich schalte Spalten auf Visible=false, wenn ich die nicht sehen will.

Das mit den Breite finde ich ungewöhnlich.

Geändert von generic (15. Mär 2019 um 07:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
159 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: VST Spalten automatisch an Komponentenbreite anpassen / best practice

  Alt 15. Mär 2019, 08:06
Ich kenne mich mit dem VST's kenn ich mich nicht aus, aber für ein Stringgrid passe ich die breite "autom." an die benötigte Breite an (das Speichern der vorherigen Breite wäre dann überflüssig), müsste hier ja ähnlich möglich sein:

Delphi-Quellcode:
GridColWidth(Stringgrid, 1, 0);

//Stringgrid Spaltenbreite anpassen
procedure TTools.GridColWidth(grd:TStringGrid; min,max:word);
var
  Zeile, Spalte, tmp, len: word;
begin
  with grd do begin // für alle Spalten
    for Spalte:=0 to (ColCount -1) do begin
      len:=0;
      for Zeile:=0 to (RowCount-1) do begin // für alle Zeilen
        tmp:=Canvas.TextWidth(Cells[Spalte,Zeile]);
        if tmp>len then len:=tmp // neue max Breite
      end; // for Zeile
      if max>0 then if len>max then len:=max; // Maximalbreite
      if len<min then len:=min; // Minimalbreite
      ColWidths[Spalte]:=len+GridLineWidth+10 // Spalte verbreitern
    end // for Spalte
  end // with
end;

Edit: Wenn man sie natürlich einfach einblenden/ausblenden kann (wie generic schrieb) ist das natürlich in diesem Fall wesentlich einfacher.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
Bünni

Registriert seit: 4. Mär 2019
67 Beiträge
 
#4

AW: VST Spalten automatisch an Komponentenbreite anpassen / best practice

  Alt 15. Mär 2019, 12:30
Spalten ausblenden ist selbstverständlich.
Aber es findet keine automatische Anpassung an die Größe der Komponente statt.

Diese Nacht habe ich dann noch herausgefunden, dass man die letzte sichtbare Spalte so einstellen kann, dass sie die ganze restliche Breite der Komponente einnimmt.
VST.Header.AutoSizeIndex := VST.Header.Columns.GetLastVisibleColumn;

Blendet man vorher ausgeblendete Spalten wieder ein, stimmen die Größen logischerweise nicht.

Deswegen speichere ich Werte beim Ausblenden zwischen, um sie beim Einblenden aller Spalten wieder zurückzusetzen.
  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:

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