Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Cursor auf StringGrid-Celle setzen
hRb - Di 12.04.16 22:03
Titel: Cursor auf StringGrid-Celle setzen
Ich habe ein StringGrid-Objekt, bei dem der Anwender per ButtonClick eine Zeile nach oben bzw. nach unten verschieben kann. Geschieht dies, dann ist der Cursor nicht mehr sichtbar. Wie kann ich den Cursor wieder sichtbar machen und auf eine Celle[col,row] setzen?
Gerd Kayser - Mi 13.04.16 00:30
hRb hat folgendes geschrieben : |
Wie kann ich den Cursor wieder sichtbar machen und auf eine Celle[col,row] setzen? |
Man kann bei einem StringGrid Row, Col, LeftCol, TopRow abfragen und ihnen neue Werte zuweisen.
Beispiel:
Delphi-Quelltext
1: 2: 3: 4:
| StringGrid1.Col := StringGrid1.Col + 2; StringGrid1.Row := StringGrid1.Row + 3; Label1.Caption := IntToStr(StringGrid1.LeftCol); Label2.Caption := IntToStr(StringGrid1.TopRow); |
hRb - Mi 13.04.16 23:48
Danke, mit den ersten zwei Anweisungen setzt man den Focus tatsächlich auf eine bestimmte Zelle. Allerdings wird hierdurch der Cursor noch nicht sichtbar. Aber auch dieses "Problem" habe ich inzwischen gefunden/gelöst. Verschiebt man die Zeilen mittels einer Procedure-ButtonClick, so wechselt der Focus natürlich zum Button. Daher muss am Ende noch der Aufruf StringGrid1.SetFocus stehen.
Nachstehend ein funktionsfähiges Beispiel
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| Procedure TForm2.ZeileAbClick(Sender: TObject);
Var i,j : integer; s : string; begin with StringGrid1 do begin if ((Row>-1) and (Row<RowCount-1)) then begin i:=row+1; for j:= FixedCols to ColCount-1 do begin s:=Cells[j,row]; Cells[j,row]:=Cells[j,i]; Cells[j,i]:=s; end; Row := Row + 1; end; SetFocus; end; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!