Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StringGrid onColSizeChange?=! schön wärs :) (https://www.delphipraxis.net/21369-stringgrid-oncolsizechange-%3D-schoen-waers.html)

tuxic 1. Mai 2004 19:42


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???

mschaefer 1. Mai 2004 21:20

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

kiar 1. Mai 2004 21:33

Re: StringGrid onColSizeChange?=! schön wärs :)
 
hallo martin,
Delphi-Quellcode:
with grd1 do begin
         if colwidths[1] <> defaultcolwidth then
            showmessage('änderung');
            colwidths[1]:=defaultcolwidth;
       end;
könnte aber gehen :mrgreen:

raik

mschaefer 1. Mai 2004 21:53

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

tuxic 1. Mai 2004 22:01

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

Robert_G 1. Mai 2004 22:52

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:
  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;

kiar 1. Mai 2004 23:59

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

tuxic 2. Mai 2004 09:11

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 13:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz