![]() |
Bei einem Grid über die Celle zeichnen.
Servus.
so sieht meine zeichen routine aus
Delphi-Quellcode:
Wenn eine Zelle nur eine Breite von 20 hat ich aber einen Text darstellen möchte der länger ist,
Canvas.FillRect(Rect);
Canvas.TextOut(rect.left,rect.top+1,CellText); wie könnte man sowas umsetzen. mfg |
Re: Bei einem Grid über die Celle zeichnen.
Der Canvas ist der Canvas des Grids und nicht der Zelle
|
Re: Bei einem Grid über die Celle zeichnen.
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 :gruebel: |
Re: Bei einem Grid über die Celle zeichnen.
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.
|
Re: Bei einem Grid über die Celle zeichnen.
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... |
Re: Bei einem Grid über die Celle zeichnen.
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 ;)
|
Re: Bei einem Grid über die Celle zeichnen.
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 ![]() Der Code zeigt die grundsätzliche Herangehensweise an ein solches Problem. |
Re: Bei einem Grid über die Celle zeichnen.
Zitat:
|
Re: Bei einem Grid über die Celle zeichnen.
servus,
habe es mal probier, aber irgend wie funktioniert das nicht.
Delphi-Quellcode:
Vielleicht noch was vergessen....
rect.Right := 300;
DrawText(Canvas.Handle,PChar(CellText),-1,Rect,DT_NOCLIP {DFCS_BUTTONPUSH}); mfg |
Re: Bei einem Grid über die Celle zeichnen.
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:
Angenommen in Zelle A wird der Text ausgegeben.
|-------|
| A | B | |-------| 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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz