AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi StringGrid -> Eine Zelle zweifarbig, oder halbfarbig ?
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid -> Eine Zelle zweifarbig, oder halbfarbig ?

Ein Thema von HolgerCW · begonnen am 25. Okt 2007 · letzter Beitrag vom 25. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2      
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

StringGrid -> Eine Zelle zweifarbig, oder halbfarbig ?

  Alt 25. Okt 2007, 11:37
Hallo zusammen,

wie kann ich eine Zelle zweifarbig, oder nur die hälfte andersfarbig machen ?

So mache ich zur Zeit eine ganze Zelle andersfarbig:

Delphi-Quellcode:
Canvas.Brush.Color := clSilver;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
Gruss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: StringGrid -> Eine Zelle zweifarbig, oder halbfarbig

  Alt 25. Okt 2007, 11:41
Zitat von HolgerCW:
wie kann ich eine Zelle zweifarbig, oder nur die hälfte andersfarbig machen ?
Na schau dir den Code doch mal an... Du füllst ein Rechteck mit deiner ausgewählten Farbe. Wie kannst du dieses Rechteck denn jetzt wohl mit 2 Farben füllen?
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: StringGrid -> Eine Zelle zweifarbig, oder halbfarbig

  Alt 25. Okt 2007, 11:43
Wenn ich Rect.Left+2 auf z.B. 200 ändere passiert nichts ?

Wo muss ich da ansetzen ?

Gruss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#4

Re: StringGrid -> Eine Zelle zweifarbig, oder halbfarbig

  Alt 25. Okt 2007, 11:45
Zitat von HolgerCW:
Wenn ich Rect.Left+2 auf z.B. 200 ändere passiert nichts ?
Was hat denn jetzt die Zeile mit der Textausgabe (TextOut sollte eigentlich selbsterklärend sein...) damit zu tun? Du willst doch die Zellenfarbe ändern, oder? Dann musst du natürlich auch in der entsprechenden Zeile (Canvas.FillRect(Rect); ) ansetzen...
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#5

Re: StringGrid -> Eine Zelle zweifarbig, oder halbfarbig

  Alt 25. Okt 2007, 11:53
Aber ich kann doch vorher nur eine Farbe angeben, oder ?

So:
Canvas.Brush.Color := clSilver; Wie gebe ich jetzt zwei Farben an ?

... und was kann man hier denn ändern:
Canvas.FillRect(Rect) Gruss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#6

Re: StringGrid -> Eine Zelle zweifarbig, oder halbfarbig

  Alt 25. Okt 2007, 11:57
Zitat von HolgerCW:
Aber ich kann doch vorher nur eine Farbe angeben, oder ?
Für einen Zeichenvorgang? Jepp, klar.
Zitat von HolgerCW:
Wie gebe ich jetzt zwei Farben an ?
Na stell dir mal vor, du malst das ganze auf nem Blatt Papier. Wie malst du da ein 2-farbiges Rechteck? Richtig, du nimmst den roten Stift und malst die eine Hälfte in Rot. Dann legst du den roten Stift weg, nimmst den grünen Stift und malst die zweite Hälfte des Rechtecks in Grün. Und genau das gleiche musst du hier auch machen
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: StringGrid -> Eine Zelle zweifarbig, oder halbfarbig

  Alt 25. Okt 2007, 11:58
Du brauchst eine Procedure zum halbieren eines Rechtecks.
Delphi-Quellcode:
// Rect ist das Eingabe Rechteck
// RectA und RectB sind die Ausgaberechtecke
procedure HalfRectVertical(const Rect:TRect; var RectA, RectB:TRect);
Und hier jetzt die Herausforderung an dich:
schreibe die procedure HalfRectVertical und HalfRectHorizontal und ab in die Code-Library.

Und später:
Delphi-Quellcode:
HalfRectVertical(Rect, RectA, RectB);
Canvas.Brush.Color := clSilver;
Canvas.FillRect(RectA);
Canvas.Brush.Color := clGreen;
Canvas.FillRect(RectB);
// der Text wird weiterhin auf dem Gesamtrechteck ausgegeben
Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
Andreas
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#8

Re: StringGrid -> Eine Zelle zweifarbig, oder halbfarbig

  Alt 25. Okt 2007, 12:08
Danke für die Hilfen,

aber ich glaube Ihr habt mich auf dem Gewissen. Wenn einer wie ich schon so blöde Fragen stellt, wie soll er dann so eine Aufgabe lösen ?

Kann es sein das die procedure erst einmal eine function sein muss wo das Rect rein geht und das Result RectA und RectB ist.

Habe bei diesem Rect echt keinen Ansatz. Hilfe !!!

Gruss

Holger
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: StringGrid -> Eine Zelle zweifarbig, oder halbfarbig

  Alt 25. Okt 2007, 12:10
Hallo,

eine kleine Ergänzung:

Delphi-Quellcode:
HalfRectVertical(Rect, RectA, RectB);
Canvas.Brush.Color := clSilver;
Canvas.FillRect(RectA);
Canvas.Brush.Color := clGreen;
Canvas.FillRect(RectB);
Canvas.Brush.Style := bsClear; // <--- damit der Text transparent ausgegeben wird
// der Text wird weiterhin auf dem Gesamtrechteck ausgegeben
Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
Gruß Hawkeye
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#10

Re: StringGrid -> Eine Zelle zweifarbig, oder halbfarbig

  Alt 25. Okt 2007, 12:13
Danke,

aber was steckt nun hier für eine Zauberrei dahinter:

HalfRectVertical(Rect, RectA, RectB); Gruss

Holger
  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 08:14 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