Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi String Einfärben - Mehrer Ereignisse... (https://www.delphipraxis.net/93543-string-einfaerben-mehrer-ereignisse.html)

sebastian_buege 7. Jun 2007 10:55


String Einfärben - Mehrer Ereignisse...
 
Hallo der Titel ist nicht ganz eindeutig.
Ich weiß schon wie man Stringgrid einfärbt. Mein Problem : Ich möcht eine Zeiterfassung programmieren und grafisch darstellen Feiertage, urlaub, krank usw.
Feiertage stelle ich durch ein graues kästchen dar. ich werte dazu in einer seperaten funktion eine Datenbank aus. wenn ein feirtag ist, schreibe ich in das entsprechende Feld ein "F". Bei Urlaub ein "U" , Krank ein"K" minusstunden "-",plusstunden ein "+".

nun passiert folgendes ich werte in der ondraw methode des Stringgrids den inhalt aus - bei malse graues rechteck usw.

wenn ich nun an einem fertag überstunden eintragen möchte, sehe ich nur das grüne plus. ist ja logisch wie schaffe ich es das ich beides seheh.

ich hoffe das problem ist verstanden worden...

DGL-luke 7. Jun 2007 11:07

Re: String Einfärben - Mehrer Ereignisse...
 
Hallo,

füge es doch aneinander an. Ich weiß natürlcih nciht, wie du es im Moment machst, aber mach aus if/else konstrukten eben ein if-if-if und füge die Buchstaben zusammen. Mach dann eben "F+" draus.

sebastian_buege 7. Jun 2007 11:20

Re: String Einfärben - Mehrer Ereignisse...
 
Also meinst du das ich pro Feld nicht nur einen Buchstaben haben sollte sondern ein e Zeichenkette.
das klingt gut allerdings wird es dann sehr verschachtelet und unübersichtlich. Gibt es keine andere möglichkei das feld vielleicht außerhalb der ondrwa methode zu füllen.


oder anders gefragt wie kann ich sonst ein bestimmtes feld ohne in der ondrwamethode den in inhalt abzufragen

DGL-luke 7. Jun 2007 11:29

Re: String Einfärben - Mehrer Ereignisse...
 
Hallo,

wie wärs denn mit sowas:

Delphi-Quellcode:
type
  TState = (sAtwork, sHolidays, sSpecialHolidays, sIllLeave, sTakenOff, sAdditionalHours); //arbeitet, urlaub, feiertag, krank, überstunde abfeiern, überstunden arbeiten
  TStates = set of TState; //einige der states widersprechen sich, aber das muss man jetzt nicht in der Datenstrukltur berücksichtigen.

var
  states: array of array of TStates;
jetzt musst du nur noch in deiner Datenbankabfrage states initialisieren und belegen, im OnDraw kannst du dann (virtueller Ansatz, n bisschen zumindest) nach Belieben färben und den Text setzen.

sebastian_buege 7. Jun 2007 11:38

Re: String Einfärben - Mehrer Ereignisse...
 
so richtig geht das aber auch nicht ich will ja eine Jahresansicht erstellen.
also wenn ich einen mitarebeiter auswähle , soll er mir für ihn das komplette jahr anzeigen.
nun kann es wie gesagt passieren, das an einem tag mehrere ereignise passieren.

sebastian_buege 7. Jun 2007 12:14

Re: String Einfärben - Mehrer Ereignisse...
 
Moment ich glaube ich habe das noch nicht richtig erkärt. ich schreibe einen Bchstaben hinein, steh dann der wert noch im kästchen.
kann ich nicht mir eine array alegen, wo ich integerwert bspeichere.1 = F, 2= K ... 6=F+ 7=

meinst du das geht

Namenloser 7. Jun 2007 12:21

Re: String Einfärben - Mehrer Ereignisse...
 
Habe ich es richtig verstanden, dass es darum geht, die Ereignisse zu erkennen? Oder geht es darum, sie darzustellen.
Also das Erkennen würde ich so machen:
Delphi-Quellcode:

// cellstring ist der Inhalt der Zelle

if pos('+',cellstring) > 0 then // Überstunden
begin
  {...}
end;
if pos('-',cellstring) > 0 then // Minusstunden
begin
  {...}
end;
if pos('F',cellstring) > 0 then // Feiertag
begin
  {...}
end;

// und so weiter...


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