Autor Beitrag
hRb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 301
Erhaltene Danke: 12



BeitragVerfasst: Sa 15.11.25 23:34 
Hallo zusammen
Ich habe eine Anwendung mit Stringgrid und 0..3 Spalten. Spalte 1 und 3 soll Text aufnehmen mit z.Teil sehr langen Strings > 150 Zeichen. Ich kann mit einigen Tricks erreichen, dass der horizontale Stringbar sichtbar wird. Aber dies verschiebt nur das gesamte Gitter. Ich hätte gerne einen Scrollbar für Spalte 1 und einen für Spalte 3. Dabei meine ich nicht die Möglichkeit mit der Maus die Spalte breiter oder schmäler zu machen um alles zu sehen (Option goColMoving).
Geht so etwas überhaupt bzw. wie wäre ein Ansatz?
hRb

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4803
Erhaltene Danke: 1060

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 16.11.25 10:06 
Das wird nur mit einem eigenen StringGrid funktionieren, d.h. den SourceCode des TStringGrid (aus dem VCl-SourceCode in der Datei "grids.pas") abändern.

Evtl. funktioniert aber, wenn du das OnSelectCell-Ereignis (dein anderes Thema!) benutzt und dann an der aktuellen Zellposition ein eigenes Text-Control darüber mit Scrollbar anzeigst? Mußt nur schauen, daß du dann auch die passenden Ereignisse zum Verstecken implementierst, z.B. OnLostFocus.
hRb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 301
Erhaltene Danke: 12



BeitragVerfasst: Mo 17.11.25 17:59 
Hmm, hatte auf eine einfache Lösung gehofft.
Embarcadero liefert das Programm BCompareLight. Dort sah ich zwei Scrollbar in Spalten. Habe eine ähnliche Aufgabe und vergleiche Listen. Bin mir aber nicht sicher, ob bei BCompareLight ein StringGrid oder mehrere synchronisierte Richedit zum Einsatz kommen. Eine Lösung mit Richedit habe ich probeweise realisert. Allerdings gelingt mir dort das Einfärben des Hintergrundes nur über die echt vorhandenen Zeichen und nicht, wie beim StrinGrid, über das Gitter der Zelle.
Das geht im Grid recht einfach
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  with StringGrid.Canvas do
  begin
    Brush.Color := clr;
    FillRect(Rect);
    TextRect(Rect, Rect.Left+3,Rect.Top+2, StringGrid.Cells[ACol,ARow]);
    .....

hRb