Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Hint in DBGrid anzeigen (https://www.delphipraxis.net/30886-hint-dbgrid-anzeigen.html)

etom291272 30. Sep 2004 19:39


Hint in DBGrid anzeigen
 
hallo zusammen

habe mir jetzt mehrere Stunden in der OH und in einigen Foren die Augen nach vollgender Lösung
wundgesucht.
In einem DBGrid zeige ich eine Liste aller Rechnungen an (Datenquelle ist Sql Server
mit BetterAdoDataset) in der ersten Spalte steht welche Art von Dokument das ist (zb. Ausgangsrechnung, Gutschrift, Interne Lieferung ...).
in dieser Spalte werden je nach Feldinhalt der ersten Spalte des DBGrids unterschiedliche
Icons für die diversen Belegarten angezeigt [bis hierher kein Problem :mrgreen: ]
Aber ich möchte wenn die Maus auf dieser Spalte (also dem Icon parkt) einen Hint anzeigen wo die
Belegart im Klartext steht.

Hat irgend jemand einen Lösungsansatz bei einer bestimmten Spalte im DBGrid einen dynamischen
Datenabhängigen Hint anzuzeigen :wall: :wall: :wall:
Danke schon mal im vorraus

Sharky 30. Sep 2004 20:48

Re: Hint in DBGrid anzeigen
 
Hai etom291272,

wie zeigst Du denn das Icon im DBGrid an? Wenn man "auslesen" könnte welches Icon unter dem Cursor ist wäre das anzeigen eines Hints sicher nicht das große Problem.

etom291272 30. Sep 2004 21:40

Re: Hint in DBGrid anzeigen
 
Also mit folgendem Eventhandler wird statt des Datenbankfeldes ein entsprechendes Icon angezeigt
Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var Icon: TBitmap;
begin
Icon:=TBitmap.Create;
if (Column.FieldName='SHARES' ) then begin  
with DBGrid1.Canvas do begin
Brush.Color:=clWhite;
FillRect(Rect);
if (Table1.FieldByName('SHARES').Value>4500)  
then
ImageList1.GetBitmap(1,Icon)
else
ImageList1.GetBitmap(0,Icon);
Draw(round((Rect.Left+Rect.Right-Icon.Width)/2),Rect.Top,Icon);
end;
end;
p.s mich würde auch interessieren wie das bei einem normalen DbGrid Feld funktioniert und ich möchte nicht auf 3.Komponenten von anderen Herstellern ausweichen. Habe das TMS Components Pro mit deren ADVDBStringGrid liese sich das leicht realisieren. Ich kann auch über kein Stringgrid gehen da das Dataset über 200.000 Records fassen kann und das laden des StringGrid warscheinlich viel länger dauert als mit einem DbGrid (die Sätze sind notwendig - sind alle Belege einen grossen Firma der letzten 10 Jahre)
:wiejetzt:
für jeden lösungsansatz bin ich dankbar :coder2:

Memo 30. Sep 2004 22:18

Re: Hint in DBGrid anzeigen
 
Zitat:

Hat irgend jemand einen Lösungsansatz bei einer bestimmten Spalte im DBGrid einen dynamischen Datenabhängigen Hint anzuzeigen
Ein Ansatz, leider auch nicht mehr.

etom291272 30. Sep 2004 22:37

Re: Hint in DBGrid anzeigen
 
Danke für den Link hab ihn mir durchgelesen und bin dabei auf ein noch viel grösseres Problem gekommen. wenn der dbgrid angenommen 30 Zeilen hat und die aktive Zeile die 3. ist und der benutzer angenommen in der 20. zeile auf das icon fährt und da dann der hint angezeigt werden soll gibt es keine möglichkeit an die daten die im feld sind in zeile 20 zu kommen da ja die 3. zeile die aktive ist (oder liege ich da falsch) :warn:
:gruebel: :?: :gruebel:

Memo 30. Sep 2004 22:40

Re: Hint in DBGrid anzeigen
 
Noch ein Ansatz. Ich schau mir das morgen (auch aus Eigennutz) mal an.
Das Wichtige bei der Sache ist imho nicht das Anzeigen selber, das bekommt man durch Satzverschiebung und merken der vorher,nacher- Position noch hin. Die optischen Nebenwirkungen störender.

Memo 30. Sep 2004 22:44

Re: Hint in DBGrid anzeigen
 
Ups. Dazwischen gepostet.
Zitat:

Zitat von etom291272
wenn der dbgrid angenommen 30 Zeilen hat und die aktive Zeile die 3. ist und der benutzer angenommen in der 20. zeile auf das icon fährt und da dann der hint angezeigt werden soll gibt es keine möglichkeit an die daten die im feld sind in zeile 20 zu kommen da ja die 3. zeile die aktive ist (oder liege ich da falsch) :warn:
:gruebel: :?: :gruebel:

Jein. Das ist lösbar. Probier mal den Ansatz von DragonsLear. Es entstehen leider Nebeneffekte(optisch). Mal schaun ob man es mit Link 2 in den Griff bekommt.

etom291272 1. Okt 2004 13:38

Re: Hint in DBGrid anzeigen
 
:coder:
na schon was gefunden ?

Memo 1. Okt 2004 14:20

Re: Hint in DBGrid anzeigen
 
Zitat:

Zitat von etom291272
na schon was gefunden ?

..na und selbst? :-D
Aber nein, ich habe bis jetzt auch noch nichts zufriedenstellendes gefunden. Ich hatte zwar eine SMDBGid-Kompo. am Wickel die Hints anzeigen kann, musste aber bei genauerer Betrachtung feststellen, dass die auch nur den Satzzeiger auf die Stelle im Grid setzt, wo sich die Maus befindet und einen Hint des aktuellen Datenfeldes ausgibt.
Der Tip aus dem 2.Link war ebendfalls eine Sackgasse.
Und was hast du in der Zeit so unternommen?

etom291272 1. Okt 2004 14:28

Re: Hint in DBGrid anzeigen
 
:oops:
hatte bis jetzt keine Zeit mich mit dem problem weiter zu beschäftigen da ich für ein projekt eine
ziemliche Aufwendige Netzwerkkonfiguration mit Fortigate Firewall und Isa Server vorbereiten muss

bin aber gestern noch auf eine Komponente gestossen die vielversprechend aussieht
X-DBGrid Component Standard 3.3D (Delphi)
TXDBGrid, TXDBColumnsDialog
ShareIt Program ID: 190431


wie gesagt würde es gerne ohne 3. komponente lösen.

werde auch heute noch herrn ua kontaktieren war bei ihm auf einem mehrtägigen individualtrainung was mir sehr viel gebracht hat. werde posten was da rausgekommen ist
:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr.
Seite 1 von 2  1 2   

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