DBGrid Zelleninhalt als Mouseover Hilfe anzeigen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

DBGrid Zelleninhalt als Mouseover Hilfe anzeigen

Beitrag von DL3AD »

Hallo

in einem DBGrid sind ist die Spaltenbreite fest definiert(soll auch so bleiben)
Nun kommt es aber manchmal vor dass der Zelleninhalt nicht vollständig lesbar ist weil der Text zu lang ist.
Ging es eine Möglichkeit den Zelleninhalt bei Mouseover - so wie bei einer Mouseoverhilfe anzeigen zu lassen ? oder muss man dass extra programmieren.

Gruß Frank

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: DBGrid Zelleninhalt als Mouseover Hilfe anzeigen

Beitrag von gladio »

Teste doch mal OnGetCellHint (Objektinspektor-Eigenschaften)

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: DBGrid Zelleninhalt als Mouseover Hilfe anzeigen

Beitrag von DL3AD »

Hallo gladio,

unter Eigenschaften ist es nicht zu finden - nur unter Events
Wie verwende ich "OnGetCellHint" ? - muss ich noch andere Eigenschaften setzen ?

Kannst du mir eine kleines Beispiel geben ?

Danke
Gruß Frank

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: DBGrid Zelleninhalt als Mouseover Hilfe anzeigen

Beitrag von theo »

Es gibt noch die Option "dgCellHints"

http://lazarus-ccr.sourceforge.net/docs ... ption.html

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: DBGrid Zelleninhalt als Mouseover Hilfe anzeigen

Beitrag von gladio »

DL3AD hat geschrieben:Hallo gladio,

Kannst du mir eine kleines Beispiel geben ?


Kann ich nicht.
Ich dachte mir, du testet das durch und dann kann ich was lernen. :D

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: DBGrid Zelleninhalt als Mouseover Hilfe anzeigen

Beitrag von DL3AD »

... du bist aber gemein :mrgreen:

So habe ich es gemacht

Code: Alles auswählen

//Wenn Country nicht in die Zelle passt - Anzeige als Hint
procedure TForm1.DBGrid_QSOGetCellHint(Sender: TObject; Column: TColumn;
  var AText: String);
begin
  If Length(ZQueryLog.FieldByName('Country').AsString) > 20 then
  begin
    AText:= ZQueryLog.FieldByName('Country').AsString;
  end;
end;   


Gruß Frank

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: DBGrid Zelleninhalt als Mouseover Hilfe anzeigen

Beitrag von gladio »

Mußte ein weilchen suchen:
ShowHint vom DBGrid muß true sein
und bei 'Options' muß dgCellHints auch True sein.

Das Hint ist aber nicht auf die Spalte/Zelle beschränkt ?

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: DBGrid Zelleninhalt als Mouseover Hilfe anzeigen

Beitrag von DL3AD »

... Ja, das Hint gilt für die aktive Zeile.
Da ich nur eine beschnittene Spalte habe ist es so OK für meine Anwendung.
Vieleicht kennt jemand ja noch ne andere Lösung - bzw man muss halt extended Coden. 8)

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

Re: DBGrid Zelleninhalt als Mouseover Hilfe anzeigen

Beitrag von wp_xyz »

DL3AD hat geschrieben:Vieleicht kennt jemand ja noch ne andere Lösung - bzw man muss halt extended Coden. 8)

Was ist denn da "extended"? Es sind doch nur die paar Zeilen, die oben gezeigt sind...

Wenn du lieber klicken willst: es gibt (natürlich) auch eine eingebaute Methode mit Hilfe der DBGrid-Option dgTruncCellHints: das nimmt den Zellinhalt und zeigt ihn als Hint an, wenn der Text nicht in die Zelle passt. Die von dir verwendete Option dgCellHint ist eher dafür gedacht, sich einen speziellen Hint-Text zusammenzubasteln, der vielleicht auch noch andere Informationen enthält. Der Text wird dabei durch das Ereignis OnGetCellText übermittelt. Das Ereignis wurde ursprünglich nur für dgCellHints aufgerufen, es macht aber genauso Sinn für die Option dgTrunCellHints. Daher habe ich eben eine entsprechende Erweiterung für Laz-Trunk hochgeladen.

Da das wahrscheinlich immer wieder zu Verwirrung führt (ich musste selbst einiges herumprobieren, bis mir diese Lösung wieder einfiel), habe ich im Wiki einen Abschnitt über die Hints geschrieben (http://wiki.lazarus.freepascal.org/Grid ... Cell_hints).

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: DBGrid Zelleninhalt als Mouseover Hilfe anzeigen

Beitrag von DL3AD »

... Danke für den Tip mit dgTruncCellHints - genau soetwas hatte ich gesucht.

Antworten