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.
Szerokość StringGrid
to suma szerokości wszystkich jego kolumn + szerokość ScrollBar
jeżeli jest widoczny:
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
.
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.
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