AGB  ·  Datenschutz  ·  Impressum  







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

StringGrid: Text über mehrer Spalten

Ein Thema von fafnir · begonnen am 28. Dez 2004 · letzter Beitrag vom 1. Jan 2005
Antwort Antwort
fafnir

Registriert seit: 23. Okt 2004
Ort: Dortmund
18 Beiträge
 
Delphi 7 Personal
 
#1

StringGrid: Text über mehrer Spalten

  Alt 28. Dez 2004, 12:30
Hallo ,

da ich schon mehrer Foren nach Lösungen durchsucht habe, seit ihr mein letzte Hoffnung .
Ich möchte in einem StringGrid Spaltenüberschriften über mehrer Spalten hinweg schreiben, so dass es ähnlich wie in Excel aussieht, wenn man Text über mehere Zellen hinweg verbindet.

Im OnDrawCell-Event habe ich versucht, mit Canvas.FillRect einen entsprechend großen horizontalen Bereich mit Farbe zu füllen und danach mit DrawText den Text dort auszugeben. Leider sieht es so aus, als würden die nachfolgenden Spalten meinen Text wieder überschreiben.

Was mache ich falsch ? Jeder Tip wird dankbar angenommen!

fafnir
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#2

Re: StringGrid: Text über mehrer Spalten

  Alt 31. Dez 2004, 22:14
wie wär es denn wenn du deinen bereits erstellten code postest?


können den dann ja mal durchgehen.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: StringGrid: Text über mehrer Spalten

  Alt 31. Dez 2004, 22:28
Verwende if ARow <= FixedRows im DrawText, damit nur die Überschriften betroffen sind.
Gruß
Hansa
  Mit Zitat antworten Zitat
fafnir

Registriert seit: 23. Okt 2004
Ort: Dortmund
18 Beiträge
 
Delphi 7 Personal
 
#4

Re: StringGrid: Text über mehrer Spalten

  Alt 1. Jan 2005, 11:04
Hallo und ein frohes neues Jahr!
Mein Problem hat sich durch den folgenden Link erledigt:
http://www.delphi-groups.de/YaBBSe/i...=22383;start=0
Der Autor hat das Problem mit verbundenen Zellen sehr gut gelöst
Wer den kompletten Quelltext anschaut, sollte die folgende Änderung beachten:
Delphi-Quellcode:
function CellRectEx(Stringgrid:tstringgrid;Acol,Arow:integer):trect;
var i,x,y:integer;
    arect,brect:Trect;
begin
  //Zellenposition mit Cellrect ermitteln
  brect:=Stringgrid.CellRect(acol,arow);
  if EqualRect(brect,classes.rect(0,0,0,0))=false then
  begin
    if (StringGrid.ColWidths[aCol] > (bRect.Right-bRect.Left)) //sichtbarer Teil der Zelle
      then bRect.Right := bRect.Left+StringGrid.ColWidths[aCol];//kleiner als Zellenbreite??
    result:=brect;
  end
else.....
Die kommentierte If-Anweisung ist eine Ergänzug von mir, damit auch die eventuell nur teilweise sichtbare letzte rechte Spalte beim Scrollen korrekt gezeichnet wird.

Viel Spass beim Ausprobieren
fafnir
  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 11:54 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