Autor Beitrag
Witch
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 21.01.04 16:40 
Hallo ihr lieben!

Also ich hab da mal ne Frage:

Ich hab ein DBGrid was ich mit Hilfe eines Queries an eine Paradox-Tabelle angebunden hab, in diesem DBGrid werden jetzt mit Hilfe von SQL bestimmte Sachen angezeigt. Nun ist es aber so das ich gern eine ganz bestimmte Zelle von der ich nur den Inhalt weiß, einfach markieren will. Es soll wirklich nich mehr passieren als das die eine Zelle blau wird... nur weiß ich nich wie...Könntet ihr mir da weiter helfen?

Vielen Dank im voraus für eure Mühe und Antworten!!

Grüße witch!!
rstaeker
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 94

WIN 2000
D6 Prof
BeitragVerfasst: Mi 21.01.04 17:09 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); 
var  iValue: integer; 
begin 
    // Feld-Wert prüfen und entsprechende Farbe wählen 
    iValue := qryIn.FieldByName('HINWEIS_COLOR').AsInteger; 
    case iValue of 
      1: DBGrid1.Canvas.Brush.Color := clGreen; 
      2: DBGrid1.Canvas.Brush.Color := clLime; 
    end
    // Feld zeichnen 
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); 
end;


qryIn ist dein DBQuery


---------
Ist aus dem Kopf geschrieben, müsste eigentlich aber funktionieren


MfG Rene

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
Witch Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 21.01.04 20:59 
hi!

Es funktioniert leider nich. Wenn zum beispiel 'holz' der inhalt in der zu markierenden zelle ist, kommt die Fehlermeldung: Query1:Das Feld 'holz' wurde nicht gefunden.

weißt du vielelicht noch weiter? trotzdem erstmal danke für deine antwort!

Grüße witch
rstaeker
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 94

WIN 2000
D6 Prof
BeitragVerfasst: Mi 21.01.04 22:15 
Hallo Witch,

der Inhalt der Zelle ist also ein String:

Hier mal der angepasste Code
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; 
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); 
var  sText: String
begin 
    // Feld-Wert prüfen und entsprechende Farbe wählen 
    sText := Query1.FieldByName('<Feldname>').AsString; 
    if (sText='Holz'then DBGrid1.Canvas.Brush.Color := clGreen; 

    // Feld zeichnen 
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); 
end;


Für <Feldname> musst Du noch den Namen des Feldes / der Spalte in Deiner Tabelle einsetzen


MfG Rene

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
Witch Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 21.01.04 23:09 
hmm..hätte ich wohl dazu sagen müssen..sry!
Jetzt zeigt er zwar keinen Fehler mehr an, aber markieren tut er das Feld immer noch nich..

der befehl ...brush.color setzt doch eigentlich an sich nur fest welche farbe er verwenden soll und nich den befehl nu mache es bunt... wäre es da vielelicht möglich mit dem befehl ...floodfill zuverwenden? nur dazu müsse man ja dann die koordinaten der zelle wissen? oder liege ich mit dieser vermutung falsch?

thx witch