Autor Beitrag
DSammy
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Fr 30.05.03 17:29 
Hallo, ich möchte in der DBGrid eine Bitmap anzeigen lassen (wie z.B. in Listview). Diese Bitmap soll je nach Daten den zustand des Benutzers anzeigen !

Ich habe es schon hinbekommen das, wenn der Benutzer auch der Anleger der Daten ist eine andere Farbe bekommt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure TForm1.ExDBGrid1ApplyCellAttribute(Sender: TObject;
  Field: TField; Canvas: TCanvas; State: TGridDrawState);
begin
{!!!}
        if Query1.Fields[1].AsString <> 'Benutzer' then
         begin
           if Field = Query1.Fields[1] then
            if not (gdSelected in State) then
                Canvas.Font.Color := clSilver;
           if Field = Query1.Fields[2] then
            if not (gdSelected in State) then
                Canvas.Font.Color := clSilver;
           if Field = Query1.Fields[3] then
            if not (gdSelected in State) then
                Canvas.Font.Color := clSilver;
           if Field = Query1.Fields[4] then
            if not (gdSelected in State) then
                Canvas.Font.Color := clSilver;
           if Field = Query1.Fields[5] then
            if not (gdSelected in State) then
                Canvas.Font.Color := clSilver;
           if Field = Query1.Fields[6] then
            if not (gdSelected in State) then
                Canvas.Font.Color := clSilver;
           if Field = Query1.Fields[7] then
            if not (gdSelected in State) then
                Canvas.Font.Color := clSilver;
          end;
end;


Nun möchte ich das noch mit einer Bitmap. Ich habe im DBGrid schon ein neues Cloumns[0] angelegt. Nur wie bekomme ich zugriff darauf ???

ausblenden Delphi-Quelltext
1:
ExDBGrid1.Canvas.Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic)					

klappt (in TForm1.ExDBGrid1DrawColumnCell) aber ich bekomme immer in allen Felder das Bitmap ???

Kann mir jemand helfen ???

Danke

DSammy
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 30.05.03 19:25 
standardmäßig mit Delphi alleine geht das wohl nicht, zumindest nicht so einfach. Ich teste hier gerade die RAD/Bold und EhLib Kompnenten -> Google. Die EhLib Komponenten habe ich installiert, die anderen noch nicht, da hakt was. Die Bildschirmausdrucke von beiden sehen aber sehr gut aus.

Edit: Allerdings würde mich auch interessieren, wie ich sowas in der Richtung hinkriege, nicht mit Bildern, sondern jede zweite Zeile anders zu machen, trotzdem aber DB-spezifisch. Das läuft fast auf dasselbe hinaus. Also anhand der vorliegenden Daten, das Grid zu manipulieren. Sind für das entsprechende Feld keine Daten vorhanden, NULL-Werte usw. z.B. hinschreiben : "keine Daten" oder von mir aus ein Bild.

_________________
Gruß
Hansa
DSammy Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Fr 30.05.03 22:47 
hansa hat folgendes geschrieben:
Edit: Allerdings würde mich auch interessieren, wie ich sowas in der Richtung hinkriege, nicht mit Bildern, sondern jede zweite Zeile anders zu machen, trotzdem aber DB-spezifisch. Das läuft fast auf dasselbe hinaus. Also anhand der vorliegenden Daten, das Grid zu manipulieren. Sind für das entsprechende Feld keine Daten vorhanden, NULL-Werte usw. z.B. hinschreiben : "keine Daten" oder von mir aus ein Bild.


Ich benutze nicht die Standard´s ich habe die EXDBGrid !
Kann ich dir nur empfehlen, gerade wenn es darum geht andere Farben und Ereignisse abzufangen.
Wenn du die NULL-Werte ausfiltern möchtest, schaue dir mal oben den Quelltext an. Ich filter ja auch den ersten Fieldeintrag des Records aus und ändere dann z.B. die Farbe. Sollte so auch recht einfach bei dir funktionieren !

DSammy
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 30.05.03 23:32 
ich glaube langsam zu wissen wie ich das machen muß. Gibt es sowas wie RowCount in nem Grid?

_________________
Gruß
Hansa
DSammy Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Sa 31.05.03 18:37 
Ich habe es hinbekommen. Zwar mit einem kleinen Trick, aber es läuft !

Danke

DSammy
nonni
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Sa 31.05.03 18:44 
schön daß DU es jetzt weißt wie es geht :?
DSammy Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Sa 31.05.03 22:05 
Sorry natürlich....

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.ExDBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
If (Column.FieldName = 'Besitzer') and (Query1.Fields[1].AsString <> Benutzer) then
  ExDbgrid1.Canvas.Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
If (Column.FieldName = 'Besitzer') and (Query1.Fields[1].AsString = Benutzer) then
  ExDbgrid1.Canvas.Draw(Rect.Left, Rect.Top, Image2.Picture.Graphic);
end;


Habe das Column wo der Benutzer drin steht so klein gemacht das jetzt nur die Bitmap rein passt. Wollte das Feld sowieso Visiblen. Dann noch diese Abfrage und fertig.

DSammy