Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
3. Jun 2008
Wie gesagt, das war nur ein Beispiel, ich würde diese Funktion nicht nutzen, sondern nur das Prinzip beim Befüllen der einzelnen Spalten anwenden. Wenn es aber unbedingt diese Funktion sein soll, kannst Du als Canvas den des StringGrids und als sl StringGrid.Cols angeben.
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
3. Jun 2008
Du kannst Result auch als Variable betrachten. Außerdem war das ja nur ein Beispiel.
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
3. Jun 2008
Im Prinzip so (aus dem Kopf dahergetippt):function MaxBreite(const cv: TCanvas; const sl: TStrings): integer;
var i, Current: integer;
begin
Result := 0;
for i := 0 to Pred(sl.Count) do
begin
Current := cv.TextWidth(sl);
if Current > Result then
Result := Current;
end;
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
3. Jun 2008
Wie marabu bereits sagte: leg Dir besser eine Variable an, belege sie mit 0 vor und vergleiche innerhalb der Schleife (-> Ermittlung des Maximums). Zum Schluss setzt Du dann die Breite entsprechend des Werts dieser Variablen.
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
2. Jun 2008
Mit Breite war eigentlich eine Variable zur Ermittlung der aktuellen maximalen Breite gemeint, aber das ging aus meiner Beschreibung nicht eindeutig hervor, muss ich zu meiner Schande zugeben.
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
2. Jun 2008
Mal für eine Spalte:
- Breite auf 0 setzen
- beim zeilenweisen Einfügen Canvas.TextWidth mit aktueller Breite vergleichen
- wenn größer, Breite neu setzen
Das Ganze kannst Du auch in einem Array für alle Spalten machen, ist ja immer dasselbe Prinzip.