Thema: Delphi Kalender programmieren?

Einzelnen Beitrag anzeigen

hubblec4

Registriert seit: 7. Jul 2013
4 Beiträge
 
FreePascal / Lazarus
 
#27

AW: Praxis Terminplaner

  Alt 13. Jan 2016, 00:29
Das ist ein ganz normales StringGrid(StG) bzw. das TjvStringGrid aus den Jedi-Komponenten.
Ich weis jetzt nicht genau in wie weit ich die Jedi-Komponenten in Lazarus verwenden kann, aber ist das TjvStringGrid schon ein bissl anders als das normale StringGrid?
Du hast in einer Zelle das Datum und weitere Uhrzeiten, hast du da Zellen miteinander verbunden oder wie kann man mehrere zeilen in einer Zelle darstellen... und wenn ja kannn man dann jede Uhrzeit separat anklicken(weitere Termininfos)?


Es gibt in meinem Terminator vier Ansichten auf vier TabSheets: Tages-, Wochen-, Monats- und Jahresüberblick. Zugrunde liegt eine Firebird-Datenbank, als DB-Komponenten kommt IbDac zum Einsatz, die Termintabelle sieht so aus:
Code:
CREATE TABLE TERMINE (
    IDX_TERMINE  BIGINT NOT NULL,
    BENUTZER     INTEGER DEFAULT 0 NOT NULL,
    DATUM_START  DATE,
    ZEIT_START   TIME,
    DATUM_ENDE   DATE,
    ZEIT_ENDE    TIME,
    BESCHREIBUNG VARCHAR(200) DEFAULT '' NOT NULL COLLATE UNICODE,
    ERLEDIGT     INTBOOLEAN DEFAULT 0 /* INTBOOLEAN = INTEGER DEFAULT 0 NOT NULL CHECK (VALUE IN (0,1)) */,
    ALARMEIN     INTBOOLEAN DEFAULT 1 /* INTBOOLEAN = INTEGER DEFAULT 0 NOT NULL CHECK (VALUE IN (0,1)) */,
    ANLEGER      INTEGER DEFAULT 0 NOT NULL,
    DATUM        TIMESTAMP,
    DAUER        TIME);
Allerdings ist mein Konzept nicht wirklich ausgereift, genügt aber meinen Ansprüchen bzw. denen eines gemeinnützigen Vereins, für den ich das vor bald drei Jahren zu entwickeln begonnen hatte. Heute würde ich vieles anders angehen.
TabSheets kannte ich damals noch nicht, bei mir gibt es momentan nur das eine StringGrid was dann jeweils für die Tag oder Wochenansicht angepasst wird. Aber die Idee einer Monatsansicht gefällt mir.
Was deine Firebird-Datenbank angeht, kann ich mir das so ähnlich wie bei SQL vorstellen (Server mit SQL und dann halt SQL befehle)?
Was genau ist die IBDac Komponente(wird wohl nur bei Delphi dabei sein)?

Wenn ich jetzt meine fast 2 jahre alten SQL-Tabellen anschaue kommt mir das Grauen.


Irgendwo in deinen Ursprungsdaten, aus denen heraus du dein StringGrid befüllst, steht doch sicher die Information, die du benötigst, um die entsprechende Zelle anders einzufärben. Im Falle einer SQL-Datenbank hätte ich da eine Spalte z.B. mit dem Namen KATEGORIE oder so. Beim Abklappern der Tabelle zum Ausgeben der Werte in ein StringGrid fragst du in OnDrawCell eben einfach diese Spalte in deiner Tabelle ab und zeichnest die entsprechende Zelle dann mit der entsprechenden Farbe.
Ok, denke ich habe das soweit verstanden wie du das meinst. Ich lade die Daten aus der SQL-DB mittels eines SQL-befehls und habe dann eine SQLQuery die ich verarbeite(StG befüllen).
Jetzt ist es doch aber so das diese onDrawCell-procedure andauernd aufgerufen wird(habe da mal zum test ein SpinEdit
benutzt, SpinEdit.Value:=SpinEdit.Value+1, und nach nicht mal zwei Minute stand der zähler schon bei einer Million).
Von daher ist es nicht gut wenn der SQL-Server so oft befeuert wird.
(Der SQL-Server ist ein rechner im netzwerk auf den 6 andere rechner zugreifen)

Ich habe mir überlegt die Daten eines Tages aus der DB auszulesen und das nötigste zwischen zuspeichern, in einem array oder record, worauf eben die onDrawCell-procedure schnell zugreifen kann.
  Mit Zitat antworten Zitat