![]() |
TAdvStringGrid und Grouping
Ich würde gerne im AdVStringGrid Gruppieren und als InPlaceEditor Comboboxen verwenden. Das stellt mich vor folgendes Problem:
ComboBoxen müssen über das OnGetEditorType Ereignis festgelgt werden. Momentan mache ich das in einem kleinen Testprojekt ganz naiv über
Delphi-Quellcode:
Das führt dazu, daß an 6 Stellen im Grid ComboBoxen auftauchen die alle den gleichen Inhalt haben (aus Faulheit so gewollt). Und ich bin zufrieden.
procedure TForm1.aGridGetEditorType(Sender: TObject; ACol,
ARow: Integer; var AEditor: TEditorType); begin if ((ACol = 2) or (ACol = 5) or (ACol = 8)) and ((ARow = 10) or (ARow = 20)) then begin AEditor := edComboList; if aGrid.Combobox.Items.Count = 0 then begin aGrid.ClearComboString; aGrid.Combobox.Items.Assign(MyItemList); end; end; end; Wenn ich nun aber eine Gruppe reduziere, dann stimmt die Abzählerei ja Zeilenweise nicht mehr. Dann werden die Comboboxen plötzlich in unerwarteten Zellen angezeigt. Wie kann ich das Problem lösen? Meine Idee ist zur Zeit zu ermitteln, welche Gruppe reduziert wurde und wieviele Zeilen dadurch wo weggefallen sind. Das kommt mir aber echt etwas bekloppt vor. Mir wärs ja lieber, die ausgeblendeten rows wären nur versteckt uund noch im Zählbereich....aber es scheint nicht so zu sein. Schönes Wochenende, Sherlock |
Re: TAdvStringGrid und Grouping
Ohne jetzt AdvStringGrid zu kennen würde ich mal sagen, du müstest den Spaltennamen anstelle der Nummer abfragen:
Delphi-Quellcode:
StrIsOneOf() ist eine kleine nützliche Funktion aus der JCL um die If-Bedingung zu vereinfachen.
procedure TForm1.aGridGetEditorType(Sender: TObject; ACol,
ARow: Integer; var AEditor: TEditorType); var colname:string; begin // wie du genau an den Spaltennamen herankommst liegt bei Dir // so könnte es aussehen colname := TAdvStringGrid(Sender).Columns[ACol].Caption; // if ((ACol = 2) or (ACol = 5) or (ACol = 8)) and ((ARow = 10) or (ARow = 20)) then if StrIsOneOf(colname, ['Bruttopreis', 'Nettopreis', 'Artikelnr']) and ((ARow = 10) or (ARow = 20)) then begin |
Re: TAdvStringGrid und Grouping
Hehehe, das wär ja was, wenn denn beim Gruppieren die Spalten ausgeblendet werden würden...es werden aber Reihen ausgebelndet. Andererseits bringst Du mich dann auf die Idee nach der Beschriftung der ersten Zelle einer Reihe zu schauen, davon könnte ich es abhängig machen.
Vielen Dank für die Inspiration! Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:02 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