Hallo zusammen, das Thema Stringgrid ist nun schon oft diskutiert worden. Eine Lösung zu meinen Problemem habe ich aber noch nicht gefunden: 3 an der Zahl:
1)
Mit dem Event OnSelectCell will ich in der ersten Zeile alle Zellen einzeln markieren oder auswählen können, und mit den Zellen 2-... will ich nur die ganze Zeile markieren können.
In der Form:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TfrmForm1.BlaSelectCell(Sender: TObject; ACol: Integer; ARow: Integer; var CanSelect: Boolean); ... if ARow = 0 then begin sgrQuerSuchErg.Options := sgrQuerSuchErg.Options - [goRowSelect]; end; else begin sgrQuerSuchErg.Options := sgrQuerSuchErg.Options + [goRowSelect]; end; |
Das klappt auch wunderbar. Allerdings wird die Funktion wenn ich eine Zelle in der ersten Spalte anklicke und danach in der zweiten (oder folgenden Zeile) ein zweites mal aufgerufen. So habe ich in der zweiten Zeile auch nur eine Zelle markiert. Klicke ich diese Zeile ein weiteres mal an, wird die komplette Zeile wie erwüncht markiert.
Woher kommt der zweite Aufruf, und wie kann ich ihn verhindern?
2)
Wie kann ich zur Laufzeit weitere Zeilen einfügen? Z.B. Um soviele Zeilen zu erhalten wie Datensätze in DB vorhanden sind?
3)
Wie kann ich ohne mit fixedRows,FixedCols zu arbeiten in der ersten Zeile eines StringGrids die Zellenbreite verändern? Dabei ist zu beachten, dass ich auf die einzelnen Zellen durch einen Mausklick die Spalten sortiern will.
Oder ist es möglich ein Event hinter fixedRows,FixedCols-Zellen zu setzten?
Vielen Dank für eure Antworten,
Mario
Moderiert von
UGrohne: Delphi-Tags eingefügt