Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Stringgrid Object (https://www.delphipraxis.net/148189-stringgrid-object.html)

michael.cohrs 24. Feb 2010 14:23


Stringgrid Object
 
Hallo zusammen,

ich bin dabei einen Belegungskalender zu bauen und habe dabei folgendes Problem:

Der Kalender stellt 3 Jahre in dem Grid dar. Die belegten Tage markiere ich, in dem ich ein Panel
in die Zelle zeichne mit folgender Routine:

for i := 0 to Reservation.ReservationDays do
sgCalender.Objects[Reservation.ReservationCol + i,Reservation.ReservationRoom] := oTimePnl;

Das Problem ist folgendes, wenn ich nun in dem Grid Scrolle um auf ein anders Datum zu kommen und dann
wieder zurück zum aktuellen Datum gehe ist das Belegungspanel verschwunden, wie stelle ich es an, das alle
Objecte in dem Panel immer sichtbar bleiben, auch beim Scrollen?

Danke bereits jetzt für jeden Tip

Michael

Blup 24. Feb 2010 14:42

Re: Stringgrid Object
 
Was immer du mit den beiden Zeilen erreichen willst, damit zeichnest du jedenfalls nicht in einem TStringGrid.

Zeig uns doch mal ein wenig mehr Code, insbesondere wie dieses "oTimePnl" erstellt wird und was damit gemacht wird.

holliesoft 24. Feb 2010 14:50

Re: Stringgrid Object
 
Wann zeichnest Du ins Grid? Wenn es nicht beim Paint Ereignis des StringGrids passiert sondern nur einmalig beim Lesen der Daten dann wird Deine gezeichnete Grafik natürlich gelöscht. Du musst die Grafik im onPaint Ereignis neu zeichnen.

Gruß,
Patrick

michael.cohrs 24. Feb 2010 17:01

Re: Stringgrid Object
 
Danke für die Antworten bishes

oTimePanel ist ein normales Panel das ich zur Laufzeitm erzeuge.
@Blub--> natürlich zeichne ich das Panel mit der Routine nicht sondern lege es als Object in das Grid, sorry hab mich falsch ausgedrückt:-(

In der OnDrawCell Routine wird das Panel dann gezeichnet und angezeigt, soweit ist auch alles wunderbar in Ordnung.
Da der Kanelnder jedoch 3 oder mehr Jahre darstellen kann verschwindet das Panel beim scrollen des Grid´s, mein Ziel ist es das (oder die )Panel
beim hin und her scrollen im Grid an Ihrer Position zu halten sowie sie immer sichtbar zu machen.

Ich hoffe das war ein wenig besser beschrieben.

Velen Dank und
Gruß
Michael

Blup 25. Feb 2010 08:34

Re: Stringgrid Object
 
Das Stringgrid ist nicht als Container für Steuerelemente gedacht. Deshalb ist mir noch nicht ganz klar warum ein Wincontrol(TPanel) erzeugt wird, wo doch sowieso im OnDrawCell selbst gezeichnet werden muss.
Zitat:

Zitat von michael.cohrs
In der OnDrawCell Routine wird das Panel dann gezeichnet und angezeigt, soweit ist auch alles wunderbar in Ordnung.

Scheinbar eher nicht. OnDrawCell wird bei allen möglichen Gelegenheiten aufgerufen, auch beim Scrollen.
Also liegt der Fehler mit ziemlicher Sicherheit entweder hier oder beim Erzeugen/Freigeben der zu zeichnenden Objekte.
Bitte zeig uns doch mal ein par Zeilen oder füge die betreffende Unit deinem Beitrag an.


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