AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StrinGrid Feldinhalt wird "Unsichtbar"

Ein Thema von TeronG · begonnen am 9. Aug 2005 · letzter Beitrag vom 10. Aug 2005
Antwort Antwort
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#1

StrinGrid Feldinhalt wird "Unsichtbar"

  Alt 9. Aug 2005, 16:27
Hi also ich habe per folgendem Code meine Stringgridfelder weiß gemacht, und dann den Text mittig gesetzt.

Delphi-Quellcode:
  dy := (Rect.Bottom-Rect.Top-StringGrid1.Canvas.TextHeight(StringGrid1.Cells[ACol, ARow])) div 2;
  dx := (Rect.Right-Rect.Left-StringGrid1.Canvas.TextWidth(StringGrid1.Cells[ACol, ARow])) div 2;

  if (acol = 0) or (arow = 0) then begin
    StringGrid1.Canvas.Brush.Color := clBtnFace;
    StringGrid1.Canvas.FillRect(Rect);
    StringGrid1.Canvas.TextOut(Rect.Left+dx, Rect.Top+dy, StringGrid1.Cells[ACol, ARow]);
  end;

  if (acol = 1) or (acol = 4) or (acol = 5) then begin
    if (arow >0) then begin
      StringGrid1.Canvas.Brush.Color := clWindow;
      StringGrid1.Canvas.FillRect(Rect);
      StringGrid1.Canvas.TextOut(Rect.Left+dx, Rect.Top+dy, StringGrid1.Cells[ACol, ARow]);
    end;
  end;
Wenn ich nun ein Feld markiere und dann das Grid den Focus verliert "verschwindet" der Inhalt.
Normalerweise wird das Feld ja blau und die Schrift weiß da ich die Felder aber im onDraw selbst bepinselt habe scheint nur die Schrift weiß (also unsichtbar) zu werden ... (nicht alle Felder sind weis hab auch rote/grüne aber da könnt ich damit leben)
hat jemand ne Ahnung, wie ich das umgehen kann

Wenn ich den Inhalt auch ohne das OnDraw-Bepinseln Zentrieren könnte könnte ich bei den weißen Feldern auch darauf verzichten und hätte dann das Problem nicht mehr aber wie ???
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: StrinGrid Feldinhalt wird "Unsichtbar"

  Alt 9. Aug 2005, 18:20
Hallo

du kannst entweder den State abfragen und auf gdselected prüfen, ob die Zelle selektiert ist. Statt clwindow dann clhighlight als Füllfarbe setzen . Wenn du keine Selektion anzeigen möchtest, dann setzt doch einfach die Schriftfarbe
  canvas.font.color:=clwindowtext; da du die Schriftfarbe nicht setzt, ist sie clhighlighttext und diese ist je nach Einstellung u.U. weiß und du siehst nix.

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: StrinGrid Feldinhalt wird "Unsichtbar"

  Alt 9. Aug 2005, 18:42
Moin,

und das würde z.B. so aussehen...

Delphi-Quellcode:
  with Sender as TStringGrid do begin
    dy := (Rect.Bottom-Rect.Top-Canvas.TextHeight(Cells[ACol, ARow])) div 2;
    dx := (Rect.Right-Rect.Left-Canvas.TextWidth(Cells[ACol, ARow])) div 2;

    if (acol = 0) or (arow = 0) then begin
      Canvas.Brush.Color := clBtnFace;
      Canvas.FillRect(Rect);
      Canvas.TextOut(Rect.Left+dx, Rect.Top+dy, Cells[ACol, ARow]);
    end
    else begin
      if gdFocused in State then begin
        //Markierter Bereich
      end
      else if gdSelected in State then begin
        Canvas.Brush.Color := clHighlight;
        Canvas.Font.Color:=clWindow;
      end
      else begin
        Canvas.Brush.Color := clWindow;
      end;

      Canvas.FillRect(Rect);
      Canvas.TextOut(Rect.Left+dx, Rect.Top+dy, Cells[ACol, ARow]);
    end;
  end;
MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#4

Re: StrinGrid Feldinhalt wird "Unsichtbar"

  Alt 10. Aug 2005, 09:24


Zitat von Keldorn:
Wenn du keine Selektion anzeigen möchtest, dann setzt doch einfach die Schriftfarbe
  canvas.font.color:=clwindowtext; da du die Schriftfarbe nicht setzt, ist sie clhighlighttext und diese ist je nach Einstellung u.U. weiß und du siehst nix.
Klappt einwandfrei. (nein ich mag euch nich an die Regeln verweisen )

Und falls mal was markiert werden muss kann ich ja immer noch die Abfrage einbauen.
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:28 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