| Autor |
Beitrag |
Andi1982
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Sa 27.11.04 16:33
Hallo,
ich habe ein DBGrid welches 7 Spalten hat. 6 Spalten davon fülle ich mit meinem SQL, aber die erste spalte will ich selber füllen. Darin soll in der ersten zeile eine 1, in der zweiten eine 2 und in der dritten eine 3 usw. stehen.
Aber ich habe nichts gefunden wie ich den spalten selbst werte zuweißen kann. Geht das überhaupt im DBGrid?
Gruß Andreas Moderiert von Klabautermann: Topic aus VCL (Visual Component Library) verschoben am Sa 27.11.2004 um 17:11
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Sa 27.11.04 17:11
Hallo,
nicht mit dem DBGrit aber mit dem tQuery Objekt. Du kannst bei diesem nämlich AutoCalcFields definieren. Hierzu setzt du am besten in der DELPHI IDE dein Query auf Active, dann klickst du das tQuery Objkt Doppelt. Es öffnet sich nun ein Editot, in die leere Liste klickst du mit rechts und wählst Alle Felder hinzufügen dammit alle Felder die vom Query Selektiert wurden, auch angezeigt werden. Dann klickst du erneut rechst in diese List und wählst Neues Feld Im nun erscheinenden Dialog Musst da Namen Feld und ähnlich Eigenschaften festlegen. Außerdem musst du unter Feldtyp den Typ Berechnet Wählen. Jetzt musst du das Feld nur noch füllen, was du im Ereignis OnCalcFields machen kannst. Zu guter letzt solltest du noch kontrollieren ob die Eigenschaft AutoCalcFields auf True Steht, dammit dieses Ereignis auch ausgelöst wird.
Gruß
Klabautermann
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Sa 27.11.04 17:17
Ergänzend möchte ich erwähnen, dass viele Datenbank ein solches sogenanntes "AutoInc"-Feld schon mitbringen.
Um das rauszukriegen, müsste man wissen, was für eine Datenbank zu nutzt, dann kann man den schnellsten / besten Weg dorthin beschreiben
ki
|
|
Andi1982 
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Sa 27.11.04 17:31
Das autoinc bringt mir nichts, ich starte einen sql der nach einer bestimmten spalte sortiert. Um genau zu sein ist das ein programm das eine Platzierungsliste für sportschützen erstellt. und wer jetzt ganz oben ist, ist auch auf platz eins.
werd mal schauen ob ich das mit dem query hinbekomme
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Sa 27.11.04 17:38
du musst also dynamisch die Zeilen neu durchnummerieren, sobald sich die Reihenfolge ändert? folgender Vorschlag: Links neben dem Grid Labels, denen du statisch die Zahlen zuweist? Wär das was?
Oder vielleicht hilft dir die Eigenschaft "RECORDNO" weiter, anhand derer du ja zur Laufzeit die Nummer des aktuellen Datensatzes erfährst. Ich glaube aber der ändert sich nicht relativ zur Sortierung, sondern ist immer fest. Wär aber ne Variante. Den in das OnPaint-Ereignis des Grids, und fertig ist die Wurst.
ki
|
|
Dave_Bowman
      
Beiträge: 30
|
Verfasst: Sa 27.11.04 19:53
zu kiwicht:
OnPaint bei einem TDBGrid? Gibt's leider nicht. Habe auch das Problem, ich möchte in einem DBGrid abhängig vom Inhalt in einem Feld z.B. die Hintergrundfarbe der Zeile ändern. Geht sowas? Wenn ja, kann jemand ein kurzes Codefragment als Beispiel bringen? Ich weiß leider nicht mal, in welches Ereignis das muss. OnDrawColumnCell?
Vielen Dank ...
Dave
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Sa 27.11.04 20:16
Sorry, ich meinte OnDraw.
Dazu gabs hier auch irgendwo mal n Tut...
//EDIT
OnDrawColumnCell!
Da wars, und dort z.B. folgendes (so siehts bei mir aus):
Delphi-Quelltext 1: 2: 3: 4: 5:
| If ((Query.RecNo mod 2) = 0) then begin grid.Canvas.Brush.Color := clSkyBlue; grid.DefaultDrawColumnCell(Rect, 0, Column, State); end; |
Das kannst du auch beliebig erweitern. Z.b. Anstatt Query.RecNo Query.FieldByName('feld').AsString um den Wert abzufragen und entsprechend deine Zeile zu "färben" 
|
|
Dave_Bowman
      
Beiträge: 30
|
Verfasst: Sa 27.11.04 21:32
Hallo kiwicht,
vielen Dank, das ist genau das, was ich suchte! Habe gerade mal ein wenig rumprobiert, damit kann man ja einiges machen. Ich dachte, sowas geht gar nicht in einem DataGrid. Danke nochmal!
Dave
|
|
|