| Autor |
Beitrag |
Rag3
      
Beiträge: 45
|
Verfasst: So 03.04.05 18:44
Hi,
nunja ich hab mir hier schon einige sachen im Formum durchgelesen, aber so richtig schlau bin ich nicht geworden, bin evtl zu blöd  ...
Nunja ich benötige folgendes:
Procedur, die mir die schrift (alternativ auch der hintergrund) im feld[x,y] vom grid in einer bestimmten Farbe darstellt...
Falls dies nur mit diesem ominösen "OnDrawCell" möglich ist, möchte ich euch bitten mir mal ein Beispiel für eine procedur zu geben, die man mit einem solchen ereignis aufrufen kann, ich hab keine zustande bekommen...
vielen dank!
Rag3
Moderiert von raziel: Titel geändert.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: So 03.04.05 18:55
Hallo,
in dem Thread habe ich mal ein kleines Beispiel gepostet:
www.delphi-forum.de/...r=asc&highlight=
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Rag3 
      
Beiträge: 45
|
Verfasst: So 03.04.05 19:06
danke für den vorschlag, aber leider funktioniert das ganze nicht so ganz...
Das problem ist, dass ich auf jeden fall eine schrift in dem jeweiligen feld haben muss, die hab ich aber nach Fillrect nichtmehr...Kann man nicht nur die schriftfarbe ändern?
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: So 03.04.05 19:43
Hallo,
So geht es mit blauer Schrift auf gelben Grund:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| if gdFocused in State then begin Canvas.Brush.Color := clyellow; Canvas.FillRect(Rect); inc(Rect.left,2); inc(Rect.top,2); Canvas.Font.Color := clBlue; drawtext(canvas.handle,pchar(cells[col,row]),length(cells[col,row]), Rect,DT_LEFT or DT_TOP); end; |
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Rag3 
      
Beiträge: 45
|
Verfasst: Mo 04.04.05 11:32
der sagt mir immer "Undefinierter Bezeichner: State" Hab auch ehrlich gesagt keine ahnung, was dieses "if gdFocused in State then" bedeutet...
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 04.04.05 11:41
Rag3 hat folgendes geschrieben: | | der sagt mir immer "Undefinierter Bezeichner: State" Hab auch ehrlich gesagt keine ahnung, was dieses "if gdFocused in State then" bedeutet... |
Das ganze muss im OnDrawCell-Ereignis gemacht werden. Dann kennt Delphi auch "State".
Bei gdfocused geht es darum, ob die Zelle gerade gewählt (fokussiert) ist. Den Zustand sollte man berücksichtigen.
|
|
Rag3 
      
Beiträge: 45
|
Verfasst: Mo 04.04.05 12:18
ok, das geht schonmal voran: jetzt gibt der farbigen text aus, allerding an der falschen stelle und nicht dauerhaft, das heißt, wenn ich ne andere zelle anklicke verschwindet die zuvor gezeichnete schrift...
Delphi-Quelltext 1: 2: 3: 4: 5:
| if gdFocused in State then begin sgFunktionen.Canvas.Font.Color := Funktionen[y].color; drawtext(sgFunktionen.canvas.handle,pchar(sgFunktionen.cells[acol,arow]),length(sgFunktionen.cells[acol,arow]),Rect,DT_LEFT or DT_TOP); end; |
so hab ich den text für mich abgeküktzt.
der behält die farbe einfach ned bei, wieso?
Außerdem schreibt der nicht in das feld, was ich anklicke, sondern in das erste der jeweiligen reihe...?!?
Zuletzt bearbeitet von Rag3 am Mo 04.04.05 12:24, insgesamt 1-mal bearbeitet
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 04.04.05 12:22
Du musst dir noch einen Else-Fall basteln. Also, wenn die Zelle nicht den Focus hat.
|
|
Rag3 
      
Beiträge: 45
|
Verfasst: Mo 04.04.05 12:25
hab oben editiert, schau mal nach...
wie muss denn der elsefall aussehen, muss der da die schrift o9hne farbveränderung einfach mal neuschreiben oder wie?
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mo 04.04.05 12:33
Ich nehme an, er will dauerhaft die Farben bestimmter Zellen setzen. Also folgendes : vergesse den state und gehe so vor (natürlich im OnDrawCell):
Delphi-Quelltext 1: 2:
| if ACol = 1 then canvas ... blabla |
_________________ Gruß
Hansa
|
|
Rag3 
      
Beiträge: 45
|
Verfasst: Mo 04.04.05 15:34
sorry aber ich bin in sachen canvas noch nicht so der profi, was muss ich da genau schreiben, wenn der bei einem klick in eine Zelle in einer Reihe (egal welche) immer die schrift in der entsprechenden Zelle in spalte 2 färben soll?
Delphi-Quelltext 1: 2: 3: 4:
| procedure TFMathefunktionen.sgFunktionenOnDrawCell(Sender: TObject; ACol, ARow: Longint; Rect: TRect; State: TGridDrawState); begin sgFunktionen.canvas.Font.Color:=clred; end; |
|
|
|