Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Panelschrägkanten farbig? + Frage zu DrawGrid (https://www.delphipraxis.net/100536-panelschraegkanten-farbig-frage-zu-drawgrid.html)

peace 29. Sep 2007 22:55


Panelschrägkanten farbig? + Frage zu DrawGrid
 
Gibt es irgendeine Eigenschaft von Panel die es mir erlaubt die Farbe der Schrägkante zu ändern?

zusätzlich: Wie kann man bei DrawGrid einzelne Felder ansprechen und ihre Farbe ändern?

mfg peace

blackdrake 29. Sep 2007 23:20

Re: Panelschrägkanten farbig? + Frage zu DrawGrid
 
Hallo und willkommen bei DP.

Eine solche Eigenschaft kenne ich nicht.

Du hast 2 Möglichkeiten

a) Du könntest es mit OwnerDraw selbst zeichnen
b) Du suchst nach einer Drittanbieter-VCL (solltest du zuerst tun)

Eine gute Seite, wo man viele VCLs findet ist www.torry.net -> VCL.

Bei DrawGrid müsstest du auch mit OwnerDraw arbeiten können, um so einzelne Bereiche in anderer Farbe zeichnen zu können.

Gruß
blackdrake

Reinhard Kern 30. Sep 2007 01:14

Re: Panelschrägkanten farbig? + Frage zu DrawGrid
 
Zitat:

Zitat von peace
Gibt es irgendeine Eigenschaft von Panel die es mir erlaubt die Farbe der Schrägkante zu ändern?

zusätzlich: Wie kann man bei DrawGrid einzelne Felder ansprechen und ihre Farbe ändern?

mfg peace

Bei einem TDrawGrid must du ja die Zelle sowieso in der Ereignisroutine OnDrawCell selbst zeichnen - da kannst du machen was du willst. Die Zellenadresse wird ja als Parameter übergeben. Das sieht z.B. so aus:

Delphi-Quellcode:
procedure TBLMainForm.SG_OverviewDrawCell (Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var CSVal : integer;
    CSText : string[16];
    tw,th,tx,ty : integer;
begin
if (ACol = 3) and (ARow > 0) then
  with TStringGrid(Sender).Canvas do
    begin
    Brush.Color := clWindow;
    FillRect (Rect);
    TryStrToInt (TStringGrid(Sender).Cells [ACol,ARow],CSVal);
    case CSVal of
      1 : begin Font.Color := clRed; CSText := 'offline'; end;
      2 : begin Font.Color := clGreen; CSText := 'online'; end;
      3 : begin Font.Color := clGreen; CSText := 'Projekt'; end;
      else begin Font.Color := clBlack; CSText := 'inaktiv'; end;
      end;
    tw := TextWidth (CSText);
    th := TextHeight (CSText);
    tx := (Rect.right - Rect.Left - tw) div 2;
    ty := (Rect.bottom - Rect.Top - th) div 2;
    TextRect (Rect,Rect.Left + tx,Rect.top + ty,CSText);
    end;
if (ACol = 4) and (ARow > 0) then
  {...}
(in der 3. Spalte wird statt des Zellinhalts 0..3 ein farbiger Text angezeigt)

Gruss Reinhard

peace 30. Sep 2007 15:15

Re: Panelschrägkanten farbig? + Frage zu DrawGrid
 
Danke für die schnellen und hilfreichen Antworten. Die Variante mit OwnerDraw alles selbst zu zeichnen ist mir für mein Projekt zu aufwendig und ich müsste erst einmal schauen, wie das so richtig funktioniert. Ich suche erst einmal nach einer VCL und schaue danach inwieweit ich mit dem Codebeispiel mein DrawGrid-Problem lösen kann.

mfg peace


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz