AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Stringgridzelle per mouse-click farblich darstellen

Stringgridzelle per mouse-click farblich darstellen

Ein Thema von shine · begonnen am 3. Mai 2003 · letzter Beitrag vom 5. Mai 2003
Antwort Antwort
shine

Registriert seit: 3. Mai 2003
3 Beiträge
 
Delphi 6 Professional
 
#1

Stringgridzelle per mouse-click farblich darstellen

  Alt 3. Mai 2003, 19:34
Hallo,

weiß jemand, wie ich eine Stringgridzelle durch einfachen Mouse-click farblich darstellen kann.


Gruss shine
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 3. Mai 2003, 20:40
Hallo und herzlich Willkommen im Forum!

1. Ich habe den Thread nach VCL-Komponenten verschoben.
2. Es bringt nichts in zwei Sparten zu Posten, daher habe ich den anderen Thread gelöscht, sowas gibts hier nicht!

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#3
  Alt 3. Mai 2003, 20:54
Hi!

Was Besseres fällt mir um die Uhrzeit nicht ein, aber probier's mal hiermit:

Delphi-Quellcode:
var
  grid_x : Integer = -1;
  grid_y : Integer;

implementation

{$R *.dfm}

procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  grid_x:=StringGrid1.MouseCoord(x,y).x;
  grid_y:=StringGrid1.MouseCoord(x,y).y;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if (ACol = grid_x) and (ARow = grid_y) then
  begin
    StringGrid1.Canvas.Brush.Color:=clGreen;
    StringGrid1.Canvas.FillRect(rect);
    StringGrid1.Canvas.TextRect(rect,rect.left+2,rect.top+2,StringGrid1.Cells[Acol,Arow]);
  end else inherited;
end;
MfG,
Peter

[edit=Daniel B]Delphi-Tags gesezt. MfG Daniel B.[/edit]
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
shine

Registriert seit: 3. Mai 2003
3 Beiträge
 
Delphi 6 Professional
 
#4
  Alt 4. Mai 2003, 14:02
Danke Peter,

aber ich möchte mehrere Zellen anklicken/markieren.

Gruss Shine
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#5
  Alt 4. Mai 2003, 17:21
Dann mal so:

Delphi-Quellcode:
var zellen : Array of Array of Boolean; //Genauso viele Elemente wie das StringGrid Zellen hat, muss irgendwo noch init. werden

procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
VAR col, row : Integer;
begin
  col:=StringGrid1.MouseCoord(x,y).x;
  row:=StringGrid1.MouseCoord(x,y).y;
  zellen[col,row]:=not zellen[col,row]; //Achtung, hier musst Du sicher sein, dass das Array auch wirklich so groß ist!
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if zellen[Acol,ARow] then
  begin
    StringGrid1.Canvas.Brush.Color:=clGreen;
    StringGrid1.Canvas.FillRect(rect);
    StringGrid1.Canvas.TextRect(rect,rect.left+2,rect.top+2,StringGrid1.Cells[Acol,Arow]);
  end else inherited;
end;
Probleme bereitet es noch, wenn jemand die Maus in einer Zelle drückt und in einer anderen loslässt. Da müsstest Du noch ein bisschen rumprobieren. Also beispielsweise die Zellen-Koordinaten speichern, in denen gedrückt wurde und im MouseUp-Ereignis schauen, ob es bei den selben Zellen-Koordinaten ausgelöst wird. Dann erst das Array-Element setzen.

MfG,
Peter

@Daniel B: bin aus AUQ die Code-Tags so gewohnt, dass ich sie ohne nachzudenken setze. Delphi-Tags sind cool.
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
shine

Registriert seit: 3. Mai 2003
3 Beiträge
 
Delphi 6 Professional
 
#6
  Alt 5. Mai 2003, 08:45
Danke Peter

Gruss Shine
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:11 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