Autor Beitrag
Tendl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Di 10.08.04 14:51 
In meinem Programm soll eine Maus-Aktion zB. ein Click auf eine Zeile eines Listviews in einem Stringgrid dann ebenfalls eine bestimmte Zeile selektieren. Mein Problem ist ganz trivial:
Ich weiß ich möchte die 2.Zeile im Stringgrid selektieren, aber die property selection ist readonly. Wie kann ich aber genau diese Property anders setzen?
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Di 10.08.04 15:19 
Hallo,

seit wann ist Selection in einem StringGrid readonly?
Wenn Du in der Delphi-Hilfe unter Selection nachgeschaut hättest, würdest Du wissen, wie man eine Zelle markiert. Dort gibt es sogar ein Beispiel dazu.

Sollte Dir dies nicht genügen, so würde ich einmal die Suche hier im Forum bemühen.

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
Tendl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Di 10.08.04 15:33 
Nicht ganz so herablassend wäre manchmal besser.

Konkret:

Die Zeile
ausblenden Delphi-Quelltext
1:
      stringgrid1.Selection.Top:=1;					

führt zur Fehlermeldung des Compilers:
Left side cannot be assigned

Wie ich das mit dem Beispiel in der Hilfe vereinbaren kann ist
mir nicht klar.

Über die Eigenschaften row und Col kann ich genau ein Feld selektieren, ich brauche aber die ganze Zeile.

Vielen Dank im Voraus für Eure Hilfe
Thomas

PS. Keine Frage ist so dumm, dass nicht andere ebenfalls fragen würden.
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Di 10.08.04 15:55 
Hallo,

das hat mit herablassend nichts zu tun. Ich verstehe nicht wo das Problem liegt. Wie bereits oben erwähnt, ist in der Delphi-Hilfe ein Beispiel, wie man die Eigenschaft Selection benutzt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
// Die folgenden Angaben setzten vorraus, dass FixedCols und FixedRows auf 1 steht;
// Das Grid hat 4 Spalten
// Es wird die 2. Zeile komplett markiert
procedure TForm1.Button1Click(Sender: TObject);
var myRect: TGridRect;
begin
  myRect.Left:=1;   // --> entspricht Zelle links
  myRect.Top:=2;    // --> entspricht Zelle oben
  myRect.Right:=3;  // --> entspricht Zelle rechts
  myRect.Bottom:=2// --> entspricht Zelle unten

  MyGrid.Selection := myRect;
end;

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 10.08.04 18:28 
@smiegel: Manchmal wäre es auch sinnvoll, zu erklären, warum etwas nicht funktioniert.

Tendl hat folgendes geschrieben:
Die Zeile
ausblenden Delphi-Quelltext
1:
      stringgrid1.Selection.Top:=1;					

führt zur Fehlermeldung des Compilers:
Left side cannot be assigned

Wie ich das mit dem Beispiel in der Hilfe vereinbaren kann ist
mir nicht klar.


Liegt daran, dass Selection eine Property vom StringGrid ist. Die hat eine read und eine write-Methode, allerdings haben die Member von Selection dies nicht (da es ein Record ist), also muss man immer gleich alles auf einmal setzen. Das gleiche ists zum Beispiel bei TMemo.CaretPos.
Tendl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Mi 11.08.04 11:03 
Danke,

jetzt habe ich kapiert wo das Problem liegt oder vielmehr lag.
Workarounds sind schon in Ordnung, aber eigentlich möchte ich verstehen wárum ich sie brauche.

Thomas