Autor Beitrag
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Sa 09.06.07 22:04 
Hallo!

Ich habe zwei kleine Probleme mit dem StringGrid:

1)

Ich nutze diesen Code um im StringGrid zu sortieren. Das klappt auch schon ganz gut.

Ich rufe den Code im OnClick-Ereignis der StringGrid auf und zwar wie folgt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
If (StringGrid1.Col=1And (StringGrid1.Row=0)
Then SortStringGrid(StringGrid1, 1Else
If (StringGrid1.Col=2And (StringGrid1.Row=0)
Then SortStringGrid(StringGrid1, 2)


Das funktioniert auch ganz gut, solange die erste Zeile der StringGrid nicht fixiert ist. Wie kann ich es einstellen, dass dies auch bei fixierten Zellen funktioniert?

2)

Wie muss ich den Code aus dem oben genannten Link verändern, damit die Zahlen nicht aufsteigend sondern absteigend sortiert werden?

MfG

Terra23

PS: Weiß jemand auch noch, wie ich eine Zelle im StringGrid mit dem Summenzeichen füllen kann?

_________________
Hasta La Victoria Siempre
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Sa 09.06.07 22:41 
ausblenden Delphi-Quelltext
1:
for i := 1 to max do					


ersetzen durch :

ausblenden Delphi-Quelltext
1:
for i := max downto 1 do					

_________________
Gruß
Hansa
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Sa 09.06.07 23:24 
Hi!

Danke für die Antwort aber leider funktioniert das nicht. Egal wo ich den Code in

ausblenden Delphi-Quelltext
1:
For I:=Max DownTo 1					


ändere, wird das StringGrid immer aufsteigend sortiert.

Das ist eigentlich auch verständlich, denn die Liste wird ja meiner bescheidenen Meinung nach mit dem Code

ausblenden Delphi-Quelltext
1:
MyList.Sort					


sortiert, oder? Also war der Tipp nicht so sehr hilfreich...

_________________
Hasta La Victoria Siempre


Zuletzt bearbeitet von Terra23 am So 10.06.07 13:28, insgesamt 1-mal bearbeitet
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: So 10.06.07 01:35 
user profile iconTerra23 hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
MyList.Sort					


sortiert. Also war der Tipp nicht so sehr hilfreich...


Du willst eine Komplettlösung ? Von mir wird die nicht kommen. Die Schweizer haben drei for-schleifen. Die Delphi-Hilfe sagt noch einiges und das müsste reichen. 8)

_________________
Gruß
Hansa
zongo-joe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 134

win xp prof
D3, D4, D7
BeitragVerfasst: So 10.06.07 11:55 
Falls Du absteigend sortieren willst, sollte eigentlich reichen, wenn Du in der Procedure SortStringGrid folgende Zeilen änderst:

ausblenden Delphi-Quelltext
1:
2:
3:
      // Refill the StringGrid
      for J := 1 to (CountItem - 1do
        GenStrGrid.Rows[[b]GenStrGrid.rowcount-J+1[/b]].Text := MyList.Strings[(J - 1)];


dann wird die sortierte Stringlist halt nur andersrum in das Grid eingetragen.

Zongo-Joe

P.S: die Bemerkung
Zitat:
Also war der Tipp nicht so sehr hilfreich...
war wirklich nicht sehr charmant ! Kein Wunder wenn Hansa etwas frostig reagiert.
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: So 10.06.07 13:27 
@Hansa: Nein, eine Komplettlösung wollte ich von dir nicht. Allerdings habe ich es probiert, alle drei Schleifen zu verändern und es funktionierte nicht.

Der Satz, dass der Tipp nicht so ganz hilfreich war, war aber auch nicht so böse gemeint, wie er hier aufgefasst wurde. Das sollte lediglich bedeuten, dass ich dankbar für deinen Tipp war / bin, er mir jetzt aber nicht geholfen hat, da ich nicht so recht weiß, wie ich ihn umsetzen soll.

@Zongo: Das die Veränderung beim erneuten Füllen des StringGrids vorgenommen werden muss, war mir schlussendlich nach einigem Probieren auch klar. Allerdings wusste ich nicht, wie ich diese Veränderung mit dem Tipp von Hansa realisieren soll. Aber auch für dich gilt: Das war Hansa gegenüber nicht böse gemeint (s. oben).

@Beide: Danke für eure Hilfe. Wenn ich Zeit habe, werde ich das mal probieren und das Ergebnis hier posten. Und seht nicht alles so schwarz. Das nächste Mal hänge ich ein ;) oder so dahinter, damit ihr alle seht, dass es nicht böse gemeint war.

MfG

Terra

_________________
Hasta La Victoria Siempre
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: So 10.06.07 15:29 
So, ich habe nun mit eurer Hilfe das Problem lösen können:

Der Code sieht bei mir nun so aus:

ausblenden Delphi-Quelltext
1:
2:
For J := (CountItem-1Downto 1 Do
        GenStrGrid.Rows[GenStrGrid.Rowcount-J].Text := MyList.Strings[(J - 1)];


@Hansa: Deinen Tipp habe ich nun doch realisieren können. Vielen Dank dafür.

@Zongo: Wenn ich deinen Code nutze, also:

ausblenden Delphi-Quelltext
1:
2:
For J := (CountItem-1Downto 1 Do
        GenStrGrid.Rows[GenStrGrid.Rowcount-J+1].Text := MyList.Strings[(J - 1)];


dann funktioniert das Sortieren zwar auch, allerdings wird immer der Eintrag des StringGrids, der in der zweiten Zeile steht, kopiert und in die Liste eingefügt. Wenn ich das "+1" nun entferne, komme ich auf das richtige Ergebnis.

Vielen Dank aber auch für deine Hilfe.

Nun habe ich nur noch das Problem, dass der Klick auf die Zelle nicht realisiert werden kann, wenn die Zelle fixed ist.

Kann mir da vielleicht jemand auf die Sprünge helfen? Die Suche hat nicht wirklich befriedigende Ergebnisse geliefert, was aber auch an mir liegen kann. ;)

MfG

Terra

_________________
Hasta La Victoria Siempre
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: So 10.06.07 16:10 
Das andere Problem (Klick registrieren auch bei fixen Zellen) habe ich nun auch gelöst.

Wen es interessiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var pt: TPoint; acol, arow: Integer;
begin
  pt:=StringGrid1.ScreenToClient(Mouse.CursorPos);
  StringGrid1.MouseToCell(pt.X,pt.Y,acol,arow);
  If (acol=1And (arow=0Then SortStringGrid(StringGrid1, 1);
end;


Damit sind meine Probleme nun gelöst.

Vielen Dank allen Leuten (Hansa und Zongo) für die Hilfe.


MfG

Terra23

_________________
Hasta La Victoria Siempre
MonniTucker
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Do 09.02.12 11:56 
user profile iconTerra23 hat folgendes geschrieben Zum zitierten Posting springen:
Das andere Problem (Klick registrieren auch bei fixen Zellen) habe ich nun auch gelöst.

Wen es interessiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var pt: TPoint; acol, arow: Integer;
begin
  pt:=StringGrid1.ScreenToClient(Mouse.CursorPos);
  StringGrid1.MouseToCell(pt.X,pt.Y,acol,arow);
  If (acol=1And (arow=0Then SortStringGrid(StringGrid1, 1);
end;


Damit sind meine Probleme nun gelöst.

Vielen Dank allen Leuten (Hansa und Zongo) für die Hilfe.


MfG

Terra23



Vielen Dank für den Tip, ihr habt mir damit wieder einmal sehr geholfen!