AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi in TStringgrid nur erste Zeile mit fettem Text
Thema durchsuchen
Ansicht
Themen-Optionen

in TStringgrid nur erste Zeile mit fettem Text

Ein Thema von toko · begonnen am 27. Apr 2005 · letzter Beitrag vom 28. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
toko

Registriert seit: 19. Apr 2005
40 Beiträge
 
#1

in TStringgrid nur erste Zeile mit fettem Text

  Alt 27. Apr 2005, 18:21
Hallo,

Ich habe ein TStringGrid welches ich zur Laufzeit mit Daten fülle. Die Spaltenbeschriftung möchte ich aber bereits beim Ereignis "FormCreate" darstellen. Um Diese von den restlichen Einträgeb hervozuheben, suche eine Möglichkeit die erste Zeile im fetter Schrift darzustellen.

Mit "Canvas.Font.Style := [fsBold]" setze ich den gesammten Text.

Muss das eventuell im OnDrawCell-Ereignis des TStringgrids gemacht werden?

Bin für jede Hilfe dankbar!
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: in TStringgrid nur erste Zeile mit fettem Text

  Alt 27. Apr 2005, 18:41
Hallo,
dann musst Du im Event OnDrawCell den Zellinhalt selber zeichnen.
In der OH steht sogar ein Beispiel.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: in TStringgrid nur erste Zeile mit fettem Text

  Alt 27. Apr 2005, 18:43
genau so siehts aus. Wie wäre es mit if StringGrid.Row <= StringGrid.FixedRows then ?
Gruß
Hansa
  Mit Zitat antworten Zitat
toko

Registriert seit: 19. Apr 2005
40 Beiträge
 
#4

Re: in TStringgrid nur erste Zeile mit fettem Text

  Alt 27. Apr 2005, 19:36
vielen Dank, ich probier es nachher mal aus.

mfg
  Mit Zitat antworten Zitat
toko

Registriert seit: 19. Apr 2005
40 Beiträge
 
#5

Re: in TStringgrid nur erste Zeile mit fettem Text

  Alt 28. Apr 2005, 00:02
Hallo,

ich habs gerade mal bei mir ausprobiert. Bei werden alle Texte Fett gezeichnet...

Im FormCreate-Ereignis habe ich FixedRows und RowCount des StringGrids auf 1 gesetzt.
Laut OH ist dass soweit ja auch OK

Zitat:
Stellen Sie FixedRows nicht auf einen größeren Wert als RowCount - 1 ein.
Die oberste Zeile bleibt aber erst stehen, wenn ich RowCount auf zwei setzte. Es erscheinen dann aber immer noch alle Texte fett. Verstehe ich ja auch, denn strgrdCDListe. Row verändert sich erst, wenn man eine Zelle des StringGrid mit der Maus markiert. Ich zeig mal den Code ...

Delphi-Quellcode:
procedure TfrmMain.strgrdCDListeDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  txtcenter,
  txtwidth : integer;
begin
  Label1.Caption := 'strgrdCDListe.Row '+IntToStr(strgrdCDListe.Row); //zur Kontrolle
  Label2.Caption := 'strgrdCDListe.fixedRow '+IntToStr(strgrdCDListe.FixedRows); // zur Kontrolle
  with strgrdCDListe.Canvas do
  begin
    if strgrdCDListe.Row <= strgrdCDListe.FixedRows then
      Font.Style := [fsBold];
    if not Odd(ARow) then
    begin
      // Jede zweite farbig
      Brush.Color := cl3DLight;
      FillRect(Rect);
      TextOut(Rect.Left+2, Rect.Top+2, strgrdCDListe.Cells[ACol,ARow]);
    end;
    // Text zentrieren und ausgeben
    txtwidth := TextWidth(strgrdCDListe.Cells[ACol,ARow]);
    txtcenter := Rect.Left + (Rect.Right - Rect.Left - txtwidth) div 2;
    TextRect(Rect,txtcenter,Rect.Top+2,strgrdCDListe.Cells[ACol,ARow]);
  end;
end;
Wie erkennt das DrawCell-Ereignis denn die Veränderung, ohne den Mausclick ?

Danke im voraus!

PS: Eine Frage nebenher. Gibt es eigentlich noch andere Farben, als die Vordefinierten? Ich bräuchte nämlich ein etwas helleres Grau als das obige cl3DLight.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

Re: in TStringgrid nur erste Zeile mit fettem Text

  Alt 28. Apr 2005, 00:52
Zitat von toko:
PS: Eine Frage nebenher. Gibt es eigentlich noch andere Farben, als die Vordefinierten? Ich bräuchte nämlich ein etwas helleres Grau als das obige cl3DLight.
Klar, du kannst einen beliebigen Hexadezimal-Wert nehmen.
Über den Objektinspektor kannst du im Color Editor eine beliebige Farbe auswählen.
Thomas
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: in TStringgrid nur erste Zeile mit fettem Text

  Alt 28. Apr 2005, 04:50
Die Idee des Hervorhebens mit fett ist schlecht.
Es ergibt sich aehnlich wie beim Control Panel "Software" ein wirklich grausiger Anblick.
Der Grund ist das der Text groesser wird und nun entweder eine groessere Zelle braucht oder nicht reinpasst.
Aber Microsoft macht es vor und die Leute glauben es sei richtig und schoen.
  Mit Zitat antworten Zitat
toko

Registriert seit: 19. Apr 2005
40 Beiträge
 
#8

Re: in TStringgrid nur erste Zeile mit fettem Text

  Alt 28. Apr 2005, 10:17
Hallo,

@Robert Marquardt
die größer werdende Schrift ist kein Problem.
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#9

Re: in TStringgrid nur erste Zeile mit fettem Text

  Alt 28. Apr 2005, 10:46
Hallo,
Zitat von toko:
Hallo,

ich habs gerade mal bei mir ausprobiert. Bei werden alle Texte Fett gezeichnet...
ersetz mal deinen Codeteil:
    if strgrdCDListe.Row <= strgrdCDListe.FixedRows then durch:
if (ARow < strgrdCDListe.Fixedrows) or (ACol < strgrdCDListe.Fixedcols) then dann klappt es.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
toko

Registriert seit: 19. Apr 2005
40 Beiträge
 
#10

Re: in TStringgrid nur erste Zeile mit fettem Text

  Alt 28. Apr 2005, 10:56
Hallo,

@Lannes
Danke, das funktioniert, aber auch nur wenn Rowcount um 1 größer ist als FixedRows.
Dann kommen aber meine ganzen Indezes durcheinander.

Ich habe auch gerade herausgefunden, die fette Schrift über ARow=0 zu setzen ...

Delphi-Quellcode:
procedure TfrmMain.strgrdCDListeDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  txtcenter,
  txtwidth : integer;
begin
  Label1.Caption := 'strgrdCDListe.Row '+IntToStr(strgrdCDListe.Row); //zur Kontrolle
  Label2.Caption := 'strgrdCDListe.fixedRow '+IntToStr(strgrdCDListe.FixedRows); // zur Kontrolle
  with strgrdCDListe.Canvas do
  begin
    if (ARow < strgrdCDListe.Fixedrows) or (ACol < strgrdCDListe.Fixedcols) then
      Font.Style := [fsBold];
   {if ARow=0 then
    begin
      Font.Style := [fsBold];
      Brush.Color := clBtnFace;
    end; }

    if (ARow>1) and not (Odd(ARow)) then
    begin
      // Jede zweite farbig
      Brush.Color := $00EFEFEF;
      FillRect(Rect);
      TextOut(Rect.Left+2, Rect.Top+2, strgrdCDListe.Cells[ACol,ARow]);
    end;
    // Text zentrieren und ausgeben
    txtwidth := TextWidth(strgrdCDListe.Cells[ACol,ARow]);
    txtcenter := Rect.Left + (Rect.Right - Rect.Left - txtwidth) div 2;
    TextRect(Rect,txtcenter,Rect.Top+2,strgrdCDListe.Cells[ACol,ARow]);
  end;
end;
Die erste Zeile bleibt dann aber leider nicht stehen

mfg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 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