![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: BDE
Grid mit Bild in der Zeile
Moin DP'ler!
Ist es möglich ein Bild in einer Grid Zeile anzuzeigen? ![]() Lill Jens :coder2: |
Re: Grid mit Bild in der Zeile
Ja ist es. überschreibe die DrawCell Methode und male bei Bedarf ein Bild aufs canvas in das in die Methode übergebene TRECT.
|
Re: Grid mit Bild in der Zeile
Zitat:
|
Re: Grid mit Bild in der Zeile
sicher, wie fast in jedem control per OwnerDraw (OnDrawCell in dem Fall), einfach mal danach suchen :)
musst dir nur überlegen, wie du das bild in der zelle hältst bzw. wenn damit nur ein status angezeigt wird, würde ich den status als integer-wert ins Object-Feld der Zelle hauen und im OnDrawCell diesen wert auwerten und entsprechend das bild malen/kopieren. wozu überschreiben, es gibt doch ein event... HTH Frank |
Re: Grid mit Bild in der Zeile
Zitat:
|
Re: Grid mit Bild in der Zeile
z.b. für den fall das das icon für einen Status steht, schreibst du den statuswert beim einlesen der Daten in das Objectsfeld (Stringgrid1.objects[0,row]). die Bitmaps erzeugst du am besten im formcreate (im formdestroy gibst du sie wieder frei). im OnDrawCell prüfst den Objects-wert auf deine werte und malst dementsprechend das Bitmap.
so in etwa stell ich mir die OnDrawCell-Methode vor:
Delphi-Quellcode:
HTH Frank
Stringgrid1.Canvas.Fillrect(rect);
if col=0 then //nur erste spalte mit bitmap füllen begin case Integer(Objects[0,row]) of //das Objects-Feld auswerten, was beim einlesen auf den status gesetzt wurde 1:stringgrid1.Canvas.Draw(rect.left,rect.top,bmp1); //hier halt das passende bitmap malen 2:stringgrid1.Canvas.Draw(rect.left,rect.top,bmp2); ... end; end else begin //bei den anderen nur den text hinpinseln Stringgrid1.Canvas.Textout(rect.left+4,rect.top+2,Cells[col,row]); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz