AGB  ·  Datenschutz  ·  Impressum  







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

Bei einem Grid über die Celle zeichnen.

Ein Thema von Jackie1983 · begonnen am 23. Jun 2009 · letzter Beitrag vom 24. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

Bei einem Grid über die Celle zeichnen.

  Alt 23. Jun 2009, 17:27
Servus.

so sieht meine zeichen routine aus
Delphi-Quellcode:
    Canvas.FillRect(Rect);
    Canvas.TextOut(rect.left,rect.top+1,CellText);
Wenn eine Zelle nur eine Breite von 20 hat ich aber einen Text darstellen möchte der länger ist,
wie könnte man sowas umsetzen.

mfg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Bei einem Grid über die Celle zeichnen.

  Alt 23. Jun 2009, 17:29
Der Canvas ist der Canvas des Grids und nicht der Zelle
Markus Kinzler
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#3

Re: Bei einem Grid über die Celle zeichnen.

  Alt 23. Jun 2009, 17:34
Hilft mir jetzt sehr weiter, weis nicht was du mir damit sagen willst.
Aber die Zelle ist doch ein Teil des Grids, also auch vom Canvas des Grids
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Bei einem Grid über die Celle zeichnen.

  Alt 23. Jun 2009, 17:39
Du willst die Zelle breiter beschreiben wie Sie ist, hast den Canvas des Grid und damit alle Freiheiten das zu tun. Bist ja nicht auf Rect beschränkt, das ist nur eine Hilfe den Ausschnitt der Zelle im Grid zu finden, wenn Du Dich daran halten willst.
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#5

Re: Bei einem Grid über die Celle zeichnen.

  Alt 23. Jun 2009, 17:52
Aber wenn ich den Text so ausgeben Canvas.TextOut(rect.left,rect.top+1,CellText);
ist der Text nur so breit wie die Zelle und der rest wird abgeschnitten...
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Bei einem Grid über die Celle zeichnen.

  Alt 23. Jun 2009, 18:16
Du hast recht, scheinbar ist ClipRect gesetzt (gerade auch mal schnell getestet). Ok, dann lasse ich Dich für den Moment mit der Frage stehen
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#7

Re: Bei einem Grid über die Celle zeichnen.

  Alt 23. Jun 2009, 19:49
Hallo,

Du musst für jede der der Zellen die Du für den Text benötigst den gleichen/gesamten Bereich zeichnen und den kompletten Text ausgeben.

Dort hab ich mal einen Code gepostet der über den Bereich von zwei Zellen zeichnet Link
Der Code zeigt die grundsätzliche Herangehensweise an ein solches Problem.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#8

Re: Bei einem Grid über die Celle zeichnen.

  Alt 24. Jun 2009, 12:47
Zitat von Lannes:
Hallo,

Du musst für jede der der Zellen die Du für den Text benötigst den gleichen/gesamten Bereich zeichnen und den kompletten Text ausgeben.

Dort hab ich mal einen Code gepostet der über den Bereich von zwei Zellen zeichnet Link
Der Code zeigt die grundsätzliche Herangehensweise an ein solches Problem.
thx, werde ich mir mal anschauen.
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#9

Re: Bei einem Grid über die Celle zeichnen.

  Alt 24. Jun 2009, 14:09
servus,

habe es mal probier, aber irgend wie funktioniert das nicht.
Delphi-Quellcode:
      rect.Right := 300;
      DrawText(Canvas.Handle,PChar(CellText),-1,Rect,DT_NOCLIP {DFCS_BUTTONPUSH});
Vielleicht noch was vergessen....

mfg
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#10

Re: Bei einem Grid über die Celle zeichnen.

  Alt 24. Jun 2009, 15:42
Hallo,

wie äußert sich das "nicht funktionieren"

Wenn das Dein kompletter Code ist, kann es nicht funktionieren.


Du musst OnDrawCell aus der Sicht der Zelle verstehen. OnDrawCell wird für jede Zelle ausgelöst die neu gezeichnet werden muss, z.B. durch ändern des Zellinhalts, nach temporärem Verdecken der Zelle, etc.

Beispieltabellenbereich:
Code:
|-------|
| A | B |
|-------|
Angenommen in Zelle A wird der Text ausgegeben.
DT_NOCLIP hebt den Ausgabebereich von Rect auf und der Text erstreckt sich bis in Zelle B,
aber weil auch Zelle B neu gezeichnet wird ist der Textteil wieder übermalt.

Ich kann Dir enpfehlen in einem solchen Fall(Ausgabe von Text über mehrere zellen) DefaultDrawing auf False zu setzen um das komplete Zeichnen des Grids selbst zu übernehmen.

Also wenn Zelle A gezeichnet wird den Text ausgeben und wenn Zelle B gezeichnet wird den Text aus Zelle A erneut ausgeben, beginnend in Zelle A.

Psoudocode:
Code:
wenn Zelle = A dann
  Zeichne in Zelle A ab linken Rand der Zelle A
  sonst
    wenn Zelle = B dann
      Zeichne in Zelle A ab linken Rand der Zelle B - Breite der Zelle A
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:49 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