String Grid

Ich habe in einem Form 3 Stringgrids eingefügt. Eines davon besitz eine Scrollbar vertikal. Alle Stringgrids haben die gleiche Anzahl Zeilen etc. Wenn der Benutzer nun mit der Scrollbar nach unten fährt, sollten die anderen zwei Stringgrids auch mitscrollen.

Gibt es dazu eine Möglichkeit ?

Du könntest beim MouseDown, MouseMove oder MouseUp die TopRow abfragen und bei den anderen beiden StringGrids setzen.
Gruß Thomas

Okay…danke das klappt schonmal.Jetzt ist aber noch das Problem, dass wenn ich z.B. einfach nur mit der Scrollbar rauf und runter fahre, dass dann weder dass MouseUp, MouseDown oder MouseMove - Event ausgeführt wird. Kann ich für die Scrollbar auch irgendwie sowas machen ?

Du kannst die Scrollbars entfernen (property ScrollBar = None) und einen separaten ScrollBar für alle Boxen benutzen. Dort kannst du das OnScroll-Ereignis abfragen.

Niels

naja… aber da habe ich grad wieder ein problem…

bei der scrollbar kann ich ja einen min und maxwer angeben… soll der dann die anzahl zeilen oder einfach die gesamte zeilenhöhe beinhalten ?

ich habe schonmal sowas versucht…ist aber relativ mühsam…

Ich weiss ja nicht was du als muehsam Bezeichnest, dein Problem ist doch recht einfach zu loesen:

ScrollBar.Min := StringGrid.FixedRows;
ScrollBar.Max := StringGrid.RowCount - + FixedRows + 1;

(Diese Einstellungen muessen natürlich bei Änderungen an der StringGridGroesse neu berechnet werden, aber das schreibt man halt einmal in eine Prozedur!)

Im OnScroll-Ereignis:

StringGrid.TopRow := ScrollBox.Position;

Niels

String Grid #2
Ich habe die drei Stringgrids wie folgt angeordnet:

lstring.align = Left
mstring.align = client
rstring.align = right

nun habe ich die scrollbar vertikal eingefügt. Bei der Vergrösserung (vollbild) wird die scrollbar dann auch richtig angepasst… wenn ich aber dann das form wieder verkleinere, bleibt die scrollbar gleich gross und somit die stringgrids auch, da sie sich ja an der form.height orientieren. Wie kann ich dem abhelfen ?

Du musst die ScrollBar natürlich auch noch alignen:

ScrollBar.align := alRight;

Niels

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Nur schade, dass die scrollbar eben keine .align eigenschaft bietet !!!

Aber noch grad ne andere frage…

wie kann ich mit den zwei werten X und Y eine einzelne zelle markieren ???

mit was für einer Delphi-Version arbeitest du eigentlich?

Ohh, Hoppla, ich sehe gerade,dass Delphi 3 noch keine ScrollBar mi align hat.

Kein wunder dass mir Deine Fragen so einfach erscheinen (Sorry!!)

Wirst dir wohl Delphi 4 kaufen müssen!!

Oder, hmmm, lässt sich mit Form.OnResize nichts hindeichseln?

Col := X;
Row := Y;

wenn do Options.goDrawFocusSelected = true setzt, erscheint die Zelle blau.

Niels