AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Suche Tabellen-VCL mit automatischer Sortierung
Thema durchsuchen
Ansicht
Themen-Optionen

Suche Tabellen-VCL mit automatischer Sortierung

Ein Thema von blackdrake · begonnen am 7. Aug 2008 · letzter Beitrag vom 7. Aug 2008
Antwort Antwort
Seite 2 von 2     12   
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#11

Re: Suche Tabellen-VCL mit automatischer Sortierung

  Alt 7. Aug 2008, 17:12
Hallo.

Vielen Dank! Es funktioniert

Wieso wurde eigentlich dieses Loaded() nicht beim dynamischen Aufruf gestartet, sondern nur im statischen? Ist das ein Bug der Unit?

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#12

Re: Suche Tabellen-VCL mit automatischer Sortierung

  Alt 7. Aug 2008, 17:20
...Mir ist grad noch was eingefallen:

Ich möchte gerne die Liste bereits am Anfang absteigend nach der 2ten Spalte sortieren. Ich finde aber keine derartige Methode in der Unit.

Sollte ich irgendwie einen Column-Klick simulieren oder ist das Murks?

im private Teil steht:

procedure ColumnClick(Sender: TObject; Column: TListColumn); Das in den public verschieben und aufrufen? Dann gäbe es aber auch einen Namenskonflikt mit der property TListView.ColumnClick

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Suche Tabellen-VCL mit automatischer Sortierung

  Alt 7. Aug 2008, 17:29
Wenn ich das in der VCL mache, steht da
Zitat:
Delphi-Quellcode:
procedure TForm1.SortListView1ColumnClick(Sender: TObject; Column: TListColumn);
begin

end;
, das kann man doch wunderbar zuweisen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#14

Re: Suche Tabellen-VCL mit automatischer Sortierung

  Alt 7. Aug 2008, 17:34
Hallo.

Ich denke, du hast es falsch verstanden.

Ich möchte nicht eine Aktion ausführen, wenn die Spalte geklickt wird,

sondern ich möchte im Vorraus (im FormShow, nach dem Füllen der Liste) die Liste nach der 2ten Spalte sortieren. Hierfür müsste ich entweder ein oder zwei Spalten-Klicks simulieren, oder ich verwende irgendeine Routine der Unit.

PS: Als ich von der ColumnClick() sprach, meinte ich die interne private-Prozedur innerhalb der SortListViews.pas . Ich komme aber mit dem ganzen VCL-Quellcode nicht richtig zurecht .

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Suche Tabellen-VCL mit automatischer Sortierung

  Alt 7. Aug 2008, 17:41
Ich meinte, die Kompo führt doch bei Klick auf ein Column selbständig Code aus. Da würde ich mir eine dummy-Methode schreiben und dem Event OnColumnClick der Kompo zuweisen. Diese dummy-Methode kannst Du doch dann aufrufen.

[edit] Vertippsler [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#16

Re: Suche Tabellen-VCL mit automatischer Sortierung

  Alt 7. Aug 2008, 17:52
Hallo.

Ich habe gerade folgendes hinbekommen:

Delphi-Quellcode:
public
    procedure Sort(ColumnIndex: integer); overload; // Extended
    procedure Sort(ColumnIndex: integer; ASC: boolean); overload; // Extended

// Extended
procedure TSortListView.Sort(ColumnIndex: integer);
begin
  ColumnClick(self, Columns[ColumnIndex]);
end;

// Extended
procedure TSortListView.Sort(ColumnIndex: integer; ASC: boolean);
begin
  LastSortAsc := not ASC;
  ColumnClick(self, Columns[ColumnIndex]);
end;
Die erste Variante von Sort scheint wunderbar zu klappen.

Die zweite Variante von Sort hat mit ASC funktioniert, hat aber aus irgendeinem Grund Probleme mit DESC.

Wenn ich den Test-Button das erste Mal klicke, wird nach ASC sortiert, erst nach den weiteren Klicks dauerhaft nach DESC.

*grübel*

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Suche Tabellen-VCL mit automatischer Sortierung

  Alt 7. Aug 2008, 17:56
Hast Du Dir die Methode OnColumnClick der Komponente mal genau angesehen? Da wird abgefragt, ob eine andere Spalte als die gemerkte angeklickt wurde.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#18

Re: Suche Tabellen-VCL mit automatischer Sortierung

  Alt 7. Aug 2008, 18:02
Hallo.

Vielen Dank für deine Hilfe. Das hatte ich übersehen.

Ich habe mal die neue Unit angehängt.

Sie enthält jetzt:
- Den zugreifbaren Loaded() für dynamische Einbindung (vielleicht nicht gerade die eleganteste Lösung?)
- 2 individuelle Sortierfunktionen
- Methode, den Sortierpfeil zu entfernen

Delphi-Quellcode:
// Extended
procedure TSortListView.Sort(ColumnIndex: integer);
begin
  ColumnClick(self, Columns[ColumnIndex]);
end;

// Extended
procedure TSortListView.Sort(ColumnIndex: integer; ASC: boolean);
begin
  if (LastSortIndex <> -1) and (LastSortIndex <> ColumnIndex) then
  begin
    Columns[LastSortIndex].ImageIndex := -1;
  end;
  LastSortIndex := ColumnIndex;
  LastSortAsc := not ASC;
  ColumnClick(self, Columns[ColumnIndex]);
end;

// Extended
procedure TSortListView.HideArrow;
begin
  if (LastSortIndex <> -1) then
  begin
    Columns[LastSortIndex].ImageIndex := -1;
  end;
end;
Gruß
blackdrake

// Edit: Fehler behoben
// Edit 2: Erweiterung
Angehängte Dateien
Dateityp: pas sortlistviews_158.pas (8,4 KB, 5x aufgerufen)
Daniel Marschall
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 20:42 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