AGB  ·  Datenschutz  ·  Impressum  







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

kleine Frage zum Stringgrid

Ein Thema von Robb · begonnen am 22. Jul 2004 · letzter Beitrag vom 22. Jul 2004
Antwort Antwort
Robb

Registriert seit: 22. Jul 2004
Ort: pinneberg
4 Beiträge
 
#1

kleine Frage zum Stringgrid

  Alt 22. Jul 2004, 15:11
Hi Leute,

ich bin gerade dabei meine Touringmaschine zuende zu proggen und habe nun ein Problem mit der Visualisierung meiner Simualtion. Ich möchte in meinem stringgrid eine bestimmte Zelle einfärben können und zwar nur eine Zelle, nur irgenwie bin ich noch nicht dahinter gekommen, wie man das möglichst einfach löst.
Vielen Dank schon mal im voraus
mfg Robb
  Mit Zitat antworten Zitat
Benutzerbild von memphis
memphis

Registriert seit: 4. Apr 2003
Ort: Innsbruck
89 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: kleine Frage zum Stringgrid

  Alt 22. Jul 2004, 15:25
hallo

das TStringgrid besitzt ein Event mit dem Namen OnDrawCell. Es wird immer dann ausgelöst, wenn eine Zeile gezeichnet wird. Ihm wird neben den Indexen (für Spalte und Zeile) auch der Bereich der Zelle in Form eines TRect's übergeben.

Folgendes Beispiel füllt die Zelle(1,1) rot.

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if (ACol=1) AND (ARow=1) then
  begin
    StringGrid1.Canvas.Brush.Color := clRed;
    StringGrid1.Canvas.FillRect(Rect);
  end;
end;
Ich hoffe es hilft dir.

MfG
Luki
Lukas
Wenn du nicht mehr weiter weißt, zeichne dir 'nen Einheitskreis.
  Mit Zitat antworten Zitat
Robb

Registriert seit: 22. Jul 2004
Ort: pinneberg
4 Beiträge
 
#3

Re: kleine Frage zum Stringgrid

  Alt 22. Jul 2004, 15:33
naja, soweit schon gar nicht schlecht..., nur jetzt noch eine Frage kann man diese ondraw-ereignis auch abschalten?
  Mit Zitat antworten Zitat
Benutzerbild von memphis
memphis

Registriert seit: 4. Apr 2003
Ort: Innsbruck
89 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: kleine Frage zum Stringgrid

  Alt 22. Jul 2004, 15:43
hallo

In wiefern meinst du abschalten?
dies ist ein Ereignis wie beispielsweise onpaint von TForm und wird immer dann ausgelöst, wenn die Komponente neugezeichnet wird. Wenn du eine Zelle nur zu einem gewissen Zeitpunkt einfärben willst, kannst du dies einfach über eine Status-Variable lösen. Ist sie auf true wird gezeichnet, bei false nicht. Diese Variable musst du dann in die Zellenabfrage miteinbeziehen.

ich hoffe ich hab dich richtig verstanden.

MfG
Luki
Lukas
Wenn du nicht mehr weiter weißt, zeichne dir 'nen Einheitskreis.
  Mit Zitat antworten Zitat
Robb

Registriert seit: 22. Jul 2004
Ort: pinneberg
4 Beiträge
 
#5

Re: kleine Frage zum Stringgrid

  Alt 22. Jul 2004, 15:46
Hmm, also ich habe das mal mit deinem Ansatz versucht nur habe ich jetzt das Problem, das ich auf dem Feld das farbig sein soll auch eine Info habe, die mit angezeigt werden muss und die wird nun von der Farbe überdeckt.
kann man das irgendwie Transparent machen=?
  Mit Zitat antworten Zitat
Benutzerbild von memphis
memphis

Registriert seit: 4. Apr 2003
Ort: Innsbruck
89 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: kleine Frage zum Stringgrid

  Alt 22. Jul 2004, 15:52
hallo

füge einfach nach dem fillRect Befehl noch folgenden Befehl ein, welcher den Text ausgibt:
StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]); Sorry, habe im ersten Ansatz nicht an den Text gedacht...

MfG
Luki
Lukas
Wenn du nicht mehr weiter weißt, zeichne dir 'nen Einheitskreis.
  Mit Zitat antworten Zitat
Robb

Registriert seit: 22. Jul 2004
Ort: pinneberg
4 Beiträge
 
#7

Re: kleine Frage zum Stringgrid

  Alt 22. Jul 2004, 16:05
jojo,

sieht sehr schön aus, nur das ich es nicht hinkriege über die x,y Koordinaten des Textouts das Zeichen genau mittig zu treffen, die x-koordinate ist okay, aber bei der y-koordinate ist das ein wenig verschoben.... und da
ich schon ein paar integer-werte auf die y-koordinate raufgerechnet habe, finde ich einfach nicht die mitte.
Wenn du auch hier eine Antwort wüsstest, dann wäre ich sehr dankbar^^.
willst du ein Tester meines Programms sein^^..., ich brauche noch einige damit ich das Vordiplom auch bekomme^^

mfg Robb
  Mit Zitat antworten Zitat
Benutzerbild von memphis
memphis

Registriert seit: 4. Apr 2003
Ort: Innsbruck
89 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: kleine Frage zum Stringgrid

  Alt 22. Jul 2004, 16:16
hallo

Das TCanvas besitzt auch eine Methode TextHeight bzw. TextWidth welche die Höhe bzw. die Breite des übergebenen Texts liefert. Hiermit ist es nun möglich eine fast exakte Position zu berechnen.

Den Integerwert, den man beispielsweise zu rect.top addiert, müsste folgendermaßen zu berechnen sein:

dy := (Rect.Bottom-Rect.Top-StringGrid1.Canvas.TextHeight(StringGrid1.Cells[ACol, ARow])) div 2; MfG
Luki
Lukas
Wenn du nicht mehr weiter weißt, zeichne dir 'nen Einheitskreis.
  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 20: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