![]() |
StringGrid Zellen Markierung
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:
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.
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; 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 |
Re: StringGrid Zellen Markierung
Hast du auch in der Eigenschaft SGValueTable.Options goRangeSelect auf True gesetzt?
Sonnst kannst du immer nur eine Zelle auf einmal auswählen. |
Re: StringGrid Zellen Markierung
Zitat:
Nicht böse sein... |
Re: StringGrid Zellen Markierung
Ich vermute mal das durch OnSelectCell deine Zuweisung danach wieder überschrieben wird.
Wenn das Ganze aber in OnClick verschoben wird, geht es.
Delphi-Quellcode:
:warn: Bei einer Zuweisung auf Selection wird die letzte Zelle in der Markierung (unten/rechts) aktiviert.
{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; |
Re: StringGrid Zellen Markierung
Super, das funktioniert, wenn auch etwas zeitverzögert :o)
Aber zumindest schonmal deutlich besser als vorher !! Bedankt Grüße Wolf |
Re: StringGrid Zellen Markierung
Die Eigenschaft goRowSelect sollte genau das bewirken, was du willst.
|
Re: StringGrid Zellen Markierung
Zitat:
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 |
aktuell ausgewählte Zeile in Statusbar anzeigen
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 :spin: |
Re: StringGrid Zellen Markierung
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. |
Re: StringGrid Zellen Markierung
Vielen Dank für die Begrüßung! :wink:
Ich hab mir die Ereignisse mal näher angeschaut, aber nichts relevantes gefunden :cry:... 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 :angle: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 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