AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TDBGrid am Aktualisieren hindern. OHNE TTabl.DisableControls
Thema durchsuchen
Ansicht
Themen-Optionen

TDBGrid am Aktualisieren hindern. OHNE TTabl.DisableControls

Ein Thema von Thanatos81 · begonnen am 5. Apr 2005 · letzter Beitrag vom 6. Apr 2005
Antwort Antwort
Thanatos81
(Gast)

n/a Beiträge
 
#1

TDBGrid am Aktualisieren hindern. OHNE TTabl.DisableControls

  Alt 5. Apr 2005, 10:19
Hallot DP'ler!

Folgendes Problem: Ich habe zwei TTable-Objekte als Master-Detail-Verknüpfung. Auf meinem MainForm wird die Master in einem TDBGrid angezeigt. In einem anderen Fenster werden die Daten ausgewertet und dafür von BoF bis EoF mit Next durchlaufen.

Nun zeigt mir das TDBGrid natürlich jede Umpositionierung des DS-Zeigers an. Also habe ich das ganze mit Master.DisableControls unterbunden. Problem dabei ist, dass die Zeigeränderung dann anscheinend auch nicht an die Slave-Table mitgeteilt wird. Kann ich mit Prozeduren des TDBGrid die Aktualisierung abschalten? Bei einigen VCL-Kompos gibts ja BeginUpdate und EndUpdate, etwas in der Art habe ich allerdings beim TDBGrid nicht gefunden.

Wäre schön, wenn mir da jemand helfen könnte. Vielen Dank im Voraus,
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#2

Re: TDBGrid am Aktualisieren hindern. OHNE TTabl.DisableCont

  Alt 5. Apr 2005, 10:34
Hab jetzt in der OH die Eigenschaft BlockReadSize gefunden
Zitat von Delphi-OH:
Die Eigenschaft BlockReadSize bestimmt, wie viele Datensatzpuffer in jedem Block gelesen werden.

Delphi-Syntax:

property BlockReadSize: Integer;

C++ Syntax:

__property int BlockReadSize = {read=FBlockReadSize, write=SetBlockReadSize, nodefault};

Beschreibung

Mit BlockReadSize können Sie schnell die gesamte Datenmenge durchsuchen. Wenn BlockReadSize größer als Null ist und Next aufgerufen wird, werden datensensitive Steuerelemente nicht aktualisiert und keine Datenereignisse ausgelöst. Mit dem Wert Null kann der Blockmodus deaktiviert werden. Enthält BlockReadSize einen positiven Wert, wird die Eigenschaft State der Datenmenge automatisch auf dsBlockRead gesetzt.
Allerdings kann ich dieser komischerweise keinen WErt zuweisen, bleibt immer bei 0. Habs mit 1..10 und vielfachem von 1024 (1024,4096) versucht. Hat jemand Erfahrung mit BlockReadSize?
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#3

Re: TDBGrid am Aktualisieren hindern. OHNE TTabl.DisableCont

  Alt 5. Apr 2005, 11:06
Moin, moin,

das ist prinzipiell mit der DBGrid-Komponente ein ein hoffnungsloses Unterfangen Du könntest alledings ein Image darüberlegen und den Canvas des Grids auf den Image.#Canvas kopieren.

Allerdings neige ich dir dazu zu raten für die Maintable ein StringGrid zu nehmen. Da kannst Du die Daten dann einlesen, wann Du willst. Standartmäßig würde man eine Einleseroutine im OnChange-Ereignis der DataSet-Komponente einrichten. AchSo, dann mußt Du aber auch dafür Sorgen, das Änderungen gespecihert werden. Also wieder im OnChange der DataSet Komponente vor dem erneuten einlesen.

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#4

Re: TDBGrid am Aktualisieren hindern. OHNE TTabl.DisableCont

  Alt 5. Apr 2005, 12:24
Hi,

die einfachste Lösung für dein Problem sollte sein, daß du die DBGrid mit einer eigenen TTable-Instanz verbindest, die auf die gleich Tabelle zeigt. Nun kannst du sowohl die Daten als auch die Cursor synchronisieren, wann immer es dir gefällt.

Grüße
Woki
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#5

Re: TDBGrid am Aktualisieren hindern. OHNE TTabl.DisableCont

  Alt 6. Apr 2005, 09:33
Danke für eure Vorschläge! Hab aber jetzt doch ne andere Lösung gewählt. Da das Anzeigen der Daten während der Auswertung unwichtig ist, rufe ich vorher gridsAus und hinterher gridsAn auf:

Delphi-Quellcode:
procedure TMainForm.gridsAus;
begin
  gridMaster.DataSource := nil;
  gridDetail.DataSource := nil;
end;

procedure TMainForm.gridsAn;
begin
  gridMaster.DataSource := dm.dsLabdata;
  gridDetail.DataSource := dm.dsPositionen;
end;
Funktioniert wunderbar. Das Auswertungsformular verdeckt eh das MainForm. Es ging mir also nur um den Zeitverlust, den das Anzeigen der Daten in den DBGrids verursachte.

Das mit den zwei TTables wäre auch ne elegante Lösung (wesentlich eleganter als meine ), aber ich hab mein Datenmodul gerne möglichst übersichtlich...
  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 18:21 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