AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

dbgrid select

Ein Thema von nonkonformist · begonnen am 17. Nov 2005 · letzter Beitrag vom 1. Dez 2005
Antwort Antwort
nonkonformist

Registriert seit: 17. Nov 2005
8 Beiträge
 
#1

dbgrid select

  Alt 17. Nov 2005, 08:37
Datenbank: mysql • Zugriff über: odbc
wie kann ich rausfinden welcher datensatz im dbgrid markiert ist?
kein multiselect.
ich müsste wenn ich weis welche zeile markiert is zu einer bestimmten columne springen und die dann auslesen.
bei einem stringgrid mach ich das so:
Code:
x:=grid1.Col;
y:=grid1.Row;

nr := grid1.Cells[7,y];
und das selbe muss ich jetzt in einem dbgrid machen wie geht das?

mfg nonkonformist
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: dbgrid select

  Alt 17. Nov 2005, 08:44
Hai nonkonformist,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS"

Ein DBGrid ist ja immer mit einem TDataSet verbunden (TTable oder TQuery). Diese Haben die Eigenschaft Delphi-Referenz durchsuchenRecNo. In dieser steht immer die Nummer des aktuellen Datensatzes.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: dbgrid select

  Alt 17. Nov 2005, 08:47
Herzlich willkommen in der Delphi-PRAXiS, nonkonformist.

Nochmal mit anderen Worten (moin Sharky).

Auf den selektierten Datensatz im DBGrid greifst du ganz einfach über den DataSet zu:

ShowMessage(DBGrid.DataSource.DataSet.FieldByName(YourFieldName).AsString); Grüße vom marabu
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#4

Re: dbgrid select

  Alt 17. Nov 2005, 08:48
Wenn ein Datensatz im dbgrid markiert ist steht der Datensatzzeiger der Table/Query normal immer schon auf dem markierten Datensatz und du kannst dann einfach mit FieldByName('Feldname') auf den entsprechenden Wert zugreifen.
  Mit Zitat antworten Zitat
nonkonformist

Registriert seit: 17. Nov 2005
8 Beiträge
 
#5

Re: dbgrid select

  Alt 17. Nov 2005, 09:24
Danke jungs geht alles.
hab es mit dem Q_1.fieldbyname().asstring gemacht.

jetzt hab ich nur noch das das prob das selectet nicht gleich selectet is.
also wenn ich mit den courser durchs grid gehe ist das ja kein select sondern nur ein focus.
wie kann ich denn das problem beheben?

mfg nonkonformist
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#6

Re: dbgrid select

  Alt 17. Nov 2005, 09:36
Einfach im DBGrid unter Options Delphi-Referenz durchsuchenRawSelect := True;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
nonkonformist

Registriert seit: 17. Nov 2005
8 Beiträge
 
#7

Re: dbgrid select

  Alt 17. Nov 2005, 09:41
hab rowselect = true
ich kann sie ja selectieren aber wenn ich mim courser durchs grid gehen dann hab ich keinen select auf die zeile sondern nur einen focus
  Mit Zitat antworten Zitat
rainer4you

Registriert seit: 19. Okt 2005
3 Beiträge
 
#8

Re: dbgrid select

  Alt 1. Dez 2005, 11:09
DefaultDrawing:= False; //in den DBGrid-Eigenschaften

Im Ereignis OnDrawColumnCell findest Du dann alles was Du brauchst.

Hie mußt Du den 'State = []' auswerten und zwar beide Ereignisse, 'Selected und Focused'.

Natürlich mußt Du Dich nun selber um das zeichnen der Zelle kümmern.
Im Beispiel setze ich vor den selektierten Datensatz eine Bitmap aus der ToolbarImages,
da ich das Grid als Steuerelement für meine Datenbank benutze.
Ebenso setzt sich die Anzeige aus den Datenfeldern 'Name' und 'Vorname' und einer Einrückung zusammen.

Das ganze hat den zusätzlichen Vorteil das es auch bei gefilterten Datenmengen funktioniert, was über die RecNum
mit einem eingesetzten Filter nicht möglich ist.

Delphi-Quellcode:
procedure TForm1.OnDrawColumnCell(Sender: TDBGrid; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState; MyTable: TADOTable);
var
  MyText : string;
  bmpImage : TBitmap;
begin
    if State = [gdSelected..gdFocused] then
    begin
      bmpImage := TBitmap.create;
      ToolbarImages.GetBitmap(15,bmpImage);
      Sender.Canvas.Font.Style:= [fsBold];
      Sender.Canvas.FillRect(Rect);
      MyText:= ' '+ DataSource11.DataSet['Name']+ ', ' + DataSource11.DataSet['Vorname'];
      Sender.Canvas.TextRect(Rect,Rect.Left+16,Rect.Top+2,MyText);
      Sender.Canvas.DrawFocusRect(Rect);
      Sender.Canvas.Draw(1,1+Rect.Top,bmpImage);
      bgLabel.Color:= Sender.Canvas.Brush.Color;
      bmpImage.Free;
    end
    else begin
      Sender.Canvas.Font.Style:= [];
      Sender.Canvas.FillRect(Rect);
      MyText:= ' '+ DataSource11.DataSet['Name']+ ', ' + DataSource11.DataSet['Vorname'];
      Sender.Canvas.TextRect(Rect,Rect.Left,Rect.Top,MyText);
      bgLabel.Color:= Sender.Canvas.Brush.Color;
    end;
end;
Das Steuerelement siehst Du Links im Bild.
Datenbank-Bild

hoffe es hilft Dir.
mfg, silence
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#9

Re: dbgrid select

  Alt 1. Dez 2005, 14:24
Hai rainer4you,

sei doch bitte so lieb und hänge das Bild als Anhang an deinen Beitrag.
Auch wenn es nur 62 KB gross ist werden es dir alle User die mit einen Modem bzw. ohne eine Flatrate im großen Netz unterwegs sind danken.

Danke
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:39 Uhr.
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