AGB  ·  Datenschutz  ·  Impressum  







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

Spalten zusammenfassen im Drawgrid

Ein Thema von hanspeter · begonnen am 20. Mai 2010 · letzter Beitrag vom 25. Mai 2010
Antwort Antwort
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

Spalten zusammenfassen im Drawgrid

  Alt 20. Mai 2010, 16:16
Hallo,

ich zeichne in einem Drawgrid selber, bekomme das was ich will aber nicht so richtig hin.
Vielleicht hat wer einen Tip.

Ein Drawgrid hat eine fixe Column.
Die danach folgenden Columns stellen jeweils einen Tag im Jahr dar und können gescrollt werden.

Die erste Row soll als Titelspalte, unabhängig vom scrollen jeweils die Jahreszahl enthalten.

Folgenden Code verwende ich:

Delphi-Quellcode:
 procedure PaintJahr;
  begin
    n := Grd.LeftCol + Grd.VisibleColCount; // n enthält die am weitesten rechts stehende Spalte
    if (acol = n) or (acol = Grd.LeftCol) then // nur in erster und letzter Spalte zeichnen
    begin
      Grd.Canvas.Font.Size := FontHeight;
      r := Grd.CellRect(Grd.LeftCol, 0); // erste sichtbare Spalte
      Rect := Grd.CellRect(n,0); // letzte sichtbare Spalte
      Rect.Left := r.Left;
      Grd.Canvas.FillRect(Rect);
      w := YearOf(d);
      Grd.Canvas.TextOut(rect.Left + 2, Rect.Top + 2, inttostr(w));
    end;
  end;
Paintjahr ist eine Routine in onDrawCell

procedure TGantCtrl.GrdDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
State: TGridDrawState);

Beim nach rechts scrollen verschwindet der Texteintrag und beim nach links scrollen kommt diese mehrfach.
Hat wer einen Tip?

Mit Gruß
Peter
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Spalten zusammenfassen im Drawgrid

  Alt 25. Mai 2010, 10:52
Ich möchte das Thema noch mal hochbringen.

Mit nachfolgender Funktion möchte ich im Draw-Grid Zeilen verbinden.
In der jeweils am weitesten links stehenden Zelle soll der Titel stehen.

Ich mache das mit folgenden Code:

Delphi-Quellcode:
procedure TForm2.PaintTitle;
var
  r1 : TRect;
  r2 : TRect;
begin
  r1 := DrawGrid1.CellRect(DrawGrid1.LeftCol ,1);
  r2 := DrawGrid1.CellRect(DrawGrid1.LeftCol + DrawGrid1.VisibleColCount,1);
  r2.Left := r1.Left;
  DrawGrid1.Canvas.Brush.Color := cllime;
  DrawGrid1.Canvas.FillRect(r2);
  Drawgrid1.Canvas.TextOut(r1.Left+2,r1.Top+2,'Hallo');
end;
Aus dem Ereignis ondrawcell des TDrawgrid verhält sich der Code beim Scrollen völlig unlogisch.
Wie es aussieht zeichnet das Drawgrid erst und verschiebt dann den Bereich beim scrollen.
Starte ich jedoch einen Timer und rufe die Procedure außerhalb von ondrawcell auf,
dann funktioniert es wie gewünscht.
Hat wer einen Tip wie ich das hinbekomme oder kann mir eine andere Componente empfehlen,
mit der das geht. Sämtliche Einträge im Grid sind farbige Flächen (Gant-Diagramm)

Mit Gruß
Peter
  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:48 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