AGB  ·  Datenschutz  ·  Impressum  







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

StringGrid Zellen Markierung

Ein Thema von Blechwolf · begonnen am 4. Nov 2003 · letzter Beitrag vom 30. Nov 2003
Antwort Antwort
Seite 1 von 2  1 2      
Blechwolf

Registriert seit: 9. Sep 2003
Ort: Aachen
126 Beiträge
 
Delphi 7 Professional
 
#1

StringGrid Zellen Markierung

  Alt 4. Nov 2003, 14:37
Salut,

ich habe da mal ne Frage...
Ich habe eine Tabelle (ein String Grid), in das Werte-Paare eingefügt werden. In einer Spalte die X-Werte, in der nächsten Spalte dann die Y-Werte.

Ich will nun, wenn ich einen X-Wert auswähle auch automatisch den entsprechenden Y-Wert auswählen bzw. wenn ich auf den Y-Wert klicke, auch automatisch den entsprechenden X-Wert ausgewählt bekommen.

Mein StringGrid hat die Eigenschaft goRangeselect auf True gesetzt bekommen, und die OnSelectCell sieht wie folgt aus:

Delphi-Quellcode:
procedure TFrmSeries.SGValueTableSelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var
  myRect : TGridRect;
begin
  if ACol mod 2 = 0 then
    begin
      myRect.Left := ACol;
      myRect.Right := ACol+1;
    end
  else
    begin
      myRect.Left := ACol-1;
      myRect.Right := ACol;
    end;

  myRect.Top := ARow;
  myRect.Bottom := ARow;

  SGValueTable.Selection := myRect;
  
  // Alles 3 ausprobiert, hilft nix
// SGValueTable.Update();
// SGValueTable.Refresh();
// SGValueTable.Repaint();
end;
In den Spalten mit den geraden Nummern (0,2,4,...) stehen die X-Werte drin in den anderen die Y-Werte. Deswegen zuerst die Abfrage wo ich bin, und dementsprechend wird dann myRect gefüllt.

Nur irgendwie zeigt der mir nicht die Markierung an, die ich haben will, sondern eben weiterhin die einzelne Zelle.
Hat jemand ne Idee ??

Grüße

Wolf
Ein Schiff im Hafen ist sicher. Aber dafür werden Schiffe nicht gebaut. (engl. Sprichwort)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#2

Re: StringGrid Zellen Markierung

  Alt 4. Nov 2003, 14:48
Hast du auch in der Eigenschaft SGValueTable.Options goRangeSelect auf True gesetzt?
Sonnst kannst du immer nur eine Zelle auf einmal auswählen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Blechwolf

Registriert seit: 9. Sep 2003
Ort: Aachen
126 Beiträge
 
Delphi 7 Professional
 
#3

Re: StringGrid Zellen Markierung

  Alt 4. Nov 2003, 14:51
Zitat von Blechwolf:
[...schnipp...]
Mein StringGrid hat die Eigenschaft goRangeselect auf True gesetzt bekommen, und die OnSelectCell sieht wie folgt aus:
[...schnipp...]
Wer lesen kann ist manchmal klar im Vorteil, auch wenn oft die Zeit dazu fehlt ;o)
Nicht böse sein...
Ein Schiff im Hafen ist sicher. Aber dafür werden Schiffe nicht gebaut. (engl. Sprichwort)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#4

Re: StringGrid Zellen Markierung

  Alt 4. Nov 2003, 15:48
Ich vermute mal das durch OnSelectCell deine Zuweisung danach wieder überschrieben wird.
Wenn das Ganze aber in OnClick verschoben wird, geht es.

Delphi-Quellcode:
{SGValueTable / OnClick}
Procedure TForm1.SGValueTableClick(Sender: TObject);
  Var myRect: TGridRect;

  Begin
    If SGValueTable.Selection.Left mod 2 = 0 Then Begin
      myRect.Left := SGValueTable.Selection.Left;
      myRect.Right := SGValueTable.Selection.Left + 1;
    End Else Begin
      myRect.Left := SGValueTable.Selection.Left - 1;
      myRect.Right := SGValueTable.Selection.Left;
    End;
    myRect.Top := SGValueTable.Selection.Top;
    myRect.Bottom := SGValueTable.Selection.Top;
    SGValueTable.Selection := myRect;
  End;

{oder etwas kleiner}

Procedure TForm1.SGValueTableClick(Sender: TObject);
  Begin
    SGValueTable.Selection := TGridRect(Rect(
      SGValueTable.Selection.Left div 2 * 2, SGValueTable.Selection.Top,
      SGValueTable.Selection.Left div 2 * 2 + 1, SGValueTable.Selection.Top));
  End;
Bei einer Zuweisung auf Selection wird die letzte Zelle in der Markierung (unten/rechts) aktiviert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Blechwolf

Registriert seit: 9. Sep 2003
Ort: Aachen
126 Beiträge
 
Delphi 7 Professional
 
#5

Re: StringGrid Zellen Markierung

  Alt 4. Nov 2003, 15:56
Super, das funktioniert, wenn auch etwas zeitverzögert )
Aber zumindest schonmal deutlich besser als vorher !!

Bedankt
Grüße
Wolf
Ein Schiff im Hafen ist sicher. Aber dafür werden Schiffe nicht gebaut. (engl. Sprichwort)
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#6

Re: StringGrid Zellen Markierung

  Alt 4. Nov 2003, 17:13
Die Eigenschaft goRowSelect sollte genau das bewirken, was du willst.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Blechwolf

Registriert seit: 9. Sep 2003
Ort: Aachen
126 Beiträge
 
Delphi 7 Professional
 
#7

Re: StringGrid Zellen Markierung

  Alt 7. Nov 2003, 12:34
Zitat von Niko:
Die Eigenschaft goRowSelect sollte genau das bewirken, was du willst.
Leider nicht, da ich ja evtl. mehrere Datenreihen in der Tabelle drin habe.
Also X1 Y1 X2 Y2 X3 Y3 etc.
und goRowSelect bewirkt daß dann ALLE Werte in der entsprechenden Zeile ausgewählt werden. Ich will aber halt nur die zwei X1 Y1 bzw. X2 Y2 etc. haben.
Wie gesagt, die Lösung die hier präsentiert wurde ist schon nicht so verkehrt.

Grüße

Wolf
Ein Schiff im Hafen ist sicher. Aber dafür werden Schiffe nicht gebaut. (engl. Sprichwort)
  Mit Zitat antworten Zitat
Benutzerbild von thawka
thawka

Registriert seit: 29. Nov 2003
Ort: im Norden...
8 Beiträge
 
#8

aktuell ausgewählte Zeile in Statusbar anzeigen

  Alt 29. Nov 2003, 22:12
Habe auch ein kleines Problem mit der Markierung in einem StringGrid:
Ich möchte in einer Statusbar die aktuell ausgewähle Zeile anzeigen lassen, und zwar als Nummer. Also wenn man z. B. Zeile 5 von 10 auswählt, soll unten "Zeile 5 ausgewählt" stehen. Wenn man eine andere auswählt, dann diese entsprechend. Bei der Listbox weiß ich es, da hab ich Listbox.ItemIndex genommen. Aber bei StringGrid weiß ich nicht, wie es funktionieren soll. Habe auch in anderen Informationsquellen nichts dazu gefunden. Kann mir jemand helfen?

Danke im Voraus
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: StringGrid Zellen Markierung

  Alt 30. Nov 2003, 00:32
Moin Thawka,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Schau Dir doch mal die Ereignisse des StringGrids an, und deren Parameter.
Damit müsstest Du eigentlich die Lösung finden können.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von thawka
thawka

Registriert seit: 29. Nov 2003
Ort: im Norden...
8 Beiträge
 
#10

Re: StringGrid Zellen Markierung

  Alt 30. Nov 2003, 10:47
Vielen Dank für die Begrüßung!
Ich hab mir die Ereignisse mal näher angeschaut, aber nichts relevantes gefunden ... Die Ereignisse "OnRowMoved" und "OnSelectCell" kamen für mich näher in Betracht, halfen aber auch nicht. Aber ich hab bei Google einen Hinweis gefunden, daß die Ausgabe der aktiven Zeile eventl. mit Row & Col festgestellt werden kann, nur weiß ich nicht, wie das gehen soll?

Dankeschön im Voraus für hilfreiche Hinweise
  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 06:40 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