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/)
-   -   Delphi StringGrid, Jahreskalender + Monatsanzeige (https://www.delphipraxis.net/96416-stringgrid-jahreskalender-monatsanzeige.html)

hoika 24. Jul 2007 08:54


StringGrid, Jahreskalender + Monatsanzeige
 
Hallo,

ich versuche gerade folgendes.
In einem gibt es 36X Spalten für die Tages des Jahres.
Es sind 2 fixed Rows, für Wochentag und Tag selber.

Mo Di Mi .. Di
1 2 3 1

Jetzt möchte ich der besseren Übersicht wegen obendrüber
noch den Monat schreiben


Januar Februar
Mo Di Mi .. Di
1 2 3 1

(Das Februar steht genau über dem Di, 1)

Dabei habe ein paar Probleme.

1. Das Grid (TStringGrid) hat viel zu kleine Spaltenbreiten,
um den kompletten Namen anzuzeigen.

2. beim Blättern verschwindet irgendwann der 1.1.
dann muss ich ja die Spalte mit dem Monat "versetzen"

3. Ausdruck (Crystal Reports)
naja, dass kommt später ... ;)


Wie würdet ihr das Lösen.
das eine StringGrid vergewaltigen (OnwerDraw mit Übeschreiben über Spalten hinweg).
oder sogar nen 2. Grid nehmen, was vom 1. Grid quasi gesteuert wird ?.

Ich stehe da auf dem Schlauch (wie immer ;)).

Danke


Heiko

ibp 24. Jul 2007 09:00

Re: StringGrid, Jahreskalender + Monatsanzeige
 
darfs was kosten? ich würde advstringgrid von tms-software nehmen, das kann zellen zusammenfügen.. oder gleich deren kalenderkompo...

ansonsten bleibt dir nur übrig, die zellen zu überzeichnen...

hoika 24. Jul 2007 09:12

Re: StringGrid, Jahreskalender + Monatsanzeige
 
Hallo,

ne, muss alles umsonst sein ;)
Nuja.

Das Zusammenfassen löst ja das Blättern nicht.
wenn ich z.B. die ersten 31 Zellen zusammenfassen (Januar)
und dann blätter, dass z.B. nur noch die letzten 10 Zellen angezeigt werden,
sehe ich das Wort Januar nicht mehr.

Zentrieren der Zelle hilft nicht,
Rechtsbündig sieht man vielleicht den Anfang nicht.


Heiko

ibp 24. Jul 2007 09:18

Re: StringGrid, Jahreskalender + Monatsanzeige
 
dann musst du mittels ontopleftchange reagieren und entsprechend neu zeichnen

Lannes 24. Jul 2007 11:01

Re: StringGrid, Jahreskalender + Monatsanzeige
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

glaube das der Code passen könnte:
Delphi-Forum: Link

hoika 24. Jul 2007 14:27

Re: StringGrid, Jahreskalender + Monatsanzeige
 
Kallo,

das sieht ja schön aus.
Was nicht so schön ist, dass manchmal die "halben" Monate
nicht angezeigt werden. Da muss ich mal sehen.

Und das Drucken ...
naja, lass ich ers mal weg ;)


Heiko

Lannes 24. Jul 2007 15:16

Re: StringGrid, Jahreskalender + Monatsanzeige
 
Hallo,

wie sieht das denn aus, wenn ein halber Monat nicht angezeigt wird?
Beschreib mal genauer, oder Screenshot?

Drucken?, in der Delphi-Library habe ich einen Beitrag hinterlegt, der ein StringGrid(auch die aktuell nicht sichtbaren Bereiche) 1 : 1 auf ein Bitmap.Canvas kopiert. Das sollte sich relativ leicht auf Printer.Canvas umsetzen lassen.
[TStringGrid, TBitmap, VCL Win32] ... ein Stringgrid als Bitmap ausgeben/speichern

hoika 24. Jul 2007 16:11

Re: StringGrid, Jahreskalender + Monatsanzeige
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

hier der Screenshot.
"Februar" wird nicht angezeigt,
obwohl Platz wäre.


Das mit dem Drucken läuft eh anders.
Der Ausdruck erfolgt über Crystal-Reports.
Dort werden die Daten in vorbereitete Felder eingetragen.

Da ich durch den festen RPT eh nur einen oder zwei Monate
druckem ist das egal.
Die Anzeige sieht dann halt nicht genauso wieder Screenshot aus.

Egal.


Heiko

Lannes 24. Jul 2007 18:57

Re: StringGrid, Jahreskalender + Monatsanzeige
 
Hallo,

achso, das meinst Du, das hab ich auch so eingebaut, damit die Ansicht einheitlich und ruhiger bleibt.
Wo soll beim horizontalen Scrollen der Monat ausgegeben werden?
Code:
|      Januar|Februar              |März        |
so sieht es imho besser aus:
Code:
|Januar     |        Februar      |           Mä|
Die Ausgabe des Monats passiert in dem Codestückchen:
Delphi-Quellcode:
    if aTag in [15..20] then
        Canvas.TextOut(R.Left+2-((aTag-15)*17),R.Top+2,LongMonthNames[aMonat]);
Immer wenn eine Zelle oberhalb der Tage 15. bis 20. des jeweiligen Monats gezeichnet werden muss, wird der Monat über diesen Zellenbereich ausgegeben. Wenn man die Bedingung und den Ausgabebereich bezogen auf LeftCol variabel hält, ist jede denkbare Ausgabeart möglich. :wink:

hoika 25. Jul 2007 07:07

Re: StringGrid, Jahreskalender + Monatsanzeige
 
Hallo,

ja, mit Quellcode kann man da schon ein bissel
was selber machen ;)


Heiko


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