Frage zu TTIPropertyGrid

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Benutzeravatar
kpmais
Beiträge: 42
Registriert: Di 26. Mai 2020, 08:51
OS, Lazarus, FPC: Winux (L 2.0.12, FPC 3.2.0; Debian/Win7)
CPU-Target: x86-64
Wohnort: Saarlouis/Saarland

Frage zu TTIPropertyGrid

Beitrag von kpmais »

Hallo, Experten.
Ich stehe vor folgendem Problem.
Wenn ich die Daten für die Items über eine Klasse in das TIObject des Grid's einfüge, werden diese
automatisch alphabetisch sortiert.
Diese Sortierung möchte ich deaktivieren um eine eigene Reihenfolge der Items darzustellen.
Ich finde leider keinen Parameter/Methode, der eine Sortierung ermöglicht bzw. deaktiviert.
Bitte helfe mir jemand auf die Sprünge.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Frage zu TTIPropertyGrid

Beitrag von Michl »

Zur Zeit ist dies nicht vorgesehen. Also ich kann das zwar in Lazarus Trunk einbauen, aber ich weiß nicht, wie dringend so eine eigene Sortierung ist.

Anbei ein Patch, was in objectinspector.pp angepasst werden müsste.

Dann könnte man im eigenem Projekt sowas machen (Beispiel components/rtticontrols/examples/example1):

Code: Alles auswählen

uses  ..., ObjectInspector;
...
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

...

function MyCompareFunc(Item1, Item2: Pointer): Integer;
begin
  // z.B. Sortierung von Z..A
  Result := CompareText(TOIPropertyGridRow(Item2).Name,
                        TOIPropertyGridRow(Item1).Name);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  TIPropertyGrid1.CompareFunc := @MyCompareFunc;
  TIPropertyGrid1.BuildPropertyList;
end;
Dateianhänge
objectinspector.pp.patch
(1.54 KiB) 47-mal heruntergeladen

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Benutzeravatar
kpmais
Beiträge: 42
Registriert: Di 26. Mai 2020, 08:51
OS, Lazarus, FPC: Winux (L 2.0.12, FPC 3.2.0; Debian/Win7)
CPU-Target: x86-64
Wohnort: Saarlouis/Saarland

Re: Frage zu TTIPropertyGrid

Beitrag von kpmais »

Da ich nichts bei der Recherche gefunden hatte dachte ich mir das schon in etwa.
Vielen Dank für den Hinweis und den Patch.
Ich werde mich darin einarbeiten.
Danke nochmals ...

Klaus-Peter ....

Antworten