Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Rowheight Eigenschaft ändert sich ungewollt im StringGrid (https://www.delphipraxis.net/44990-rowheight-eigenschaft-aendert-sich-ungewollt-im-stringgrid.html)

Boncuk79 27. Apr 2005 22:56


Rowheight Eigenschaft ändert sich ungewollt im StringGrid
 
ich hoffe Ihr könnt mir helfen....

ich erstelle ein rechnungsprogramm mit Tabellen
und es ist so wenn ich tabellen einfüge im unsichtbaren bereich des formular kommen die rowheigts durcheinander und die zeilen verschwinden

bitte um hilfe :wall:

Danke im Voraus

[edit=MrSpock]PN geschrieben: Bitte Titel ändern. Mfg, MrSpock[/edit]
[edit=MrSpock]Titel nach Rückantwort von Boncuk geändert. Mfg, MrSpock[/edit]

Hansa 27. Apr 2005 23:02

Re: Bitte um Hilfe...... (StringGrid)
 
Was heißt Stringgrid als Tabelle ? Ich selber habe das Stringrid auseinandergenommen bis zum geht nicht mehr. Fast schon atomar zerlegt. :mrgreen: Was willst du da machen ?

Boncuk79 27. Apr 2005 23:24

Re: Bitte um Hilfe...... (StringGrid)
 
mit gridheight meine ich die gesammt höhe des stringgrids und rect versuche ich
beim ondrawcell zubekommen.

die Texte sind manchmal zulang deswegen benötigt man zeilenumbruch.

beim zeilenumbruch muss ich mit rowheights spielen damit der ganze text sichtbar ist.
wenn es im unsichtbarer bereich geschehen soll passiert folgendes:

die rowheigts kommen durcheinander
und rect.top, rect.bottom erscheint 0

Hansa 27. Apr 2005 23:36

Re: Bitte um Hilfe...... (StringGrid)
 
Habe meine Glaskugel mal befragt. Die meint jetzt, daß der Zeilenumbruch wohl kommen muß, bei zu langen Bezeichnungen für die Zellen, da sonst horizontale Scrollbalken auftauchen, die irritieren. Allerdings meint sie auch, es wäre zu überlegen, diese überlangen Bezeichnungen in Zusatzzeile zu schieben. Offen bleibt allerdings immer noch, wo die anzuzeigenden Daten überhaupt herkommen. 8)

Keldorn 28. Apr 2005 15:41

Re: Bitte um Hilfe...... (StringGrid)
 
warum muß man das in 3 Foren diskuttieren (DP,DF,DDG) :roll: ?

cellrect funktioniert nur für sichtbare Zellen, falls du es verwendest. Wenn du Zellen mit Zeilenumbruch verwendest, dann nimm beim Zeichnen Drawtext, Beispiele dazu sind genug im Forum, auch in der OH nach den Paramtern und notwenidgen DT_...Kosntanten schauen. Drawtext rufst du 2xauf, einmal mit DT_Calcrect um die Größe zu ermitteln (das rect übergeben, es wird in der Höhe angepaßt). mit dem ermittelten rect kannst du die höhe ausrechnen. isst die größer als die Zeilenhöhe dann paß du die Zeilenhöhe entsprechend an. Anschließend wieder mit drawtext und DT_Multiline den Text zeichnen.

Mfg Frank

Boncuk79 28. Apr 2005 17:03

Re: Bitte um Hilfe...... (StringGrid)
 
Das hab ich versucht nur funkt das irgendwie nicht...

Drawtext verwendest du wiederum in Ondrawcell und deswegen funkt es bei den unsichtbaren bereichen auch nicht. Da Ondrawcell nur für sichtbare bereiche gedacht ist.

ich brauche eine lösung für den unsichtbaren bereich... :cry:

gordon freeman 28. Apr 2005 17:13

Re: Bitte um Hilfe...... (StringGrid)
 
Zitat:

Zitat von Boncuk79
Das hab ich versucht nur funkt das irgendwie nicht...

Dann zeig doch mal etwas Code von deinen Versuchen. Meine Glaskugel ist gerade in Reperatur und deshalb kann ich leider nicht vorhersagen, was an deinem Cod nicht stimmt. :roll:

Boncuk79 28. Apr 2005 20:32

Re: Bitte um Hilfe...... (StringGrid)
 
ONDRAWCELL


Delphi-Quellcode:
With (Sender as TStringGrid) Do Begin
      Text := Cells[ACol,ARow];
      Canvas.FillRect(Rect);
      DrawText(Canvas.Handle, PChar(Text), Length(Text), Rect, DT_CalcRect or DT_Left or DT_WordBreak);
      DrawText(Canvas.Handle, PChar(Text), Length(Text), Rect, DT_Left or DT_WordBreak);
      y := Rect.Bottom - Rect.Top;
      IF y > 17 Then Begin
        RowHeights[ARow] := y;
        Height := CellRect(ACol,RowCount-1).Bottom;
      End;
  End;
[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]

Keldorn 29. Apr 2005 06:53

Re: Bitte um Hilfe...... (StringGrid)
 
wie gesagt: cellrect geht nicht bei unsichtbaren Zellen, da muß0t du dir was anderes einfallen lassen,. Entweder du summierst alle rowheights, oder du weißt, wie hoch die Zelle vorher war und wie hoch sie mit dem Text sein muß, mit der differenz kannst du auch die Höhe anpassen.

allerdings würde ich das nicht mehr im ondrawcell machen. u.U. wird dann immer wieder ein neuzeichnen veranlaßt.
Ich würde das ganze auslagern und nur bei Bedarf ändern (Text, Spaltenbreite, ... hat sich gändert). Für die Größenermittlung brauchst du nicht unbedingt das cellrect, um die erforderliche Höhe mit dt_clactext zu ermittlen, reicht es, wenn du dir ein rect anlegts, das die Breite der Spalte (colwidths[]) hat.

Mfg Frank

Boncuk79 29. Apr 2005 12:37

Re: Bitte um Hilfe...... (StringGrid)
 
Zitat:

Zitat von Keldorn
wie gesagt: cellrect geht nicht bei unsichtbaren Zellen, da muß0t du dir was anderes einfallen lassen,. Entweder du summierst alle rowheights, oder du weißt, wie hoch die Zelle vorher war und wie hoch sie mit dem Text sein muß, mit der differenz kannst du auch die Höhe anpassen.

allerdings würde ich das nicht mehr im ondrawcell machen. u.U. wird dann immer wieder ein neuzeichnen veranlaßt.
Ich würde das ganze auslagern und nur bei Bedarf ändern (Text, Spaltenbreite, ... hat sich gändert). Für die Größenermittlung brauchst du nicht unbedingt das cellrect, um die erforderliche Höhe mit dt_clactext zu ermittlen, reicht es, wenn du dir ein rect anlegts, das die Breite der Spalte (colwidths[]) hat.

Mfg Frank

ich werd das mal versuchen
Danke dir

Mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 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