Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Stringgrid (https://www.delphipraxis.net/141356-stringgrid.html)

michael.cohrs 7. Okt 2009 18:27


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

Lannes 7. Okt 2009 18:48

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?

michael.cohrs 7. Okt 2009 19:27

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

Lannes 7. Okt 2009 19:48

Re: Stringgrid
 
Hallo,

soll das so aussehen?
Code:
________________________
|  Mo  |  Di  |  Mi  |
|_______|_______|_______|
    |       |       |
____|_______|_______|___
oder erstell doch mal eine Zeichnung/ein Bild, damit man sich das besser vorstellen kann.

michael.cohrs 7. Okt 2009 19:59

Re: Stringgrid
 
hallo zurück!!!

JAAAAA genau so

Lannes 7. Okt 2009 20:54

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:

Zitat von Lannes
oder erstell doch mal eine Zeichnung/ein Bild, damit man sich das besser vorstellen kann.


michael.cohrs 8. Okt 2009 04:14

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

NickelM 8. Okt 2009 04:54

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:
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.
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.
Die Subitems kannst du dan über Item.Items abfragen soviel ich weiß.

Gruß NickelM

Lannes 8. Okt 2009 09:39

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:
__________________________________________________________
|  Mo  |  Di  |  Mi  |  Do  |  Fr  |  Sa  |  ...
|_______|_______|_______|_______|_______|_______|_________
    |Müller |  Musterfrau  |         Meyer        |
____|_______|_______________|_______________________|_____
 Hinz |   Müller-Lüdenscheid       |  Kunz      
______|_____________________________|_____________________
    ...           |  ...  |               ...         |
___________________|________|____________________________|
Das mit einem Standard-ListView oder -Grid zu realisieren ist sehr zeitaufwändig(spreche da nicht von Tagen, eher Monate).
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 Link -> Demo).

Willst Du Deine Anforderungen selbst umsetzen, empfehle ich Dir eine ScrollBox.
In der EE gibt es auch mal ein Thema das dazu Informationen liefert.
[StringGrid, VCL Win32] individuelle Zellen(!)-Breite, ist das möglich?
da geht es dann weiter: [TScrollbox, VCL Win32] Wie kann man die Erstellung der Objekte beschleunigen?

michael.cohrs 8. Okt 2009 16:38

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 16:07 Uhr.
Seite 1 von 2  1 2      

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