Autor Beitrag
Andi1982
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: 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 user profile iconKlabautermann: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: 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):

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: 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