AGB  ·  Datenschutz  ·  Impressum  







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

StringGrid -> Zwei Spalten gruppieren

Ein Thema von HolgerCW · begonnen am 26. Okt 2007 · letzter Beitrag vom 5. Nov 2007
Antwort Antwort
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

StringGrid -> Zwei Spalten gruppieren

  Alt 26. Okt 2007, 10:37
Hallo zusammen,

wie bekomme ich es hin, das bei einem Stringgrid welches 3 Spalten und 2 Zeilen hat,

das die Spalte 2 + 3 in Zeile 1 als ganzes gezeichnet werden und auch ein Text über beide Spalten geschrieben wird ?

Die Spalten haben eine breite von 25.

Habe mal so angefangen:

Delphi-Quellcode:
If ACol = 1 then
begin
 Rect.Right := Rect.Right + (2 * 25);
 Canvas.FillRect(Rect);
 Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
end;

If (ACol > 2) then
begin
 Rect.Right := Rect.Right - 25;
 Canvas.FillRect(Rect);
end;
Das Ergebnis was dabei raus kommt sieht aber nicht sauber aus. Man kann noch die Trennlinie zwischen Spalte 2 und 3 sehen, un der Text wird auch nicht über Spalte 2 hinaus geschrieben.

Gruss

Holger
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#2

Re: StringGrid -> Zwei Spalten gruppieren

  Alt 26. Okt 2007, 11:43
Hallo Holger,
liegt es vielleicht daran, dass du ACol und ARow verwechselst?
Gruß Ralph
Ralph
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: StringGrid -> Zwei Spalten gruppieren

  Alt 26. Okt 2007, 12:05
Wieso ?

ACol = Spalte

Möchte über Spalte 2 - 3 eine grosse Überschrift in Zeile 1 schreiben.

Die Daten kommen dann in Ziele 2 - ...

Deshalb möchte ich in Zeile 1 die Spalten 2 + 3 koppeln

Gruss

Holger
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#4

Re: StringGrid -> Zwei Spalten gruppieren

  Alt 26. Okt 2007, 12:08
Hm, aber wozu die Prüfung auf ACol>2 - wenn das Grid 3 Spalten hat (0..2) dann gibt es keine ACol>2...
Ralph
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#5

Re: StringGrid -> Zwei Spalten gruppieren

  Alt 26. Okt 2007, 12:38
Da hast Du Recht.

sollte nur ein Beispiel sein. Da müsste ACol > 1 stehen.

Und weisst Du eine Lösung ?

Gruss

Holger
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#6

Re: StringGrid -> Zwei Spalten gruppieren

  Alt 26. Okt 2007, 12:51
Denke schon, dass wir das hinbekommen. Nur nicht jetzt: Für mich beginnt gleich das Woooochenende Wenn sich in der Zwischenzeit keine Lösung findet, dann melde ich mich heute am späten Nachmittag noch mal mit einem konkreten Lösungvorschlag.
Gruß
Ralph
Ralph
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#7

Re: StringGrid -> Zwei Spalten gruppieren

  Alt 26. Okt 2007, 13:46
Vielen dank ...

... ich warte dann mal ...

Gruss

Holger
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#8

Re: StringGrid -> Zwei Spalten gruppieren

  Alt 26. Okt 2007, 15:25
Hallo Holger,
folgender beispielhafter Code sollte dir weiterhelfen ...

Delphi-Quellcode:
procedure TfoTest9.sgDrawCell(Sender:TObject;ACol,ARow:Integer;Rect:TRect;State:TGridDrawState);
begin
  with (Sender as TStringGrid) do
    with (Sender as TStringGrid).Canvas do

      if (ACol=3) and
         (ARow=2) then begin Rect.Left:=Rect.Left-ColWidths[ACol-1]-GridLineWidth;
                            
                             Font.Color:=clYellow;
                             FillRect(Rect);

                             TextOut(Rect.Left+2,Rect.Top+2,Cells[ACol-1,ARow]);
                             end;
end;
Das DefaultDrawing bleibt für das Grid aktiviert, daher können wir uns in unserem Beispiel darauf beschränken nur die Zellen selber zu "malen" die abweichend vom Standard ausgegeben werden sollen. In meinem Beispiel sollen NUR die Zellen 2 und 3 in der Zeile 2 verändert werden. Der Trick (?) besteht eigentlich nur darin, dass die Änderung erst erfolgt, wenn die Zelle 3 an der Reihe ist: Dann setzen wir Rect.Left auf den Anfang der Zelle 2 - anstelle absoluter Wertangabe für die Spaltenbreite sollte man besser diesen Wert beim Grid "erfragen"; außerdem darf die Trennlinie zwischen den Spalten nicht vergessen werden (müsste eigentlich anhängig von goVertLine=true/false subtrahiert werden)
Was in diesem Beispiel nicht berücksichtigt ist, dass du natürlich auch in dem Fall, dass die Zellen mit "Spezialbehandlung" den Focus bekommen, selber für das Zeichnen verantwortlich bist.

So, ich denke damit müsstest du weiterkommen, noch viel Spaß dabei ...
Gruß Ralph
Ralph
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#9

Re: StringGrid -> Zwei Spalten gruppieren

  Alt 5. Nov 2007, 10:11
Vielen dank,

habe es nun getestet und es klappt einwandfrei.

Gruss

Holger
  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 18:12 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