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
 
Benutzerbild von leddl
leddl

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

Re: StringGrid -> Eine Zelle zweifarbig, oder halbfarbig

  Alt 25. Okt 2007, 12:37
Zitat von HolgerCW:
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 ?
Das war der Grund, warum ich dir nicht einfach Quellcode hingeschmissen habe wie shmia, sondern dir den Gedankengang klarzumachen. Du brauchst auch die Prozedur, die shmia vorschlägt nicht unbedingt. Wichtig ist nur, dass du eben - anstatt nur ein Rechteck in einer Farbe zu zeichen - das Rechteck in 2 Teile aufspaltest und beide separat zeichnest. Mehr steckt nicht dahinter!
Wie du die aufspaltest, bleibt dabei natürlich dir überlassen, ob du horizontal oder vertikal halbierst oder eine andere Aufteilung wählst ist dabei völlig egal.

Um jetzt dann vielleicht doch mal mit Code um mich zu schmeissen:
Delphi-Quellcode:
Var RectA, RectB : TRect;
Begin
[...]

//neue Rechtecke erstellen, jeweils halb so breit wie das ursprüngliche Rechteck (Rect)
//Bei RectA ist die rechte Seite halb so weit weg wie bei Rect
RectA := Classes.Rect(Rect.Left,Rect.Top, Rect.Right div 2 ,Rect.Bottom);
//RectB beginnt einen Pixel neben der rechten Kante von RectA
RectB := Classes.Rect( RectA.Right+1 ,Rect.Top,Rect.Right,Rect.Bottom);

//Zeichne RectA
Canvas.Brush.Color := clRed;
Canvas.FillRect(RectA);
//Zeichne RectB
Canvas.Brush.Color := clGreen;
Canvas.FillRect(RectB);
//Text ausgeben
Canvas.Brush.Color := clClear;
Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);

[...]
Ich hoffe, ich hab jetzt keine Fehler reingebaut... hab hier leider kein Delphi zur Hand, um es zu überprüfen. Soweit ich mich erinnere, erwartet Classes.Rect die linke obere und die rechte untere Koordinate des Rechtecks. (Evtl. mal in die Hilfe schauen und die Parameter in die richtige Reihenfolge bringen, falls da was nicht stimmt.)

Um vielleicht auch da nochmal einen Hintergrund zu geben (ich hoffe, ich erzähle keinen Blödsinn, hab nämlich wie gesagt kein Delphi zur Hand, um es zu überprüfen ): TRect ist ein Record, in dem die 4 Seiten des Rechtecks gespeichert sind.
Mit der Funktion Rect aus der Unit Classes kannst du aus 2 Punkten (und damit 4 Ordinaten) ein TRect erstellen. In dem Code habe ich die Unit vor den Funktionsnamen geschrieben, weil es sonst evtl. zu Komplikationen mit der Variablen "Rect" geben könnte.
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
 


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 22:39 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