![]() |
Re: StringGrid: Auf Ändern der Spalten-/Zeilenanzahl reagier
Grundsatz der OOP : immer möglichst viel vom Vorgänger erben. Die Custom-Dinger sind dafür gedacht einem Komponentenentwickler zumindest mal die Namen der Methoden zu ersparen. Er hat ein fast leeres Grundgerüst und muss dann alles selber machen. Beim Stringgrid siehts z.B. so aus :
Zitat:
Das hier ist aber noch viel schlimmer. FColCount ist private deklariert. Es besteht also keine Chance, von dem abgeleiteten Stringgrid aus da dranzukommen. Zumindest nicht ohne Eingriffe im VCL-Quelltext. Vielleicht sieht irgendeiner in den 6000 Zeilen noch irgendeine Möglichkeit. Ich jedenfalls nicht. Das geht wohl nur über Umwege. |
Re: StringGrid: Auf Ändern der Spalten-/Zeilenanzahl reagier
Zitat:
Zitat:
Hat vielleicht jemand noch Ideen? |
Re: StringGrid: Auf Ändern der Spalten-/Zeilenanzahl reagier
Ich sehe nur noch Einführung einer HilfsRow / HilfsCol und da die Werte direkt an ColCount/RowCount übergeben. Oder den Einsatz der Objektablage. D.h. Vererbung auf Form-Ebene. In der Urform müsste dann nur im FormCreate RowCount := ColCount gemacht werden. Und dann eben von dieser Form ableiten, anstatt mit neu -> Form über neu -> weitere -> MeineForm. Das hätte noch den positiven Nebeneffekt, dass man so auch alle Grundeinstellungen/Ereignisse schon in der Urform abhandeln könnte. Die letzte Möglichkeit : auf Lannes warten. Der ist hier für Stringgrids zuständig. :shock: Hexen kann der AFAIK allerdings auch nicht. :mrgreen:
|
Re: StringGrid: Auf Ändern der Spalten-/Zeilenanzahl reagier
Zitat:
|
Re: StringGrid: Auf Ändern der Spalten-/Zeilenanzahl reagier
Hallo Robert,
Sichtbarkeiten kannst du nicht verringern, nur erweitern. Über eine Redimensionierung deines Grids informiert dich die dafür vorgesehene Methode SizeChanged():
Delphi-Quellcode:
Wenn du selbst die Dimensionen des Grids änderst, hast du doch die volle Kontrolle - auch zur Laufzeit. Worüber also zerbrichst du dir denn da den Kopf?
unit MoreGrids;
interface uses SysUtils, Classes, Controls, Grids; type TStringGridEx = class(TStringGrid) protected procedure SizeChanged(OldColCount, OldRowCount: Longint); override; end; procedure Register; implementation procedure TStringGridEx.SizeChanged(OldColCount, OldRowCount: Longint); begin inherited SizeChanged(OldColCount, OldRowCount); // ... end; procedure Register; begin RegisterComponents('marabu', [TStringGridEx]); end; end. Grüße vom marabu |
Re: StringGrid: Auf Ändern der Spalten-/Zeilenanzahl reagier
Perfekt, SizeChanged ist genau das richtige! Danke :cheers:
Delphi-Quellcode:
inherited SizeChanged(OldColCount, OldRowCount);
if OldColCount <> ColCount then RowCount := ColCount else if OldRowCount <> RowCount then ColCount := RowCount; Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 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 by Thomas Breitkreuz