![]() |
Rückgabe aus Stringgrid
Hiho,
wie kann ich mir ein Rückgabewert liefern lassen welche Zeile in einem Stringgrid markiert wurde (vom Anwender). Hintergrund ist der: der Inhalt einer DB soll in dem Grid angezeigt werden, dann kann in dem Grid eine Zelle markiert werden. Mit anschliessendem Druck auf einen Button soll der Datensatz gelöscht werden... Ich brauche also den Inhalt aus einer Zelle in der markierten Zeile. Es besteht ja die Möglichkeit das irgendeine Zelle in der markierten Zeile geklickt wurde, also brauch ich die gesamte Zeile, dann erst die Zelle. Grüße |
Re: Rückgabe aus Stringgrid
Hallo,
Handelt es sich wirklich um ein TStringGrid oder ein TDBGrid? |
Re: Rückgabe aus Stringgrid
Reagiere doch den CellClick-Event.
|
Re: Rückgabe aus Stringgrid
Hallo,
vielleicht mit MouseToCell die Reihe und Spalte ermitteln.
Delphi-Quellcode:
Grüße
procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var col, row: Integer; begin if button = mbright then begin StringGrid1.MouseToCell(X,Y,col,row); end; end; Klaus |
Re: Rückgabe aus Stringgrid
Zitat:
|
Re: Rückgabe aus Stringgrid
Hab das mit dem stringGrid überlesen und ging von einem DBGrid aus.
Dem Event wird die Spalte übergeben. Die Zeile ist ja der aktive Datensatz. |
Re: Rückgabe aus Stringgrid
Zitat:
StringGrid1.Row und StringGrid1.Col |
Re: Rückgabe aus Stringgrid
danke Leute,
sollte ich vielleicht für dieses Vorhaben etwas anderes wählen als ein Stringgrid? |
Re: Rückgabe aus Stringgrid
Was spricht denn gegen ein DBGrid?
|
Re: Rückgabe aus Stringgrid
eigentlich nichts
ich probiers es aus. Danke |
Re: Rückgabe aus Stringgrid
so, habs ausprobiert.
Bekomme aber keine Werte zurück mittels Selectedrows... um zu sehen ob ausgelesen wird wird es mittels Listbox angezeigt. Quell ist aus der OH.
Delphi-Quellcode:
procedure Tartgruppen.ggridCellClick(Column: TColumn);
var i, j: Integer; s: string; begin if ggrid.SelectedRows.Count>0 then with ggrid.DataSource.DataSet do for i:=0 to ggrid.SelectedRows.Count-1 do begin GotoBookmark(pointer(ggrid.SelectedRows.Items[i])); for j := 0 to FieldCount-1 do begin if (j>0) then s:=s+', '; s:=s+Fields[j].AsString; end; Listbox1.Items.Add(s); s:= ''; end; end; |
Re: Rückgabe aus Stringgrid
Da ein DBGrid ein DataSet visualisiert, würde ich direkt über das DataSet zugreifen
|
Re: Rückgabe aus Stringgrid
Hiho,
das ganze funktioniert einfach nicht. Die Listbox bleibt leer... hier mal der ganze Code, wenn ihr bitte mal drüber guckt:
Delphi-Quellcode:
type
Tartgruppen = class(TForm) gruname: TEdit; gquer: TADOQuery; sPanel1: TsPanel; speichern: TsButton; loesch: TsButton; sLabel1: TsLabel; sLabel2: TsLabel; ggrid: TDBGrid; gsource: TDataSource; upquer: TADOQuery; ListBox1: TListBox; upds: TDataSource; procedure speichernClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure ggridCellClick(Column: TColumn); private { Private-Deklarationen } public { Public-Deklarationen } end; var artgruppen: Tartgruppen; implementation {$R *.dfm} uses haupt,DatenModulUnit; procedure auslesen(const grid:TDBGrid; ugquer:TADOQuery); var xc: Integer; begin grid.Columns[0].Width:=20; grid.Columns[1].Width:=170; ugquer.Close; ugquer.SQL.Clear; ugquer.SQL.Add('SELECT * FROM artgr'); ugquer.Open; end; procedure Tartgruppen.speichernClick(Sender: TObject); begin gquer.Close; gquer.SQL.Clear; gquer.SQL.Add('INSERT INTO artgr (NAME) VALUES ('+QuotedStr(gruname.Text)+')'); gquer.ExecSQL; auslesen(ggrid,upquer); gruname.SetFocus; gruname.Text:=''; end; procedure Tartgruppen.FormActivate(Sender: TObject); begin auslesen(ggrid,upquer); end; procedure Tartgruppen.ggridCellClick(Column: TColumn); var i, j: Integer; s: string; begin if ggrid.SelectedRows.Count>0 then with ggrid.DataSource.DataSet do //with ggrid1.DataSource.DataSet do for i:=0 to ggrid.SelectedRows.Count-1 do begin GotoBookmark(pointer(ggrid.SelectedRows.Items[i])); for j := 0 to FieldCount-1 do begin if (j>0) then s:=s+', '; s:=s+Fields[j].AsString; end; Listbox1.Items.Add(s); s:= ''; end; end; |
Re: Rückgabe aus Stringgrid
Hai Privateer3000,
wie mkinzler schon sagte würde ich nicht über das TDBGrid arbeiten. Den Spaltenwechsel bekommst Du im OnAfterScroll des DataSet. Dort würde ich dann die Listbox füllen. |
Re: Rückgabe aus Stringgrid
Hai
ich will keine Listbox füllen, die ist nur zur kontrolle da. Im Endeffekt soll der Datensatz gelöscht werden der im DBGrid markiert wurde. |
Re: Rückgabe aus Stringgrid
Zitat:
Delphi-Quellcode:
machen.
begin
query.delete; end; |
Re: Rückgabe aus Stringgrid
Danke,
welche komponenten sind dafür nötig? zu dem DBGrid gehören im Moment ein Datasource und ein ADOQuery und wie müssen die konfiguriert werden. Grüße |
Re: Rückgabe aus Stringgrid
um ihn zur Kontrolle auch anzuzeigen hab ich das versucht:
Delphi-Quellcode:
das funktioniert nicht.
procedure Tartgruppen.ggridCellClick(Column: TColumn);
begin if ggrid.SelectedRows.Count>0 then gruname.Text:=gquer.Fields[1].Value; end; Das mit dem löschen klappt aber! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:09 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