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/)
-   -   Delphi DBGrid auf anderen Datasource setzen per ButtonClick, zur LZ (https://www.delphipraxis.net/14659-dbgrid-auf-anderen-datasource-setzen-per-buttonclick-zur-lz.html)

LuckyStrike4life 13. Jan 2004 15:06


DBGrid auf anderen Datasource setzen per ButtonClick, zur LZ
 
Morgen,

zur Laufzeit muss sich ein DBGrid umstellen lassen. D.h. es sollte, wenn eine bestimmte Bedingung erfüllt ist, mit einen anderen Datasource verbunden werden. So, dass umgehend die anderen Daten (der Tabelle, bzw. das Ergebnis des Querys, welche hinter dem jeweiligen Datasource liegt) ausgegeben werden.

Ich hoffe sowas funktioniert überhaupt, wäre schon relevant - denn leider gelingt es mir nicht, ein weiteres Grid über das bestehende zu legen.

Dann wäre es ja einfach, ich setz das zweite auf Visible := False, und später auf True wenns denn sein soll. Funktioniert aber nicht, da der eigentliche Grid unten am Form liegt, (alBottom) - ein weiteres Grid läßt sich nicht mit alBottom drüberlegen.

Gibts ne Möglichkeit für meine Lösung mit dem (sogesehen) ButtonClick und umstellen des Datasource?

Leuselator 13. Jan 2004 15:22

Re: DBGrid auf anderen Datasource setzen per ButtonClick, zu
 
wenn Du dem DBGrid nicht zur Entwurfszeit (durch Doppelclick und anschliessende Bearbeitung in dem sich öffnenden Fenster) persistente Spalten hinzugefügt hast, dann ja:
Delphi-Quellcode:
// 2 Datasources dscErsteQuery und dscZweiteQuery sowie Button1 und Button2 müssen existieren
Form1.ButtonClick(Sender : TObject)
begin
  if (Sender is TButton) then begin
    if TButton(Sender) = Button1 then DeinDBGrid.DataSource := dscErsteDataSource;
    if TButton(Sender) = Button2 then DeinDBGrid.DataSource := dscZweiteDataSource;
  end;
end;
Gruß

fkerber 13. Jan 2004 15:27

Re: DBGrid auf anderen Datasource setzen per ButtonClick, zu
 
Hi!

Andere Möglichkeit, wenn diese Methode nicht geht.
Beide auf dem Form platzieren und dann eins invisible machen und dann erst beim Visible, denn align auf albottom setzen.

Ciao fkerber

LuckyStrike4life 13. Jan 2004 15:35

Re: DBGrid auf anderen Datasource setzen per ButtonClick, zu
 
Zitat:

Zitat von Leuselator
wenn Du dem DBGrid nicht zur Entwurfszeit (durch Doppelclick und anschliessende Bearbeitung in dem sich öffnenden Fenster) persistente Spalten hinzugefügt hast, dann ja:
Delphi-Quellcode:
// 2 Datasources dscErsteQuery und dscZweiteQuery sowie Button1 und Button2 müssen existieren
Form1.ButtonClick(Sender : TObject)
begin
  if (Sender is TButton) then begin
    if TButton(Sender) = Button1 then DeinDBGrid.DataSource := dscErsteDataSource;
    if TButton(Sender) = Button2 then DeinDBGrid.DataSource := dscZweiteDataSource;
  end;
end;
Gruß

Leuselator, vielen Dank!
Das hat geklappt.

@fkerber
Deine Lösung wäre auch eine Möglichkeit,
so weit hatte ich wieder gar nicht gedacht ;), aber da die Lösung von Leuselator funktioniert, nehm ich die.
Auch dir, Danke.

Leuselator 13. Jan 2004 22:53

Re: DBGrid auf anderen Datasource setzen per ButtonClick, zu
 
@fkerber: Deine Lösung tut es zwar, aber sie verschwendet Resourcen!

@Thema: Auch permanente Spalteneinträge lassen sich dynamisch erstellen, mann müßte nur die "Kühlschrank auf, Kuh Raus, Elefant rein, Kühlschrank zu"-Regel beachten:
erst alle existenten permanenten Spalten löschen, dann DataSource wechseln, dann neue Spalten erzeugen...


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