Announcement

Collapse
No announcement yet.

DBGrid und BMP in der Titelzeile

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DBGrid und BMP in der Titelzeile

    Hallo,
    ich möchte gerne den Titel im Grid neben der Spaltenüberschrift um eine Imagelist-Bitmap erweitern. (nach Titelklick)
    Im Forum habe ich verschiedene Hinweise mit DBGrid1.Canvas gefunden
    z.B. ImageList1.Draw(DBGrid1.Canvas,rect.left,Rect.top, 20);

    Muss aber zugeben, verstanden habe ich es nicht so richtig, wie ich z.B. in der 2. Spaltenüberschrift eine Bitmap, gefolgt von einem Text platzieren kann.

    hat hier jemand sowtwas schon einmal gemacht, mehr Erfahrung ??

    mfg forest

  • #2
    Der folgende Artikel erklärt das recht schön (allerdings auf englisch):
    http://delphi.about.com/library/weekly/aa032205a.ht

    Comment


    • #3
      Hallo,
      vielen Dank für den Tipp.
      Leider habe ich noch nicht verstanden, wie ich die Titelzeile ändern kann.
      In den sonstigen Zeilen funktioniert es super.

      waldfores

      Comment


      • #4
        Hallo,

        ja, ich hab's gerade selbst ausprobiert, Du hast Recht! Ich habe mir den Quelltext von TDBGrid angesehen und gefunden, dass das "OnDrawColumnCell"-Ereignis für die Titelzeile nicht aufgerufen wird.
        <BR>
        Dann wird's komplizierter: Du musst eine neue Komponente von TDBGrid ableiten und die Methode "DrawCell" überschreiben, etwa so ((ist nicht getestet...):

        <PRE>
        type
        TMyDBGrid = class(TDBGrid)
        protected
        procedure DrawCell(ACol,ARow:Longint; ARect:TRect;
        AState:TGridDrawState); override;
        end;
        </PRE>
        ...
        <PRE>
        procedure TMyDBGrid.DrawCell(ACol,ARow:Longint; ARect:TRect;
        AState:TGridDrawState);
        begin
        if (gdFixed in AState) and (ACol>=0) then begin
        if DefaultDrawing=false and Assigned(OnDrawColumnCell)
        then begin
        dec(ACol, IndicatorOffset);
        OnDrawColumnCell(self, ARect, ACol, Columns[ACol], AState);
        end else
        inherited DrawCell(ACol, ARow, ARect, AState);
        end else
        inherited DrawCell(ACol, ARow, ARect, AState);
        end;
        </PRE>

        Viel Erfolg, Werne

        Comment

        Working...
        X