Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Benachrichtigung bei Änderung an übergeordnete Elemente (https://www.delphipraxis.net/57468-benachrichtigung-bei-aenderung-uebergeordnete-elemente.html)

sh17 27. Nov 2005 12:31

Re: Benachrichtigung bei Änderung an übergeordnete Elemente
 
oder Du machst es wie bei virtuellen Komponenten, Du rufst Grid.Repaint auf. Ist natürlich nichts automatisches

Keldorn 27. Nov 2005 18:22

Re: Benachrichtigung bei Änderung an übergeordnete Elemente
 
Zitat:

Zitat von sh17
Ich hab jetzt nicht den Code im Kopf, aber folgender Vorschlag:
Die Eigenschaft Cells[x,y] : TCell des Grids so implementieren, dass das Grid zwar mitbekommt, welche Zelle angefragt wird (bei Zugriff auf Cells[x,y]), dann aber nur die Zelle an sich zurück liefert. Der Zelle kannst Du dann zuweisen, was Du willst.

oups, hatte deine Antort übersehen. Wenn ich dich verstnaden habe, geht das aber eben nicht. wenn ich das als
Delphi-Quellcode:
Property CellValue[ACol, ARow: Integer]:TcellValue read GetcellValue write SetCellValue
mache, wird bei einem Aufruf Grid.cellvalue[x,y].blabla:=blabla beim Grid nur die getmethode aufgerufen, nicht die set-methode. und in der Getmethode muß ich dann wissen, ob die Zelle neugezeichnet werden muß oder nicht, ich kann sie dort nicht immer neuzeichnen, da cellvalue auch bei Drawtext aufgerufen wird. Ich wäre so ganz schnell in einer Endlosschleife.

Zitat:

oder Du machst es wie bei virtuellen Komponenten, Du rufst Grid.Repaint auf. Ist natürlich nichts automatisches
geht auch nicht. Erstens habe ich das sicherlich Geschwindigkeitsproblem, wenn ich bei einer einzelnen Zelländerung immer das ganze Grid neuzeichne, außerdem kann ich so schlecht unterscheiden, ob es überhaupt neu gezeichnet werden muß. Ich würde immer Grid.repaint aufrufen, auch wenn die Zelle nicht im sichtbaren Bereich liegt.

Mfg Frank

sh17 28. Nov 2005 05:38

Re: Benachrichtigung bei Änderung an übergeordnete Elemente
 
Zitat:

Zitat von Keldorn
geht auch nicht. Erstens habe ich das sicherlich Geschwindigkeitsproblem, wenn ich bei einer einzelnen Zelländerung immer das ganze Grid neuzeichne, außerdem kann ich so schlecht unterscheiden, ob es überhaupt neu gezeichnet werden muß. Ich würde immer Grid.repaint aufrufen, auch wenn die Zelle nicht im sichtbaren Bereich liegt.
Mfg Frank

Naja, das ist ja gerade das virtuelle. Das Grid bekommt Repaint und zeichnet den "sichtbaren" Bereich neu. Der ist ja nicht so groß. Wenn die geänderte Zelle nicht im sichtbaren Bereich war, ist das ja nicht schlimm-

Keldorn 2. Dez 2005 20:38

Re: Benachrichtigung bei Änderung an übergeordnete Elemente
 
Sorry für die späte Antwort, aber in der Woche bin ich nicht zu meinem Problem gekommen
Zitat:

Zitat von sh17
Das Grid bekommt Repaint und zeichnet den "sichtbaren" Bereich neu. Der ist ja nicht so groß. Wenn die geänderte Zelle nicht im sichtbaren Bereich war, ist das ja nicht schlimm-

Doch , das ist schlimm ;), wenn bei einer Änderung einer nichtsichtbaren Zelle trotzdem immer das Grid beugezeichnet wird.

Aber so richtig weiter bin ich immer noch nicht. die Variante propertys CellValueAsString[x,y], CellValueAsFloat[x,y], CellValueAsInteger[x,y]..., die dann auf die entsprechenden CellValuepropertys zugreift ist wahrscheinlich doch am Besten.

Meine Idee mit einer Boolean-property bei TCellvalue geht natürlich auch nicht :wall:, da der Bool innerhalb von TCellvalue erst gesetzt wird, wenn GetCells komplett durchgelaufen ist. Eine Abfrage dort hat gar keinen Sinn.

sh17 3. Dez 2005 19:59

Re: Benachrichtigung bei Änderung an übergeordnete Elemente
 
vielleicht sehe ich das ganze ja falsch:

Du hast ein Object "Grid", was Deine Daten in Form von Zellen hält. Zum Benutzer hin ist nur ein kleiner Bereich sichtbar (wie z.B. beim StringGrid). Dieser Bereich muss vom Grid gezeichnet werden.

Warum musst Du alles neu zeichnen, wenn eine nicht sichtbare Zelle geändert wird.

Würde uns ein Screenshot weiterhelfen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:06 Uhr.
Seite 2 von 2     12   

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