Jak ustawić szerokość StringGrid

Jak ustawić szerokość StringGrid
H4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Hi. Od roku zacząłem uczyć się Free Pascal'a. Korzystam z open-source cross platform IDE Lazarus.
To jest mój pierwszy większy program napisany w free pascal'u korzystający z graficznego GUI.
Poszczególna szerokość kolumn jest ustalana na podstawie długości najdłuższego string'a w kolumnie, napisałem sobie do tego odpowiednią procedurę, ale nie wiem jak mógłbym dynamicznie ustawiać całą szerokość StringGrid, żeby nie było pustej przestrzeni. Może zrzut ekranu bardziej naświetli co mam na myśli. Dziękuję za odpowiedzi i sugestie.

MyHomeLibrary.png

PD
  • Rejestracja: dni
  • Ostatnio: dni
2

Szerokość StringGrid to suma szerokości wszystkich jego kolumn + szerokość ScrollBar jeżeli jest widoczny:

Kopiuj
uses
  LCLIntf, LCLType;

procedure TForm1.FormCreate(Sender: TObject);
var
  i, w: Integer;
  style: longint;
begin
  w := 0;
  for i := 0 to StringGrid1.ColCount - 1 do
    Inc(w, StringGrid1.CellRect(i, 0).Width + 1);
  StringGrid1.Width := w;
  //sprawdzamy czy jest widoczny pionowy scrollbar, i jeżeli tak to poszerzamy stringgrid o szerokość scrollbar
  style := GetWindowLong(StringGrid1.Handle, GWL_STYLE);
  if ((style and WS_VSCROLL) <> 0) then
    StringGrid1.Width := StringGrid1.Width + GetSystemMetrics(SM_CYHSCROLL);
end;

Ale myślę, że lepszym rozwiązaniem jest dostosowanie szerokości kolumn do szerokości StringGrid.

H4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Ale myślę, że lepszym rozwiązaniem jest dostosowanie szerokości kolumn do szerokości StringGrid

Tego właśnie chcę uniknąć, chyba że da się dzielić napis w danej komórce GridString na kilka wierszy, żeby tytuł był cały widoczny.
W tej chwili mam tak, jak na screen'ach, ale brzydko to wygląda, przy wynikach wyszukiwania.
MyHomeLibraryV1.pngMyHomeLibraryV2.png

PD
  • Rejestracja: dni
  • Ostatnio: dni
1
h4wierz napisał(a):

... chyba że da się dzielić napis w danej komórce GridString na kilka wierszy ...

Tutaj masz przykład wraz z ustawianiem automatycznej wysokości wiersza: https://forum.lazarus.freepascal.org/index.php/topic,35488.msg234781.html#msg234781

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.