Hallo Delphi-Laie,
ruhig Blut, das wird schon....
Du möchtest also nicht nur die Form-Größe minimal setzen, sondern auch die einzelnen Spaltenbreiten so minimieren, daß genau der Zelleninhalt gezeigt wird.
Hier mein Vorschlag:
Delphi-Quellcode:
procedure MinimizeColWidths(aStringGrid: TStringGrid);
var
x, y: integer;
onewidth, biggestwidth: integer;
begin
with aStringGrid do
for x := 0 to ColCount-1 do
begin
biggestwidth := 0;
for y := 0 to RowCount-1 do
begin
onewidth := Canvas.TextWidth(Cells[x, y]);
if (onewidth > biggestwidth) then
biggestwidth := onewidth;
end;
ColWidths[x] := biggestwidth + 6;
end;
end; // MinimizeColWidths
Und dann verwende bitte um Gottes Willen Form.AutoSize := true und nicht diese Krücke mit den Scrollbars. Mein Code oben z.B. macht, was Du willst.
Zu Deinen weiteren Fragen:
1. Form und StringGrid sind Instanzen von Klassen, sprich pointer. Hier brauchst Du nur dann mit var-Parametern arbeiten, wenn Du den Verweis auf die Instanz an sich in der Prozedur ändern willst. Du brauchst kein var, wenn Du nur Bestandteile(Properties) der Instanz ändern willst. Es stimmt, das war unter Standard-Pascal logischer.
2. die Ursache dafür, daß Form.Width nicht weiter minimiert werden kann, liegt vermutlich an Constraints, die die Minimalgröße beschränken. Dein Programm würde dann auch stand-alone in einer Endlos-Schleife hängenbleiben. Mit dem Debugger hat das nichts zu tun.
Und Du könntest Dir auch überlegen, wie Dein Code ordentlicher eingerückt werden könnte...
Grüße,
blauweiss