AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi StringGrid bei klick auf eine bestimme zelle sortieren
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid bei klick auf eine bestimme zelle sortieren

Ein Thema von dopeline · begonnen am 9. Jan 2004 · letzter Beitrag vom 10. Jan 2004
Antwort Antwort
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#1

StringGrid bei klick auf eine bestimme zelle sortieren

  Alt 9. Jan 2004, 15:17
hi!

wenn ich auf den spaltenkopf des stringgrids klicke soll diese spalte ähnlich einer listbox sortiert werden. den algorithmus zum sortieren habe ich schon:
Delphi-Quellcode:
procedure SortStringGrid(var GenStrGrid: TStringGrid; ThatCol: Integer);
const
  TheSeparator = '@';
var
  CountItem, I, J, K, ThePosition: integer;
  MyList: TStringList;
  MyString, TempString: string;
begin
  CountItem := GenStrGrid.RowCount;
  MyList := TStringList.Create;
  MyList.Sorted := False;
  try
    begin
      for I := 1 to (CountItem - 1) do
        MyList.Add(GenStrGrid.Rows[I].Strings[ThatCol] + TheSeparator +
          GenStrGrid.Rows[I].Text);
      Mylist.Sort;

      for K := 1 to Mylist.Count do
      begin
        MyString := MyList.Strings[(K - 1)];
        ThePosition := Pos(TheSeparator, MyString);
        TempString := '';
        TempString := Copy(MyString, (ThePosition + 1), Length(MyString));
        MyList.Strings[(K - 1)] := '';
        MyList.Strings[(K - 1)] := TempString;
      end;

      for J := 1 to (CountItem - 1) do
        GenStrGrid.Rows[J].Text := MyList.Strings[(J - 1)];
    end;
  finally
    MyList.Free;
  end;
end;
und hier der aufruf. (befehl zum sortieren): SortStringGrid(StringGrid1, 0); hier wird jetzt spalte 0 sortiert. das klappt auch wunderbar. ich weiß nur nicht, wohin ich den befehl schreiben muss, damit bei nem klick auf den spaltenkopf diese spalte sortiert wird....


Gruß, dopeline
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: StringGrid bei klick auf eine bestimme zelle sortieren

  Alt 10. Jan 2004, 08:55
Hallo

Klicks (onclick) auf die fixierten Zellen bekommst du nicht mit, kannst aber bei onmousedown/up mit Stringgrid mousetocell ermitteln, in welcher Zelle die mausgedrückt wurde. Dann kannst du bei einem Klick in die 0.Reihe die ermittelte Spalte deiner proc übergeben.

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: StringGrid bei klick auf eine bestimme zelle sortieren

  Alt 10. Jan 2004, 10:23
Danke! Das funktioniert:
Delphi-Quellcode:
procedure TFormHaupt.SGPMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Column, Row: Longint;
begin
SGP.MouseToCell(x,y,Column,Row);
SortStringGrid(SGP, Column);
end;
(SGP ist der Name des StringGrids.)

Gruß, dopeline
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: StringGrid bei klick auf eine bestimme zelle sortieren

  Alt 10. Jan 2004, 11:24
würd ich nicht so machen

Delphi-Quellcode:
procedure TFormHaupt.SGPMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Column, Row: integer;
begin
  SGP.MouseToCell(x,y,Column,Row);
  if (row=0) and (column<>-1) then SortStringGrid(SGP, Column);
end;
damit du nur klicks auf 1. Reihe=Spaltenüberschrift auswertest und Colums auf <>-1 testen. Sonst landest du in einer schönen AV, wenn der User in einen Bereich klickt, wo keine Zelle ist. thatcol wird in der Sortierproc nicht überprüft, ob es in einem gültigen Bereich liegt.

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: StringGrid bei klick auf eine bestimme zelle sortieren

  Alt 10. Jan 2004, 12:36
hey vielen dank!
das erspart später viel zeit bei der möglichen fehlersuche...

ich habe noch eine klitzekleine frage:
meine hints von buttons usw. werden in einer statusbar des hauptformulars im panel 0 angezeigt:
(deklariert unter public)
Delphi-Quellcode:
procedure TFormHaupt.DisplayHint(Sender: TObject);
begin
 StatusBar1.Panels[0].Text := GetLongHint(Application.Hint);
end;
ich habe auf einem modalen formular auch eine statusbar. wie kann ich ihm sagen, dass er alle hints auf diesem formular nicht in der statusleiste des hauptformulars anzeigt, sondern in dem forumlar, wo auch die buttons mit den hints sind?

Gruß, dopeline
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: StringGrid bei klick auf eine bestimme zelle sortieren

  Alt 10. Jan 2004, 13:41
Zitat von dopeline:
ich habe noch eine klitzekleine frage:
das hat jetzt aber überhaupt nix mehr mit deiner ursprünglichen Frage zu tun. Mach da mal lieber nen neuen Thread auf.

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz