Autor Beitrag
Rag3
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: 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 :roll: ...

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 user profile iconraziel: Titel geändert.
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: So 03.04.05 19:43 
Hallo,

So geht es mit blauer Schrift auf gelben Grund:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 04.04.05 11:41 
user profile iconRag3 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: 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...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if gdFocused in State then
        begin
        sgFunktionen.Canvas.Font.Color := Funktionen[y].color;//Funktionen ist ein array, die position y entspricht der des sgFunktionen
        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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 04.04.05 12:22 
Du musst dir noch einen Else-Fall basteln. Also, wenn die Zelle nicht den Focus hat.
Rag3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: 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):

ausblenden Delphi-Quelltext
1:
2:
if ACol = 1 then
 canvas ... blabla

_________________
Gruß
Hansa
Rag3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: 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?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TFMathefunktionen.sgFunktionenOnDrawCell(Sender: TObject; ACol, ARow: Longint; Rect: TRect; State: TGridDrawState);
begin
 sgFunktionen.canvas.Font.Color:=clred; // Das ist falsch, hab aber keinen plan...
end;