Delphi-PRAXiS

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/)
-   -   Inh. vom DBGrid in einem TLabel kopieren. (https://www.delphipraxis.net/164579-inh-vom-dbgrid-einem-tlabel-kopieren.html)

smart 19. Nov 2011 11:53

Inh. vom DBGrid in einem TLabel kopieren.
 
Hallo , brauche mal Eure Hilfe.
Habe auf einer Form ein DBGrid und Label. DBGrid ist mit Daten gefüllt.Wenn ich auf eine Celle vom DBGrid klicke möchte ich das der Inhalt in dem Label erscheind. Wie macht man sowas.

mkinzler 19. Nov 2011 11:56

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
Am einfachstn ein DBLabel verwenden, welches man mit dem entsprechenden Feld verbindet

DeddyH 19. Nov 2011 12:21

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
Und wenn es unbedingt ein Label sein muss, dann nicht auf das DBGrid, sondern auf das zugrundeliegende Dataset zugreifen.

smart 19. Nov 2011 12:56

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
Zitat:

Zitat von DeddyH (Beitrag 1136988)
Und wenn es unbedingt ein Label sein muss, dann nicht auf das DBGrid, sondern auf das zugrundeliegende Dataset zugreifen.

ja, aber ich möchte beim klick auf DBGrid den entsprechenden Inhalt haben.

Sir Rufo 19. Nov 2011 13:16

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
Zitat:

Zitat von smart (Beitrag 1136991)
Zitat:

Zitat von DeddyH (Beitrag 1136988)
Und wenn es unbedingt ein Label sein muss, dann nicht auf das DBGrid, sondern auf das zugrundeliegende Dataset zugreifen.

ja, aber ich möchte beim klick auf DBGrid den entsprechenden Inhalt haben.

Und wo bekommt das DBGrid seinen Inhalt her? ;)

Beim Klick auf das DBGrid ermittelst du einfach nur über die Spalte das Datenbank-Feld und übergibst DataSource und Field an das DBLabel. Und schwups ist der Text im Label

smart 19. Nov 2011 14:47

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
was ist hier falsch
Delphi-Quellcode:
Label1.Caption := DBGrid1.Columns.Items[0].DisplayName;
<br>
ich bekomme nicht den Name wo drauf ich klicke?

DeddyH 19. Nov 2011 15:03

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
Nochmal: nicht das DBGrid abfragen, sondern die Datenmenge.
Delphi-Quellcode:
Label1.Caption := DBGrid1.Datasource.Dataset.Fields[0].AsString;
Wobei das so nur eine Krücke ist, Du solltest das zugewiesene Dataset (Query oder Table) direkt abfragen.

Bummi 19. Nov 2011 15:27

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
oder gleich so
Delphi-Quellcode:
  if DBgrid1.SelectedIndex > -1 then
     DBText1.DataField := DBGrid1.Columns[DBgrid1.SelectedIndex].Field.FieldName
  else DBText1.DataField := '';

smart 19. Nov 2011 15:46

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
Ok, jetzt habe ich es kapiert. vielen Dank an Euch.

smart 21. Nov 2011 06:30

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
Komisch, wenn ich es so mache
Delphi-Quellcode:
  if DBgrid1.SelectedIndex > -1 then
      DBText1.DataField := DBGrid1.Columns[DBgrid1.SelectedIndex].Field.FieldName
   else DBText1.DataField := '';
dann kommt beim nächsten Zugriff auf dem DBGrid eine Fehlermeldung.

Bummi 21. Nov 2011 06:35

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
was für eine Meldung bekommst Du denn?

smart 21. Nov 2011 06:55

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
Zitat:

Zitat von Bummi (Beitrag 1137147)
was für eine Meldung bekommst Du denn?

beim nächsten klick auf dem DBGrid kommt die Meldung:
Feld wurde nicht gefunden!

Bummi 21. Nov 2011 07:01

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
kann ich mir jetzt nur erklären wenn Du im Grid z.B. per Doppelklick Spalten hinzugefügt hast die kein Feld enthalten, oder wenn DBText an einer anderen Datasoure als das Grid hängt ....

Bebe 21. Nov 2011 08:00

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
[erste Antwort gelöscht]

Du mußt nur das Event OnCellClick verwenden. Das Ergebnis der Zelle wird in ein Label geschrieben.

Delphi-Quellcode:
procedure TForm6.DBGrid1CellClick(Column: TColumn);
begin
   lblField.Caption := DBGrid1.Columns[Column.Index].Field.Value;
end;
Sorry für die falsche Antwort.

Gruß
Matze

smart 25. Nov 2011 15:05

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
Ich habe es jetzt so versuch
Delphi-Quellcode:
Label1.Caption := Table1.Fields.Fields[Column.Index].AsString;
Klappt auch und es werden sogar leere Felder übergeben.

Sir Rufo 25. Nov 2011 16:59

AW: Inh. vom DBGrid in einem TLabel kopieren.
 
Also ganz korrekt und immer funktionierend würde es so gehen:
Delphi-Quellcode:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  if Assigned( Column ) and Assigned( Column.Field ) then
    Label1.Caption := Column.Field.AsString
  else
    Label1.Caption := '';
end;
Hierbei ist es egal, welche DataSource an dem DBGrid hängt, und in welcher Reihenfolge die Felder in dem DBGrid angezeigt werden. Es wird das Feld genommen, was tatsächlich zu der gewählten Zelle gehört ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 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