Den Vergleich mit der DefaultWdith halte ich nicht für sooo gut. Es würde auch zünden, wenn sich die Breite nicht nochmal geändet hat.
Ich glaube man kommt hier leider nicht um eine Private Variable herum.
Du könntest im PRIVATE-Teil des Forms sowas deklarieren:
fPrevColWidths :array of integer;
Dann noch im OnCreate des Forms:
Delphi-Quellcode:
var
i: Integer;
begin
with DeinGrid do
begin
SetLength(fPrevColWidths, ColCount);
for i := 0 to pred(ColCount) do
fPrevColWidths[i] := ColWidths[i];
end;
end;
Im OnMouseUp Des StringGrids:
Delphi-Quellcode:
var
lCol, lRow: Integer;
begin
with Sender as TStringGrid do
begin
// Über welcher Zelle ist die Maus?
MouseToCell(X, Y, lCol, lRow);
// Nur für die Titelzeile...
if lRow < FixedRows then
//...und nur wenn die Spaltenbreite von der vorherigen abweicht
if ColWidths[lCol] <> fPrevColWidths[lCol] then
begin
try
// Hier kannst du darauf reagieren...
// ...
//das muss auf jeden fall ausgeführt werden
//(sonst weißt du beim nächsten Mal nicht, ob sich die Breite wieder geändert hat)
finally
fPrevColWidths[lCol] := ColWidths[lCol];
end;
end;
end;
end;