AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TAdvStringGrid und Grouping

Ein Thema von Sherlock · begonnen am 28. Aug 2009 · letzter Beitrag vom 31. Aug 2009
Antwort Antwort
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#1

TAdvStringGrid und Grouping

  Alt 28. Aug 2009, 16:25
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:
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;
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.
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
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

Re: TAdvStringGrid und Grouping

  Alt 29. Aug 2009, 03:12
Ohne jetzt AdvStringGrid zu kennen würde ich mal sagen, du müstest den Spaltennamen anstelle der Nummer abfragen:
Delphi-Quellcode:
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
StrIsOneOf() ist eine kleine nützliche Funktion aus der JCL um die If-Bedingung zu vereinfachen.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#3

Re: TAdvStringGrid und Grouping

  Alt 31. Aug 2009, 08:18
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
Oliver
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 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