![]() |
Stringgrid
Guten Abend zusammen,
ich habe einen Kalender entwickelt den ich in einem Stringgrid anzeige. Sieht ungefähr wo aus Mo. Di. Mi. etc...... -----|-----|-----|................... -----|-----|-----|................... nun möchte ich gern das die Columns zwar mit den Texten erhalten bleiben, die Zellen darunter jedoch unterteilt werden durch einen farbigen Strich, ungefähr so: Mo. Di. Mi. etc...... -----|-----|-----|................... | | | | | |................... -----|-----|-----|................... hat jemand eine Idee oder einen Vorschlag wie ich das realisieren kann?? Danke bereits jetzt:-) Gruß Michael |
Re: Stringgrid
Hallo,
ja, im Event-Handler für OnDrawCell in den Zellen die Unterteilung zeichen. Aber wäre es nicht besser über der Unterteilung(durch Columns) die darüberliegenden Zellen zu verbinden? Oder habe ich jetzt etwas falsch verstanden? Meinst Du eventuel zwischen den "Zeilen" (Rows) unterteilen? |
Re: Stringgrid
DAnke für die Antwort,
es soll eine Art Belegungskalender werden, soll heissen jemand bucht vormittags aus....und ein anderer kommt nachmittags. um das erkenntlich zu machen hätte ich gern diesen Trennstrich in der entsprechenden zelle und ich habe leider zu wenig erfahrung mit der ondraw routine....vieleicht hast du ein beispiel?? danke miohael |
Re: Stringgrid
Hallo,
soll das so aussehen?
Code:
oder erstell doch mal eine Zeichnung/ein Bild, damit man sich das besser vorstellen kann.
________________________
| Mo | Di | Mi | |_______|_______|_______| | | | ____|_______|_______|___ |
Re: Stringgrid
hallo zurück!!!
JAAAAA genau so |
Re: Stringgrid
Hallo,
und die Zellen sollen vermutlich auch Inhalte aufnehmen können/editiert werden können? Ein Belegungsplan? Belegung auch über mehrere Tage?
Code:
________________________________________________
| Mo | Di | Mi | Do | Fr | Sa | |_______|_______|_______|_______|_______|_______| |Müller | Musterfrau | Meyer ____|_______|_______________|___________________ Zitat:
|
Re: Stringgrid
Hallo,
Sorry das ich gestern nicht mehr gepostet habe, war einfach zu müde:-( ja, so soll es am Ende aussehen, editierbar und über mehrere Tage belegbar, hast Du eine Idee oder einen Ansatz dafür? Danke und einen schönen Tag Michael |
Re: Stringgrid
Hab gerade mal geschaut ich finde für dein Vorhaben geht ein ListView mit Columns.
Hab grad mal getestet mit OnDrawItem kannst du dir das super zeichnen. du musst im Listview den Style auf Report stellen, Columns hinzufügen und RowSelect True machen. Ich hab jedem Colums die Größe von 48 gegeben (2 mal 24 Stunden) und dan Mo,Di usw als Columns gemacht Und fügst bei Items ein paar Namen ein. Als Erkläreung: Rect ist jeweils von der Zeile, da Rowselect an ist. In Item sind die Informatione von dem Eintrag drin wie Caption (also den Namen des jeweiligen) State brauchst du nur, wenn du noch die Farbe beim Select der Zeile ändern willst. Bei OnDrawItem fügst du als Test folgen Code ein:
Delphi-Quellcode:
So das müsste denke ich dir weiter helfen. In den Subitems kannst du z.b. die Daten von der Zeit oder Anfangstag oder so reinstellen.
procedure TForm2.ListView1DrawItem(Sender: TCustomListView; Item: TListItem;
Rect: TRect; State: TOwnerDrawState); begin // Das Rect.Top und Rect.Bottom jeweils, damit du in der Zeile bleibst. ListView1.Canvas.Rectangle(30,Rect.Top,100,Rect.Bottom); //Ein Rechteck als beispiel ListView1.Canvas.Brush.Style := bsClear; //Damit der ´Hintergrund vom Text nicht das Rechteck überdeckt ListView1.Canvas.TextOut(30 +2,Rect.Top,Item.Caption); //Text zeichnen //Du kannst ja mal über weitere Zeichenoptionen in der Hilfe nach der Klasse TCanvas nachschauen. //Findest bestimmt etwas end; end. Die Subitems kannst du dan über Item.Items abfragen soviel ich weiß. Gruß NickelM |
Re: Stringgrid
Hallo,
spätestens wenn die Subitems editierbar sein sollen und noch dazu nicht im Raster liegen, wird es sehr schwierig bis unmöglich mit einer ListView das zu realisieren. Auch mit einem StringGrid ist das nicht gerade eine leichte Übung. Auch da bleibt bei den Anfordeungen eigentlich nur die erste Zeile in einem Raster. Es werden ja vermutlich mehrere unterschiedliche Belegungen/Tag auftreten, das sieht ja im Endeffekt dann so aus:
Code:
Das mit einem Standard-ListView oder -Grid zu realisieren ist sehr zeitaufwändig(spreche da nicht von Tagen, eher Monate).
__________________________________________________________
| Mo | Di | Mi | Do | Fr | Sa | ... |_______|_______|_______|_______|_______|_______|_________ |Müller | Musterfrau | Meyer | ____|_______|_______________|_______________________|_____ Hinz | Müller-Lüdenscheid | Kunz ______|_____________________________|_____________________ ... | ... | ... | ___________________|________|____________________________| Ich glaube du solltest dich mal nach fertigen Komponenten umschauen, z.B. TVirtualTreeView(weiß ich nicht ob die das kann), oder z.B. das TAdvStringGrid(das beherrscht "cell merging", ist aber nicht Freeware ![]() Willst Du Deine Anforderungen selbst umsetzen, empfehle ich Dir eine ScrollBox. In der EE gibt es auch mal ein Thema das dazu Informationen liefert. ![]() da geht es dann weiter: ![]() |
Re: Stringgrid
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo nochmal zusammen,
ich hab mal nen Bild mit meinen bisherigen "Erfolgen" und meinem einzigem noch vorhandenen Problem beigelegt. Ich denke es ist sehr sehr einfach zu lösen nur seh ich zur Zeit den Wald vor lauter Bäumen leider nicht mehr... Vielen Dank Michael |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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 by Thomas Breitkreuz