AGB  ·  Datenschutz  ·  Impressum  







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

DBGrid "einfrieren"

Ein Thema von haentschman · begonnen am 23. Nov 2008 · letzter Beitrag vom 23. Nov 2008
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#1

DBGrid "einfrieren"

  Alt 23. Nov 2008, 12:40
Datenbank: firebird • Version: 2.0 • Zugriff über: zeos
Hallo alle...

ich suche jetzt schon eine Weile und finde es nicht

Problem:
- in ein DBGrid werden Werte eingetragen.
- bei Veränderung wird eine ComboBox geleert und mit den neuen Daten gefüllt.
- dazu muß ich alle Datensätze durchlaufen
- mich stört einfach, daß der Balken mit dem aktuellen Datesatz mitläuft.
- ich hätte gern das Grid "eingefroren" und nach der Aktualisierung der ComboBox wieder freigegeben.

Ich weis, daß es da eine einfache Möglichkeit gibt, aber ich komme nicht drauf

Danke für Infos in die Richtung...
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
375 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: DBGrid "einfrieren"

  Alt 23. Nov 2008, 12:45
Hallo haentschmann,

meinst Du DisableControls der Datenbankkomponenten (weiß nicht ob zeos sowas hat ?) ?

mfg CG
Andreas Schachtner
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#3

Re: DBGrid "einfrieren"

  Alt 23. Nov 2008, 12:56
Danke für die schnelle Reaktion.

...leider führt mich Query.DisableControls nicht zum Ziel...die Datenmenge in der Query ist dann nicht mehr die gleiche


PS: im Prinzip ist das genau das was ich suchte, ich muß nur noch herausfinden, warum meine Datenmenge in der Durchlaufschleife immer nur einen Datensatz enthällt.
  Mit Zitat antworten Zitat
Benutzerbild von Berserker
Berserker

Registriert seit: 15. Dez 2002
Ort: Chemnitz
164 Beiträge
 
Delphi 6 Professional
 
#4

Re: DBGrid "einfrieren"

  Alt 23. Nov 2008, 13:00
Hallo.

Mach doch einfach eine zweite Datenquelle auf.
Damit wird die erste nicht angetastet und dein DBGrid bleibt wie es ist.

MfG, Ronny
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: DBGrid "einfrieren"

  Alt 23. Nov 2008, 14:23
Du hast das Konzept der Datenmengen (TDataset-Abkömmlinge) vielleicht nicht richtig verstanden.

Ein TDataset enthält die geladenen Daten in Tabellenform und verwaltet einen Datensatzzeiger, sodaß beim Zugriff auf die Felder die daten jeweils einer Zeile ausgelesen werden. Mit First/Next/Prior/Last kann man den Datensatzzeiger bewegen. Mit Get/GotoBookmark kann man sich die Position des Datensatzzeigers merken und später wieder dort hinspringen.

Eine Routine, die unsichtbar durch eine Datenmenge iteriert, und den Datensatzzeiger hinterher wieder dort plaziert, wo er vorher war, sieht so aus:
Delphi-Quellcode:
...
Var
  B : TBookmark;

Begin
  B := MyDataSet.GetBookmark;
  MyDataset.DisableControls;
  Try
    MyDataset.First;
    While Not MyDataset.Eof do Begin
      // Mach was mit MyDataset
      MyDataset.Next,
    End
  Finally
    MyDataset.GotoBookmark(B);
    MyDataset.FreeBookmark(N);
    MyDataset.EnableControls;
  End
End;
Damit solltest Du die gewünschte Funktionalität abbilden können.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#6

Re: DBGrid "einfrieren"

  Alt 23. Nov 2008, 15:00
Hallo alzaimar,
Zitat:
Du hast das Konzept der Datenmengen (TDataset-Abkömmlinge) vielleicht nicht richtig verstanden.
...ich denke nach 3 Jahren Arbeit mit Datenbanken sollte man schon wissen was ein Datensatzzeiger ist und wie Tabellen oder Querys arbeiten

- das mit den Bookmarks ist schon klar aber es ging mir weniger um die Positionierung auf den alten Datensatz.

DisableControls / EnableControls war das was ich suchte. Ich hatte nur an der falschen Stelle nach dieser Funktionalität gesucht.
Funktioniert auch so wie es sein soll.
Meine Update Routine hatte ich im AfterPost der Query. Da aber auch beim Versetzen in den EditMode AfterPost aufgerufen wird , ergab das mit dem DisableControls ein wenig komische Effekte. Das habe ich aber nun auch im Griff.

Trotzdem Danke...
  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 23:58 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