[gelöst] TDBGrid Column mit Ellipsis/Button

Rund um die LCL und andere Komponenten
Antworten
charlytango
Beiträge: 813
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz 2.2.6
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

[gelöst] TDBGrid Column mit Ellipsis/Button

Beitrag von charlytango »

Hi,

in einer DBGrid-Column wird eine kombinierte Information angezeigt (sagen wir mal ein Namenskonstrukt mit Titel, Vornamen, Nachnamen etc) das keinesfalls editierbar sein soll.
Jetzt sollen aber zusatzinformationen zu dem Namen angezeigt werden (da gibt es mehrere pro Zeile).
Eine Variante wäre einen Button in der Spalte anzeigen zu lassen (ButtonStyle:= cbsEllipsis). damit ist wäre klar welches Feld ausgesucht wurde.

Leider bekomme ich das nicht so hin dass der Ellipsis Button auch angezeigt wird wenn das Feld bzw die Zeile ReadOnly ist. An sich verständlich weil es ja ein "Editor" ist und wnn es nix zu editieren gibt wird der Button auch nicht angezeigt.

Irgend eine Idee wie das trotzdem geht oder ein anderer Lösungsansatz ?

THX
Zuletzt geändert von charlytango am Di 20. Jun 2023, 09:19, insgesamt 2-mal geändert.

wp_xyz
Beiträge: 4781
Registriert: Fr 8. Apr 2011, 09:01

Re: TDBGrid Column mit Ellipsis

Beitrag von wp_xyz »

Was beim Klicken des Ellipsis-Buttons passieren soll, steht in deinem eigenen Code. Normalerweise öffnet da ein von dir geschriebenes Dialogfenster, in dem die zu bearbeitenden Felder enthalten sind. Zeige dort doch einfach die unveränderlichen Felder nur als Labels oder als Read-Only-Edits an, die veränderbaren dagegen als normal Edits. Es ist nicht verboten, in dem Dialog Informationen aus anderen Spalten zu verwenden.

charlytango
Beiträge: 813
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz 2.2.6
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TDBGrid Column mit Ellipsis

Beitrag von charlytango »

wp_xyz hat geschrieben:
So 18. Jun 2023, 15:57
Was beim Klicken des Ellipsis-Buttons passieren soll, steht in deinem eigenen Code.
Das hab ich gefunden und ausprobiert. Klappt wunderbar.
Aber das war nicht das Problem.

Der Ellipsis-Button wird nicht angezeigt wenn das Feld im Grid ReadOnly ist.

charlytango
Beiträge: 813
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz 2.2.6
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TDBGrid Column mit Ellipsis

Beitrag von charlytango »

@wp_xyz: Hab mir dein Grid-Coloring ausgeborgt und dort in der ersten Spalte einen EllipsisButton eingestellt und dann die Spalte auf ReadOnly gesetzt.
Der Ellipsis-Button wird nicht mehr angezeigt (offenbar weil das Feld nicht mehr in den Edit-Modus gehen kann)

Ich suche eine Möglichkeit in der ich Zeile und Spalte eines Feldes (eben durch einfaches Drücken eines Buttons durch den User) identifizieren kann.

Meinetwegen lasse ich das Feld editierbar -- aber wie verhindere ich dass der User es wirklich ändern kann bzw ich den alten Wert zurücksetze?
Dateianhänge
project1.zip
(3.48 KiB) 25-mal heruntergeladen

wp_xyz
Beiträge: 4781
Registriert: Fr 8. Apr 2011, 09:01

Re: TDBGrid Column mit Ellipsis

Beitrag von wp_xyz »

OK - ich hab' den ButtonEditor mit dem EllipsisEditor verwechselt. Während man beim EllipsisEditor immer noch normal in der Zelle editieren kann, ist das beim ButtonEditor nur noch mit Hilfe des aufgerufenen Dialogs möglich. Also: die Spalte NICHT auf read-only setzen, und den ButtonStyle auf cbsButton statt auf cbsEllipsis.

Code: Alles auswählen

  DBGrid1.Columns.Clear;
  with TColumn(DBGrid1.Columns.Add) do
  begin
    fieldname := 'Name';
    Title.Caption := 'Name';
    Width:=230;
    ButtonStyle:= cbsButton; //cbsEllipsis;
    //ReadOnly:=true;
  end;  

charlytango
Beiträge: 813
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz 2.2.6
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TDBGrid Column mit Ellipsis

Beitrag von charlytango »

Danke -- in deinem Beispiel klappt das -- in meinem Grid nicht -- da hab ich noch irgendwas in meiner Panik falsch eingestellt.

Etwas sportlichen Ehrgeiz stecke ich da noch rein, sonst kommt der neu ggg

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6117
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TDBGrid Column mit Ellipsis

Beitrag von af0815 »

charlytango hat geschrieben:
Mo 19. Jun 2023, 23:24
Danke -- in deinem Beispiel klappt das -- in meinem Grid nicht -- da hab ich noch irgendwas in meiner Panik falsch eingestellt.

Etwas sportlichen Ehrgeiz stecke ich da noch rein, sonst kommt der neu ggg
Die lfm ist lesbarer Text, daher kann man sich aus den beiden lfm's jeweils die Definition für das Grid herauskopieren und vergleichen. Da in der lfm nur die Abweichung zum Standard gespeichert ist, ist das meistens nicht soviel Text.

Nur so als Anmerkung.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

charlytango
Beiträge: 813
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz 2.2.6
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: [gelöst] TDBGrid Column mit Ellipsis

Beitrag von charlytango »

Danke für die Anregung -- oft sieht man den Wald vor lauter Bäumen nicht.

Diesmal wars leichter. Es musste nur die Editierbarkeit der Felder wieder eingeschaltet werden

Code: Alles auswählen

DBGrid1.dgEditing:=true;
DBGrid1.dgRowSelect:=false;
klappt soweit, danke.Jetzt muss ich nur noch raus bekommen welcher meiner 5 Buttons nun gedrückt wurde ;-)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6117
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: [gelöst] TDBGrid Column mit Ellipsis

Beitrag von af0815 »

charlytango hat geschrieben:
Di 20. Jun 2023, 06:56
klappt soweit, danke.Jetzt muss ich nur noch raus bekommen welcher meiner 5 Buttons nun gedrückt wurde ;-)
(Fast) Jedes in Lazarus vorhandene Objekt hat die Eigenschaft Tag. Die nutze ich gerne für die Unterscheidung (, oder den Sendernamen).

Auch nur als Anmerkung um den Wald hinter den Bäumen vorzulocken.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten