![]() |
StringGrid onColSizeChange?=! schön wärs :)
Hi,
ich würde gerne bei einer Veränderung der Breite einer Spalte etwas ausführen... gibt es dafür ein vordefiniertes Ereignis??? |
Re: StringGrid onColSizeChange?=! schön wärs :)
Moin, moin,
sorry definitv nein. Dann müßte es ein Ereignis in den Columns eines Grids geben aus dem dann das StringGrid zusammengebaut ist. Praktisch müßte da eine neue Komponente her und das ist sicherlich eine die nicht einfach vom StringGrid abgeleitet ist. Aber Du könntest versuchen auf ein OnClick Erreignis zu reagieren, die Mouseposition abfragen und wenn diese im GridHeaderbereich ist Deine Spaltenbreiten nachsehen. Ok ist ein durch die Schulter über Bauch in die Brust Workaround, aber vielleicht kennt ja jemnad tatsächlich eine Komponente die sowas eingebaut hat... Grüße // Martin |
Re: StringGrid onColSizeChange?=! schön wärs :)
hallo martin,
Delphi-Quellcode:
könnte aber gehen :mrgreen:
with grd1 do begin
if colwidths[1] <> defaultcolwidth then showmessage('änderung'); colwidths[1]:=defaultcolwidth; end; raik |
Re: StringGrid onColSizeChange?=! schön wärs :)
Hi kiar,
kein Widerspruch - klingt gut und das dann ins MouseUp-Ereignis, dann kommt das der Idee schon ziemlich nahe. Hm sieht tatsächlich viel kürzer aus als ich mir das gedacht habe! :thuimb: Grüße // Martin |
Re: StringGrid onColSizeChange?=! schön wärs :)
tjo, also da es da kein, öhm... nennen wir es mal explizieteren :) weg gibt, werd ich das mal so tun...
Danke euch |
Re: StringGrid onColSizeChange?=! schön wärs :)
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:
Delphi-Quellcode:
Dann noch im OnCreate des Forms:
fPrevColWidths :array of integer;
Delphi-Quellcode:
Im OnMouseUp Des StringGrids:
var
i: Integer; begin with DeinGrid do begin SetLength(fPrevColWidths, ColCount); for i := 0 to pred(ColCount) do fPrevColWidths[i] := ColWidths[i]; end; end;
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; |
Re: StringGrid onColSizeChange?=! schön wärs :)
@robert, wollte nur zeigen, das man nicht unbedingt ne kompo ableiten muss.
deine variante ist sicherlich eleganter und trägt auch dem einwand, das es dann immer feuern würde rechnung. :thuimb: raik |
Re: StringGrid onColSizeChange?=! schön wärs :)
naja, ich hab ja eh schon eine globale Variable in der die Breiten stehen. Es ging mir jetzt darum, rauszukriegen, wann sich die Breiten ändern, um sie beim beenden in eine INI zu schreiben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz